If a
Sampler created with magFilter or
minFilter equal to FILTER_LINEAR and
reductionMode equal to either
SAMPLER_REDUCTION_MODE_MIN
or
SAMPLER_REDUCTION_MODE_MAX
is used to sample a ImageView as a result of
this command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
If a
Sampler created with mipmapMode equal to
SAMPLER_MIPMAP_MODE_LINEAR,
reductionMode equal to
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
and compareEnable equal to FALSE
is used to sample a ImageView as a result of
this command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
If a
Sampler created with mipmapMode equal to
SAMPLER_MIPMAP_MODE_LINEAR
and reductionMode equal to either
SAMPLER_REDUCTION_MODE_MIN
or
SAMPLER_REDUCTION_MODE_MAX
is used to sample a ImageView as a result of
this command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the image view’s levelCount and layerCount must be 1
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the image view’s viewType must be
IMAGE_VIEW_TYPE_1D or
IMAGE_VIEW_TYPE_2D
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the sampler must not be used with any of the SPIR-V
OpImageSample* or OpImageSparseSample* instructions with
ImplicitLod, Dref or Proj in their name
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the sampler must not be used with any of the SPIR-V
OpImageSample* or OpImageSparseSample* instructions that
includes a LOD bias or any offset values
If a
ImageView is sampled with
depth comparison,
the image view’s
format features
must contain
FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
If a
ImageView is accessed using atomic
operations as a result of this command, then the image view’s
format features
must contain
FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
If a
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
descriptor is accessed using atomic operations as a result of this
command, then the storage texel buffer’s
format features
must contain
FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
If a
ImageView is sampled with
FILTER_CUBIC_EXT as a result of this
command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
If the
VK_EXT_filter_cubic
extension is not enabled and any ImageView
is sampled with FILTER_CUBIC_EXT as a
result of this command, it must not have a
ImageViewType of
IMAGE_VIEW_TYPE_3D,
IMAGE_VIEW_TYPE_CUBE, or
IMAGE_VIEW_TYPE_CUBE_ARRAY
Any
ImageView being sampled with
FILTER_CUBIC_EXT as a result of this
command must have a
ImageViewType and format that
supports cubic filtering, as specified by
FilterCubicImageViewImageFormatPropertiesEXT::filterCubic
returned by
getPhysicalDeviceImageFormatProperties2
Any
ImageView being sampled with
FILTER_CUBIC_EXT with a reduction mode
of either
SAMPLER_REDUCTION_MODE_MIN
or
SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a
ImageViewType and format that
supports cubic filtering together with minmax filtering, as
specified by
FilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
returned by
getPhysicalDeviceImageFormatProperties2
If the
cubicRangeClamp
feature is not enabled, then any ImageView
being sampled with FILTER_CUBIC_EXT as
a result of this command must not have a
SamplerReductionModeCreateInfo::reductionMode
equal to
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
Any
ImageView being sampled with a
SamplerReductionModeCreateInfo::reductionMode
equal to
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
as a result of this command must sample with
FILTER_CUBIC_EXT
If the
selectableCubicWeights
feature is not enabled, then any ImageView
being sampled with FILTER_CUBIC_EXT as
a result of this command must have
SamplerCubicWeightsCreateInfoQCOM::cubicWeights
equal to
CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
Any
Image created with a
ImageCreateInfo::flags containing
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a
SamplerAddressMode of
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
For any
ImageView being written as a storage image
where the image format field of the OpTypeImage is Unknown, the
view’s
format features
must contain
FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
For any
ImageView being read as a storage image
where the image format field of the OpTypeImage is Unknown, the
view’s
format features
must contain
FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
For any
BufferView being written as a storage texel
buffer where the image format field of the OpTypeImage is
Unknown, the view’s
buffer features
must contain
FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
Any
BufferView being read as a storage texel
buffer where the image format field of the OpTypeImage is
Unknown then the view’s
buffer features
must contain
FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
If a
a bound shader
was created with a pipeline layout and statically uses a set n, a
descriptor set must have been bound to n at the same pipeline
bind point, with layouts compatible for set n with the layout(s)
used to create the shader, as described in
???
If a
a bound shader
was created with a pipeline layout or specified push constant ranges
and statically uses a push constant value, that value must have
been set for the same pipeline bind point, with push constant ranges
that are
compatible
with the push constant range used to create the shader
For each array of resources that
is used by
a bound shader,
the indices used to access members of the array must be less than
the descriptor count for the identified binding in the descriptor
sets used by this command
Descriptors in each bound
descriptor set, specified via
cmdBindDescriptorSets, must
be valid if they are accessed as described by
descriptor validity
by the Pipeline bound to the pipeline bind
point used by this command and the bound
Pipeline was not created with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If an image descriptor is
accessed by a shader, the
ImageLayout must match the
subresource accessible from the ImageView as
defined by the
image layout matching rules
If the descriptors used by the
Pipeline bound to the pipeline bind point
were specified via
cmdBindDescriptorSets, the
bound Pipeline must have been created
without
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
Descriptors in bound descriptor
buffers, specified via
cmdSetDescriptorBufferOffsetsEXT,
must be valid if they are dynamically used by the
Pipeline bound to the pipeline bind point
used by this command and the bound Pipeline
was created with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
Descriptors in bound descriptor
buffers, specified via
cmdSetDescriptorBufferOffsetsEXT,
must be valid if they are dynamically used by any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command
If the descriptors used by the
Pipeline bound to the pipeline bind point
were specified via
cmdSetDescriptorBufferOffsetsEXT,
the bound Pipeline must have been created
with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically
used with a Pipeline created with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT,
the descriptor memory must be resident
If a descriptor is dynamically
used with a ShaderEXT created with a
DescriptorSetLayout that was created with
DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT,
the descriptor memory must be resident
If the
shaderObject
feature is not enabled, a valid pipeline must be bound to the
pipeline bind point used by this command
If a pipeline is bound to the
pipeline bind point used by this command, there must not have been
any calls to dynamic state setting commands for any state specified
statically in the Pipeline object bound to
the pipeline bind point used by this command, since that pipeline
was bound
If any stage of the
Pipeline object bound to the pipeline bind
point used by this command accesses a uniform buffer, and that stage
was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for uniformBuffers, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the buffer as specified in the descriptor set bound
to the same pipeline bind point
If the
robustBufferAccess
feature is not enabled, and any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command accesses a uniform
buffer, it must not access values outside of the range of the
buffer as specified in the descriptor set bound to the same pipeline
bind point
If any stage of the
Pipeline object bound to the pipeline bind
point used by this command accesses a storage buffer, and that stage
was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for storageBuffers, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the buffer as specified in the descriptor set bound
to the same pipeline bind point
If the
robustBufferAccess
feature is not enabled, and any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command accesses a storage
buffer, it must not access values outside of the range of the
buffer as specified in the descriptor set bound to the same pipeline
bind point
If commandBuffer is an
unprotected command buffer and
protectedNoFault
is not supported, any resource accessed by
bound shaders
must not be a protected resource
If a
ImageView is accessed as a result of this
command, then the image view’s viewType must match the Dim
operand of the OpTypeImage as described in
???
If a
ImageView or
BufferView is accessed as a result of this
command, then the
numeric type
of the view’s format and the Sampled Type operand of the
OpTypeImage must match
If a
ImageView created with a format other than
FORMAT_A8_UNORM is accessed using
OpImageWrite as a result of this command, then the Type of the
Texel operand of that instruction must have at least as many
components as the image view’s format
If a
ImageView created with the format
FORMAT_A8_UNORM is accessed using
OpImageWrite as a result of this command, then the Type of the
Texel operand of that instruction must have four components
If a
BufferView is accessed using OpImageWrite
as a result of this command, then the Type of the Texel operand
of that instruction must have at least as many components as the
buffer view’s format
If a
ImageView with a
Format that has a 64-bit component
width is accessed as a result of this command, the SampledType of
the OpTypeImage operand of that instruction must have a Width
of 64
If a
ImageView with a
Format that has a component width less
than 64-bit is accessed as a result of this command, the
SampledType of the OpTypeImage operand of that instruction
must have a Width of 32
If a
BufferView with a
Format that has a 64-bit component
width is accessed as a result of this command, the SampledType of
the OpTypeImage operand of that instruction must have a Width
of 64
If a
BufferView with a
Format that has a component width less
than 64-bit is accessed as a result of this command, the
SampledType of the OpTypeImage operand of that instruction
must have a Width of 32
If the
sparseImageInt64Atomics
feature is not enabled, Image objects
created with the
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an
OpTypeImage with a SampledType with a Width of 64 by this
command
If the
sparseImageInt64Atomics
feature is not enabled, Buffer objects
created with the
BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an
OpTypeImage with a SampledType with a Width of 64 by this
command
If
OpImageSampleWeightedQCOM is used to sample a
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
If
OpImageSampleWeightedQCOM uses a ImageView
as a sample weight image as a result of this command, then the image
view’s
format features
must contain
FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
If
OpImageBoxFilterQCOM is used to sample a
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
If
OpImageBlockMatchSSDQCOM is used to read from an
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
or
FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM
If
OpImageBlockMatchSADQCOM is used to read from an
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
or
FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM
If
OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to
read from a reference image as result of this command, and the
blockMatchExtendedClampToEdge
feature is not enabled or the input sampler was not created with
both addressModeU and addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
then the specified reference coordinates must not fail
integer texel coordinate validation
If
OpImageSampleWeightedQCOM, OpImageBoxFilterQCOM,
OpImageBlockMatchWindowSSDQCOM, OpImageBlockMatchWindowSADQCOM,
OpImageBlockMatchGatherSSDQCOM, OpImageBlockMatchGatherSADQCOM,
OpImageBlockMatchSSDQCOM, or OpImageBlockMatchSADQCOM uses a
Sampler as a result of this command, then
the sampler must have been created with
SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
If any
command other than OpImageSampleWeightedQCOM,
OpImageBoxFilterQCOM, OpImageBlockMatchWindowSSDQCOM,
OpImageBlockMatchWindowSADQCOM, OpImageBlockMatchGatherSSDQCOM,
OpImageBlockMatchGatherSADQCOM, OpImageBlockMatchSSDQCOM, or
OpImageBlockMatchSADQCOM uses a Sampler as
a result of this command, then the sampler must not have been
created with
SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
If a
OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM
instruction is used to read from an
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
If a
OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM
instruction is used to read from an
ImageView as a result of this command, then
the image view’s format must be a single-component format
If a
OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM
read from a reference image as result of this command, and the
blockMatchExtendedClampToEdge
feature is not enabled or the input sampler was not created with
both addressModeU and addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
then the specified reference coordinates must not fail
integer texel coordinate validation
If a
OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM
instruction uses a Sampler as a result of
this command, and the
blockMatchExtendedClampToEdge
is not enabled, the input sampler must not have been created
with either addressModeU or addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
If a
OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM
instruction uses a Sampler as a result of
this command, and the input sampler was created with either
addressModeU or addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
then the sampler must have been created with both addressModeU
and addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
Any shader invocation executed by
this command must
terminate
If a descriptor with type equal
to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
DESCRIPTOR_TYPE_SAMPLED_IMAGE,
DESCRIPTOR_TYPE_STORAGE_IMAGE,
or
DESCRIPTOR_TYPE_INPUT_ATTACHMENT
is accessed as a result of this command, all image subresources
identified by that descriptor must be in the image layout
identified when the descriptor was written
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command through an
OpRayQueryProceedKHR operation , the VK_EXT_opacity_micromap
extension is not enabled, and the acceleration structure is built
using geometry with a
AccelerationStructureTrianglesOpacityMicromapKHR
structure included in its pNext chain, the shader must have
specified a OpacityMicromapIdKHR execution mode with its
specialization constant operand equal to
TRUE
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command and the
acceleration structure was constructed through deserialization, all
micromap arrays referenced by the acceleration structure that were
not replaced by an acceleration structure update command must have
been deserialized using the serialized data of the corresponding
micromaps used to originally build the acceleration structure prior
to the execution of this command on the device
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command and the
acceleration structure is built using geometry with an indexBuffer
containing both
OpacityMicromapSpecialIndexKHR
values and indices into an associated micromap array, any
Pipeline bound to the pipeline bind point
used by this command must not have been created with flags that
includes
PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command and the
acceleration structure is built using geometry with an indexBuffer
containing both
OpacityMicromapSpecialIndexKHR
values and indices into an associated micromap array, any
ShaderEXT that accessed the descriptor
must not have been created with flags that includes
SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT
The
DeviceMemory object allocated from a
MemoryHeap with the
MEMORY_HEAP_TILE_MEMORY_BIT_QCOM
property that is bound to a resource accessed as a result of this
command must be the active
bound tile memory object
in commandBuffer
If this command is recorded
inside a
tile shading render pass
instance, the stages corresponding to the pipeline bind point used
by this command must only include
SHADER_STAGE_VERTEX_BIT,
SHADER_STAGE_FRAGMENT_BIT,
and/or
SHADER_STAGE_COMPUTE_BIT
If this command is recorded where
per-tile execution model
is enabled, there must be no access to any image while the image
was be transitioned to the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
layout
If a
DESCRIPTOR_TYPE_TENSOR_ARM
descriptor is accessed as a result of this command, then the
underlying TensorARM object must have
been created with the
TENSOR_USAGE_SHADER_BIT_ARM usage
flag set
If a
DESCRIPTOR_TYPE_TENSOR_ARM
descriptor is accessed as a result of this command, then the Rank
of the OpTypeTensorARM of the tensor resource variable must be
equal to the dimensionCount provided via
TensorCreateInfoARM::pDescription
when creating the underlying TensorARM
object
If a
DESCRIPTOR_TYPE_TENSOR_ARM
descriptor is accessed as a result of this command, then the element
type of the OpTypeTensorARM of the tensor resource variable must
be
compatible
with the Format of the
TensorViewARM used for the access
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses a OpTypeStruct decorated with Block or
BufferBlock using that mapping, the calculated offset for the
resource heap must be a multiple of
bufferDescriptorAlignment
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses an OpTypeImage or OpTypeSampledImage using
that mapping, the calculated offset for the resource heap must be
a multiple of
imageDescriptorAlignment
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses an OpTypeSampler or OpTypeSampledImage
using that mapping, the calculated offset for the sampler heap
must be a multiple of
samplerDescriptorAlignment
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses an OpTypeTensorARM using that mapping, the
calculated offset for the resource heap must be a multiple of
tensorDescriptorAlignment
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a
multiple of 4
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a valid
DeviceAddress backed by physical
memory at every offset specified by each mapping
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a valid
DeviceAddress
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a
multiple of 8
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a valid
DeviceAddress backed by physical
memory at every offset specified by each mapping
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address pointed to by the address in push data must be a valid
DeviceAddress
For each
descriptor heap
that is statically used by
a bound shader,
either directly or via a
descriptor mapping,
a valid descriptor heap must be bound
If a
bound shader
was created as a ShaderEXT with the
SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
flag or as part of a pipeline with the
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
flag, execution of this command must not result in any descriptor
read accessing data outside of the user range of the respective heap
bound by vkCmdBind*HeapEXT commands
If any stage of the
Pipeline object bound to the pipeline bind
point used by this command accesses a uniform buffer or uniform
texel buffer through a descriptor in the bound resource heap, that
stage was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for uniformBuffers, the
robustBufferAccess2
feature is not enabled, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the descriptor specified via
DeviceAddressRangeKHR
when the descriptor was written
If any stage of the
Pipeline object bound to the pipeline bind
point used by this command accesses a storage buffer or storage
texel buffer through a descriptor in the bound resource heap, that
stage was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for storageBuffers, the
robustBufferAccess2
feature is not enabled, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the descriptor specified by
DeviceAddressRangeKHR
when the descriptor was written
If the
robustBufferAccess2
feature is not enabled, the
robustBufferAccess
feature is not enabled, and any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command accesses a uniform
buffer, uniform texel buffer, storage buffer, or storage texel
buffer, that shader must not access values outside of the range of
the buffer as specified by
DeviceAddressRangeKHR
when the descriptor was written
If any
bound shader
uses an embedded sampler via a
descriptor mapping,
the value of pBindInfo->reservedRangeSize set for
cmdBindSamplerHeapEXT
must be greater than or equal to
minSamplerHeapReservedRangeWithEmbedded
If a
bound shader
was created as a ShaderEXT with the
SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
flag or as part of a pipeline with the
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
flag, and that shader statically uses a push constant value, that
value must have been set by
cmdPushDataEXT
If a
bound shader
was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the access
must not be
out of bounds
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the buffer from
which the address in push data was queried must have been created
with the
BUFFER_USAGE_UNIFORM_BUFFER_BIT
usage flag set
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a uniform buffer using that mapping, the
address that the uniform buffer is mapped to must have been
queried from a buffer created with the
BUFFER_USAGE_UNIFORM_BUFFER_BIT
usage flag set
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a uniform buffer using that mapping, the
address that the uniform buffer is mapped to must be aligned to
minUniformBufferOffsetAlignment
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a storage buffer using that mapping, the
address that the storage buffer is mapped to must have been
queried from a buffer created with the
BUFFER_USAGE_STORAGE_BUFFER_BIT
usage flag set
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a storage buffer using that mapping, the
address that the storage buffer is mapped to must be aligned to
minStorageBufferOffsetAlignment
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses an acceleration structure using that mapping,
the address that the acceleration structure is mapped to must be
an acceleration structure address retrieved from a
AccelerationStructureKHR object via
getAccelerationStructureDeviceAddressKHR
or handle retrieved from a
AccelerationStructureNV object via
getAccelerationStructureHandleNV
If a shader uses a sampler
descriptor to sample an image as a result of this command, and that
sampler descriptor uses a custom border color with an index defined
by
SamplerCustomBorderColorIndexCreateInfoEXT,
the value of
SamplerCustomBorderColorIndexCreateInfoEXT::index
must have been registered before this command was recorded, and
still be registered during the sampling operation, with an
identically defined color
If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
the address that the resource is mapped to must have been queried
from a buffer created without the
BUFFER_CREATE_PROTECTED_BIT
create flag set
If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
the address of the indirect memory must have been queried from a
buffer created without the
BUFFER_CREATE_PROTECTED_BIT
create flag set
Any shader group handle
referenced by this call must have been queried from the bound ray
tracing pipeline
If the bound ray tracing pipeline
state was created with the
DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
dynamic state enabled then
cmdSetRayTracingPipelineStackSizeKHR
must have been called in the current command buffer prior to this
trace command
If a pipeline is bound to the
pipeline bind point used by this command, or shader is bound to a
shader stage used by this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
the value of the address at the expected location in shader record
data must be a valid address
commandBuffer must
not be a protected command buffer
This command must
not cause a pipeline trace ray instruction to be executed from a
shader invocation with a
recursion depth
greater than the value of maxRecursionDepth used to create the
bound ray tracing pipeline
If
raygenShaderBindingTableBuffer is non-sparse then it must be
bound completely and contiguously to a single
DeviceMemory object
raygenShaderBindingOffset must be less than the size of
raygenShaderBindingTableBuffer
raygenShaderBindingOffset must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupBaseAlignment
If
missShaderBindingTableBuffer is non-sparse then it must be bound
completely and contiguously to a single
DeviceMemory object
missShaderBindingOffset must be less than the size of
missShaderBindingTableBuffer
missShaderBindingOffset must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupBaseAlignment
If
hitShaderBindingTableBuffer is non-sparse then it must be bound
completely and contiguously to a single
DeviceMemory object
hitShaderBindingOffset must be less than the size of
hitShaderBindingTableBuffer
hitShaderBindingOffset must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupBaseAlignment
If
callableShaderBindingTableBuffer is non-sparse then it must be
bound completely and contiguously to a single
DeviceMemory object
callableShaderBindingOffset must be less than the size of
callableShaderBindingTableBuffer
callableShaderBindingOffset must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupBaseAlignment
missShaderBindingStride must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupHandleSize
hitShaderBindingStride must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupHandleSize
callableShaderBindingStride must be a multiple of
PhysicalDeviceRayTracingPropertiesNV::shaderGroupHandleSize
missShaderBindingStride must be less than or equal to
PhysicalDeviceRayTracingPropertiesNV::maxShaderGroupStride
hitShaderBindingStride must be less than or equal to
PhysicalDeviceRayTracingPropertiesNV::maxShaderGroupStride
callableShaderBindingStride must be less than or equal to
PhysicalDeviceRayTracingPropertiesNV::maxShaderGroupStride
width must be less than or
equal to
PhysicalDeviceLimits::maxComputeWorkGroupCount[0]
height must be less than or
equal to
PhysicalDeviceLimits::maxComputeWorkGroupCount[1]
depth must be less than or
equal to
PhysicalDeviceLimits::maxComputeWorkGroupCount[2]
If
the traced geometry contains a cluster acceleration structure, then
VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV::allowClusterAccelerationStructure
must have been set for that pipeline