VkPhysicalDeviceDescriptorHeapPropertiesEXT(3)

# VkPhysicalDeviceDescriptorHeapPropertiesEXT(3) Manual Page

## Name

VkPhysicalDeviceDescriptorHeapPropertiesEXT - Structure describing supported image alignments for a physical device

## C Specification

The `VkPhysicalDeviceDescriptorHeapPropertiesEXT` structure is defined as:

    // Provided by VK_EXT_descriptor_heap
    typedef struct VkPhysicalDeviceDescriptorHeapPropertiesEXT {
        VkStructureType    sType;
        void*              pNext;
        VkDeviceSize       samplerHeapAlignment;
        VkDeviceSize       resourceHeapAlignment;
        VkDeviceSize       maxSamplerHeapSize;
        VkDeviceSize       maxResourceHeapSize;
        VkDeviceSize       minSamplerHeapReservedRange;
        VkDeviceSize       minSamplerHeapReservedRangeWithEmbedded;
        VkDeviceSize       minResourceHeapReservedRange;
        VkDeviceSize       samplerDescriptorSize;
        VkDeviceSize       imageDescriptorSize;
        VkDeviceSize       bufferDescriptorSize;
        VkDeviceSize       samplerDescriptorAlignment;
        VkDeviceSize       imageDescriptorAlignment;
        VkDeviceSize       bufferDescriptorAlignment;
        VkDeviceSize       maxPushDataSize;
        size_t             imageCaptureReplayOpaqueDataSize;
        uint32_t           maxDescriptorHeapEmbeddedSamplers;
        uint32_t           samplerYcbcrConversionCount;
        VkBool32           sparseDescriptorHeaps;
        VkBool32           protectedDescriptorHeaps;
    } VkPhysicalDeviceDescriptorHeapPropertiesEXT;

## Members

- `sType` is a VkStructureType value identifying this structure.

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

- `samplerHeapAlignment` specifies the required alignment of the `heapRange->address` member of VkBindHeapInfoEXT for binding sampler heaps. It must be a power-of-two value.

- `resourceHeapAlignment` specifies the required alignment of the `heapRange->address` member of VkBindHeapInfoEXT for binding resource heaps. It must be a power-of-two value.

- `maxSamplerHeapSize` describes maximum value of the `size` member of VkDeviceAddressRangeKHR for binding sampler heaps, including the reservation, when embedded samplers are used.

- `maxResourceHeapSize` describes maximum value of the `size` member of VkDeviceAddressRangeKHR for binding resource heaps, including the reservation.

- `minSamplerHeapReservedRange` specifies the minimum amount of data that the implementation needs to be reserved within the bound sampler heap range when embedded samplers are not used.

- `minSamplerHeapReservedRangeWithEmbedded` specifies the minimum amount of data that the implementation needs to be reserved within the bound sampler heap range when embedded samplers are used.

- `minResourceHeapReservedRange` specifies the minimum amount of data that the implementation needs to be reserved within the bound resource heap range.

- `samplerDescriptorSize` specifies the size of sampler descriptors written by vkWriteSamplerDescriptorsEXT. It must be a power-of-two value.

- `imageDescriptorSize` specifies the maximum size of image and texel buffer descriptors written by vkWriteResourceDescriptorsEXT. It must be a power-of-two value.

- `bufferDescriptorSize` specifies the maximum size of unformatted buffer descriptors or acceleration structures written by vkWriteResourceDescriptorsEXT. It must be a power-of-two value.

- `samplerDescriptorAlignment` specifies the required alignment of sampler descriptors within a sampler heap. It must be a power-of-two value, and less than or equal to `samplerDescriptorSize`.

- `imageDescriptorAlignment` specifies the required alignment of image descriptors within a resource heap. It must be a power-of-two value, and less than or equal to `imageDescriptorSize`.

- `bufferDescriptorAlignment` specifies the required alignment of unformatted buffer descriptors or acceleration structures within a resource heap. It must be a power-of-two value, and less than or equal to `bufferDescriptorSize`.

- `maxPushDataSize` specifies the maximum total size of all push data. It must be greater than or equal to maxPushConstantsSize

- `imageCaptureReplayOpaqueDataSize` specifies the size of the opaque capture/replay data for an image.

- `maxDescriptorHeapEmbeddedSamplers` specifies the maximum number of unique embedded samplers across all pipelines.

- `samplerYcbcrConversionCount` specifies the number of sampler descriptors required for any sampler using YCBCR conversion.

- `sparseDescriptorHeaps` specifies whether descriptor heaps can be backed by sparse memory or not. If this value is VK_FALSE, buffers cannot be specified as both sparse and having descriptor heap usage.

- `protectedDescriptorHeaps` specifies whether descriptor heaps can be used with protected submissions or not. If this value is `VK_FALSE`, buffers cannot be specified as both protected and having descriptor heap usage.

## Description

If the `VkPhysicalDeviceDescriptorHeapPropertiesEXT` structure is included in the `pNext` chain of the VkPhysicalDeviceProperties2 structure passed to vkGetPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Valid Usage (Implicit)

- VUID-VkPhysicalDeviceDescriptorHeapPropertiesEXT-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT

Structure Chaining

Extends the structure

  - VkPhysicalDeviceProperties2

## See Also

VK_EXT_descriptor_heap, VkBool32, VkDeviceSize, 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