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;

    // Provided by VK_KHR_dedicated_allocation
    // Equivalent to VkMemoryDedicatedRequirements
    typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;

## Members

- `sType` is a VkStructureType value identifying 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 or tensor resource, add a VkMemoryDedicatedRequirements structure to the `pNext` chain of the VkMemoryRequirements2 structure passed as the `pMemoryRequirements` parameter of vkGetBufferMemoryRequirements2, vkGetTensorMemoryRequirementsARM, vkGetDeviceBufferMemoryRequirements, vkGetDeviceImageMemoryRequirements, 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.

Constraints on the values returned for tensor resources are:

- `requiresDedicatedAllocation` may be VK_TRUE if the `pNext` chain of VkTensorCreateInfoARM for the call to `vkCreateTensorARM` used to create the tensor being queried included a VkExternalMemoryTensorCreateInfoARM structure, and any of the handle types specified in VkExternalMemoryTensorCreateInfoARM::`handleTypes` requires dedicated allocation, as reported by vkGetPhysicalDeviceExternalTensorPropertiesARM in `VkExternalTensorPropertiesARM`::`externalMemoryProperties.externalMemoryFeatures`.

- `requiresDedicatedAllocation` will otherwise be VK_FALSE.

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

Valid Usage (Implicit)

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

## See Also

VK_KHR_dedicated_allocation, 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-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0