VkResourceDescriptorInfoEXT
VkResourceDescriptorInfoEXT is defined as:
typedef struct VkResourceDescriptorInfoEXT {
VkStructureType sType;
const void* pNext;
VkDescriptorType type;
VkResourceDescriptorDataEXT data;
} VkResourceDescriptorInfoEXT;
pub struct ResourceDescriptorInfoEXT {
s_type: vk::StructureType,
p_next: *const c_void,
type: vk::DescriptorType,
data: vk::ResourceDescriptorDataEXT,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.typeis the type of descriptor to get.datais a VkResourceDescriptorDataEXT union defining the properties of a resource descriptor according totype
If type is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, data→pTexelBuffer is
used to construct the descriptor.
If type is
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, data→pAddressRange is used
to construct the descriptor.
For acceleration structures, the size of the range is not used by the
descriptor, and can be set to 0.
If a non-zero size is provided though, it must be a valid range.
If type is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, data→pImage is used to
construct the descriptor.
If type is VK_DESCRIPTOR_TYPE_TENSOR_ARM, data→pTensorARM
is used to construct the descriptor.
If the nullDescriptor feature is enabled,
the corresponding element of data may be NULL to generate a null
descriptor.
Applications can give resource descriptors a debug name in a similar way to
naming an object, via the VkDebugUtilsObjectNameInfoEXT structure.
However, as there is no actual object, this structure must be passed via
the pNext chain of this structure, with a objectType of
VK_OBJECT_TYPE_UNKNOWN and a objectHandle of
VK_NULL_HANDLE.
The name is attached to the unique set of descriptor bits written by the
implementation, and writing the same bits again with new debug info may
rename the original descriptor.
If a descriptor becomes invalid due to the underlying resource becoming invalid, implementations may remove the name association.
Valid Usage
VUID-VkResourceDescriptorInfoEXT-type-11210
type must be one of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV,
VK_DESCRIPTOR_TYPE_TENSOR_ARM,
or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
VUID-VkResourceDescriptorInfoEXT-None-11211
If
the nullDescriptor feature is not
enabled, and
type is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, data→pImage must not be
NULL
VUID-VkResourceDescriptorInfoEXT-type-11469
If type is
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, or
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, data→pImage must not
be NULL
VUID-VkResourceDescriptorInfoEXT-None-11212
If
the nullDescriptor feature is not
enabled, and
type is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, data→pTexelBuffermust not be NULL
VUID-VkResourceDescriptorInfoEXT-None-11213
If
the nullDescriptor feature is not
enabled, and
type is
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV,
VK_DESCRIPTOR_TYPE_TENSOR_ARM,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, data→pAddressRange must
not be NULL
VUID-VkResourceDescriptorInfoEXT-None-11457
If
the nullDescriptor feature is not
enabled, and
type is VK_DESCRIPTOR_TYPE_TENSOR_ARM,
data→pTensorARM must not be NULL
VUID-VkResourceDescriptorInfoEXT-type-12349
If type is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
data→pTexelBuffer→addressRange.address must be a multiple of
the effective alignment requirement of data→pTexelBuffer→format
as determined by
minTexelBufferOffsetAlignment
VUID-VkResourceDescriptorInfoEXT-type-12350
If type is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
data→pAddressRange→address must be a multiple of
minUniformBufferOffsetAlignment
VUID-VkResourceDescriptorInfoEXT-type-12351
If type is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
data→pAddressRange→address must be a multiple of
minStorageBufferOffsetAlignment
VUID-VkResourceDescriptorInfoEXT-type-11454
If type is one of
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHRVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NVVK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV
data→pAddressRange→address must be a multiple of 256
VUID-VkResourceDescriptorInfoEXT-pNext-11401
If there is a VkDebugUtilsObjectNameInfoEXT structure in the
pNext chain, its objectType must be
VK_OBJECT_TYPE_UNKNOWN
VUID-VkResourceDescriptorInfoEXT-type-11422
If type is
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, or
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
data.pImage→pView→image must not have been created with an
imageType of VK_IMAGE_TYPE_3D
VUID-VkResourceDescriptorInfoEXT-type-11424
If type is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
data.pImage→pView→viewType is VK_IMAGE_VIEW_TYPE_2D, and
the image2DViewOf3D feature is not
enabled, data.pImage→pView→image must not have been created
with an imageType of VK_IMAGE_TYPE_3D
VUID-VkResourceDescriptorInfoEXT-type-11425
If type is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
data.pImage→pView→viewType is VK_IMAGE_VIEW_TYPE_2D, and
the sampler2DViewOf3D feature is
not enabled, data.pImage→pView→image must not have been created
with an imageType of VK_IMAGE_TYPE_3D
VUID-VkResourceDescriptorInfoEXT-type-11433
If type is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, data.pAddressRange→sizemust not be 0
VUID-VkResourceDescriptorInfoEXT-type-11458
If type is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE and
data.pImage is not NULL, data.pImage→pView→image must
have been created with the VK_IMAGE_USAGE_SAMPLED_BIT usage flag
set
VUID-VkResourceDescriptorInfoEXT-type-11459
If type is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE and
data.pImage is not NULL, data.pImage→pView→image must
have been created with the VK_IMAGE_USAGE_STORAGE_BIT usage flag
set
VUID-VkResourceDescriptorInfoEXT-type-11460
If type is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT and
data.pImage is not NULL, data.pImage→pView→image must
have been created with the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
usage flag set
VUID-VkResourceDescriptorInfoEXT-type-11461
If type is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER and
data.pAddressRange is not NULL, data.pAddressRange must
be a device address range allocated to the application from a buffer
created with the VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT usage flag set
VUID-VkResourceDescriptorInfoEXT-type-11462
If type is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER and
data.pAddressRange is not NULL, data.pAddressRange must
be a device address range allocated to the application from a buffer
created with the VK_BUFFER_USAGE_STORAGE_BUFFER_BIT usage flag set
VUID-VkResourceDescriptorInfoEXT-type-11463
If type is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER and
data.pTexelBuffer is not NULL,
data.pTexelBuffer→addressRange must be a device address range
allocated to the application from a buffer created with the
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT usage flag set
VUID-VkResourceDescriptorInfoEXT-type-11464
If type is VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER and
data.pTexelBuffer is not NULL,
data.pTexelBuffer→addressRange must be a device address range
allocated to the application from a buffer created with the
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT usage flag set
VUID-VkResourceDescriptorInfoEXT-type-11483
If type is
VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV or
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, and
data.pAddressRange is not NULL,
data.pAddressRange→address must be an acceleration structure
address retrieved from a VkAccelerationStructureKHR object via
vkGetAccelerationStructureDeviceAddressKHR
VUID-VkResourceDescriptorInfoEXT-type-11484
If type is
VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV or
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
data.pAddressRange is not NULL, and
data.pAddressRange→size is not 0, data.pAddressRange must
be a device address range allocated to the application from the buffer
used to create the acceleration structure that
data.pAddressRange→address was retrieved from, and within the
buffer range bound to that acceleration structure
VUID-VkResourceDescriptorInfoEXT-type-11467
If type is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV and
data.pAddressRange is not NULL,
data.pAddressRange→address must be an acceleration structure
handle retrieved from a VkAccelerationStructureNV object via
vkGetAccelerationStructureHandleNV
VUID-VkResourceDescriptorInfoEXT-type-11468
If type is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV and
data.pAddressRange is not NULL, data.pAddressRange→sizemust be 0
Valid Usage (Implicit)
VUID-VkResourceDescriptorInfoEXT-sType-sType
sType must be VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT
VUID-VkResourceDescriptorInfoEXT-pNext-pNext
pNext must be NULL or a pointer to a valid instance of VkDebugUtilsObjectNameInfoEXT
VUID-VkResourceDescriptorInfoEXT-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkResourceDescriptorInfoEXT-type-parameter
type must be a valid VkDescriptorType value
VUID-VkResourceDescriptorInfoEXT-pImage-parameter
If type is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, or VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, and if pImage is not NULL, the pImage member of data must be a valid pointer to a valid VkImageDescriptorInfoEXT structure
VUID-VkResourceDescriptorInfoEXT-pTexelBuffer-parameter
If type is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, and if pTexelBuffer is not NULL, the pTexelBuffer member of data must be a valid pointer to a valid VkTexelBufferDescriptorInfoEXT structure
VUID-VkResourceDescriptorInfoEXT-pAddressRange-parameter
If type is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, and if pAddressRange is not NULL, the pAddressRange member of data must be a valid pointer to a valid VkDeviceAddressRangeEXT structure
VUID-VkResourceDescriptorInfoEXT-pTensorARM-parameter
If type is VK_DESCRIPTOR_TYPE_TENSOR_ARM, and if pTensorARM is not NULL, the pTensorARM member of data must be a valid pointer to a valid VkTensorViewCreateInfoARM structure