VkMemoryDedicatedRequirements(3)

# VkMemoryDedicatedRequirements(3) Manual Page

## Name

VkMemoryDedicatedRequirements - Structure describing dedicated allocation requirements of buffer and image resources

Loading… please wait.

## C Specification

The `VkMemoryDedicatedRequirements` structure is defined as:

    // Provided by VK_VERSION_1_1
    typedef struct VkMemoryDedicatedRequirements {
        VkStructureType    sType;
        void*              pNext;
        VkBool32           prefersDedicatedAllocation;
        VkBool32           requiresDedicatedAllocation;
    } VkMemoryDedicatedRequirements;

or the equivalent

    // Provided by VK_KHR_dedicated_allocation
    typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `prefersDedicatedAllocation` specifies that the implementation would prefer a dedicated allocation for this resource. The application is still free to suballocate the resource but it may get better performance if a dedicated allocation is used.

- `requiresDedicatedAllocation` specifies that a dedicated allocation is required for this resource.

## Description

To determine the dedicated allocation requirements of a buffer or image resource, add a VkMemoryDedicatedRequirements structure to the `pNext` chain of the VkMemoryRequirements2 structure passed as the `pMemoryRequirements` parameter of vkGetBufferMemoryRequirements2 or vkGetImageMemoryRequirements2, respectively.

Constraints on the values returned for buffer resources are:

- `requiresDedicatedAllocation` may be `VK_TRUE` if the `pNext` chain of VkBufferCreateInfo for the call to `vkCreateBuffer` used to create the buffer being queried included a VkExternalMemoryBufferCreateInfo structure, and any of the handle types specified in VkExternalMemoryBufferCreateInfo::`handleTypes` requires dedicated allocation, as reported by vkGetPhysicalDeviceExternalBufferProperties in `VkExternalBufferProperties`::`externalMemoryProperties.externalMemoryFeatures`. Otherwise, `requiresDedicatedAllocation` will be `VK_FALSE`.

- When the implementation sets `requiresDedicatedAllocation` to `VK_TRUE`, it must also set `prefersDedicatedAllocation` to `VK_TRUE`.

- If `VK_BUFFER_CREATE_SPARSE_BINDING_BIT` was set in VkBufferCreateInfo::`flags` when `buffer` was created, then both `prefersDedicatedAllocation` and `requiresDedicatedAllocation` will be `VK_FALSE`.

Constraints on the values returned for image resources are:

- `requiresDedicatedAllocation` may be `VK_TRUE` if the `pNext` chain of VkImageCreateInfo for the call to vkCreateImage used to create the image being queried included a VkExternalMemoryImageCreateInfo structure, and any of the handle types specified in VkExternalMemoryImageCreateInfo::`handleTypes` requires dedicated allocation, as reported by vkGetPhysicalDeviceImageFormatProperties2 in `VkExternalImageFormatProperties`::`externalMemoryProperties.externalMemoryFeatures`.

- `requiresDedicatedAllocation` may be `VK_TRUE` if the image’s tiling is `VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT`.

- `requiresDedicatedAllocation` will otherwise be `VK_FALSE`

- If `VK_IMAGE_CREATE_SPARSE_BINDING_BIT` was set in VkImageCreateInfo::`flags` when `image` was created, then both `prefersDedicatedAllocation` and `requiresDedicatedAllocation` will be `VK_FALSE`.

Valid Usage (Implicit)

- VUID-VkMemoryDedicatedRequirements-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS`

## See Also

VK_VERSION_1_1, `VkBool32`, VkStructureType

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2022 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0