# VkDescriptorDataEXT(3) Manual Page

## Name

VkDescriptorDataEXT - Structure specifying descriptor data

Loading… please wait.

## C Specification

Data describing the descriptor is passed in a `VkDescriptorDataEXT` structure:

    // Provided by VK_EXT_descriptor_buffer
    typedef union VkDescriptorDataEXT {
        const VkSampler*                     pSampler;
        const VkDescriptorImageInfo*         pCombinedImageSampler;
        const VkDescriptorImageInfo*         pInputAttachmentImage;
        const VkDescriptorImageInfo*         pSampledImage;
        const VkDescriptorImageInfo*         pStorageImage;
        const VkDescriptorAddressInfoEXT*    pUniformTexelBuffer;
        const VkDescriptorAddressInfoEXT*    pStorageTexelBuffer;
        const VkDescriptorAddressInfoEXT*    pUniformBuffer;
        const VkDescriptorAddressInfoEXT*    pStorageBuffer;
        VkDeviceAddress                      accelerationStructure;
    } VkDescriptorDataEXT;

## Members

- `pSampler` is a pointer to a VkSampler handle specifying the parameters of a `VK_DESCRIPTOR_TYPE_SAMPLER` descriptor.

- `pCombinedImageSampler` is a pointer to a VkDescriptorImageInfo structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER` descriptor.

- `pInputAttachmentImage` is a pointer to a VkDescriptorImageInfo structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT` descriptor.

- `pSampledImage` is a pointer to a VkDescriptorImageInfo structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE` descriptor.

- `pStorageImage` is a pointer to a VkDescriptorImageInfo structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_STORAGE_IMAGE` descriptor.

- `pUniformTexelBuffer` is a pointer to a VkDescriptorAddressInfoEXT structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER` descriptor.

- `pStorageTexelBuffer` is a pointer to a VkDescriptorAddressInfoEXT structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER` descriptor.

- `pUniformBuffer` is a pointer to a VkDescriptorAddressInfoEXT structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER` descriptor.

- `pStorageBuffer` is a pointer to a VkDescriptorAddressInfoEXT structure specifying the parameters of a `VK_DESCRIPTOR_TYPE_STORAGE_BUFFER` descriptor.

- `accelerationStructure` is the address of a VkAccelerationStructureKHR specifying the parameters of a `VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR` descriptor , or a VkAccelerationStructureNV handle specifying the parameters of a `VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV` descriptor.

## Description

If the `nullDescriptor` feature is enabled, `pSampledImage`, `pStorageImage`, `pUniformTexelBuffer`, `pStorageTexelBuffer`, `pUniformBuffer`, and `pStorageBuffer` can each be `NULL`. Loads from a null descriptor return zero values and stores and atomics to a null descriptor are discarded.

If the `nullDescriptor` feature is enabled, `accelerationStructure` can be `0`. A null acceleration structure descriptor results in the miss shader being invoked.

Valid Usage

- VUID-VkDescriptorDataEXT-type-08030
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER`, and `pUniformBuffer->address` is the address of a non-sparse buffer, then that buffer must be bound completely and contiguously to a single `VkDeviceMemory` object

- VUID-VkDescriptorDataEXT-type-08031
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_STORAGE_BUFFER`, and `pStorageBuffer->address` is the address of a non-sparse buffer, then that buffer must be bound completely and contiguously to a single `VkDeviceMemory` object

- VUID-VkDescriptorDataEXT-type-08032
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER`, and `pUniformTexelBuffer->address` is the address of a non-sparse buffer, then that buffer must be bound completely and contiguously to a single `VkDeviceMemory` object

- VUID-VkDescriptorDataEXT-type-08033
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER`, and `pStorageTexelBuffer->address` is the address of a non-sparse buffer, then that buffer must be bound completely and contiguously to a single `VkDeviceMemory` object

- VUID-VkDescriptorDataEXT-type-08034
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER`, and the `nullDescriptor` feature is not enabled, `pCombinedImageSampler->imageView` must not be VK_NULL_HANDLE

- VUID-VkDescriptorDataEXT-type-08035
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE`, and the `nullDescriptor` feature is not enabled, `pSampledImage` must not be `NULL` and `pSampledImage->imageView` must not be VK_NULL_HANDLE

- VUID-VkDescriptorDataEXT-type-08036
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_STORAGE_IMAGE`, and the `nullDescriptor` feature is not enabled, `pStorageImage` must not be `NULL` and `pStorageImage->imageView` must not be VK_NULL_HANDLE

- VUID-VkDescriptorDataEXT-type-08037
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER`, and the `nullDescriptor` feature is not enabled, `pUniformTexelBuffer` must not be `NULL`

- VUID-VkDescriptorDataEXT-type-08038
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER`, and the `nullDescriptor` feature is not enabled, `pStorageTexelBuffer` must not be `NULL`

- VUID-VkDescriptorDataEXT-type-08039
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER`, and the `nullDescriptor` feature is not enabled, `pUniformBuffer` must not be `NULL`

- VUID-VkDescriptorDataEXT-type-08040
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_STORAGE_BUFFER`, and the `nullDescriptor` feature is not enabled, `pStorageBuffer` must not be `NULL`

- VUID-VkDescriptorDataEXT-type-08041
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR`, and the `nullDescriptor` feature is not enabled, `accelerationStructure` must not be `0`

- VUID-VkDescriptorDataEXT-type-08042
  If VkDescriptorGetInfoEXT:`type` is `VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV`, and the `nullDescriptor` feature is not enabled, `accelerationStructure` must not be `0`

## See Also

VK_EXT_descriptor_buffer, VkDescriptorAddressInfoEXT, VkDescriptorGetInfoEXT, VkDescriptorImageInfo, VkDeviceAddress, VkSampler

## 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-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0