vkCmdDispatchIndirect2KHR
To record an indirect dispatching command, call:
void vkCmdDispatchIndirect2KHR(
VkCommandBuffer commandBuffer,
const VkDispatchIndirect2InfoKHR* pInfo);
pub fn cmd_dispatch_indirect2_khr(
command_buffer: vk::CommandBuffer,
p_info: *const vk::DispatchIndirect2InfoKHR,
);
commandBufferis the command buffer into which the command is recorded.pInfois a pointer to a VkDispatchIndirect2InfoKHR structure defining parameters of this command.
vkCmdDispatchIndirect2KHR behaves similarly to vkCmdDispatch
except that the parameters are read by the device from an address range
during execution.
Valid Usage
VUID-vkCmdDispatchIndirect2KHR-magFilter-04553
If a VkSampler created with magFilter or minFilter
equal to VK_FILTER_LINEAR,
reductionMode equal to
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
and compareEnable equal to VK_FALSE is used to sample a
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
VUID-vkCmdDispatchIndirect2KHR-magFilter-09598
If a VkSampler created with magFilter or minFilter
equal to VK_FILTER_LINEAR and reductionMode equal to either
VK_SAMPLER_REDUCTION_MODE_MIN or
VK_SAMPLER_REDUCTION_MODE_MAX is used to sample a
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
VUID-vkCmdDispatchIndirect2KHR-mipmapMode-04770
If a VkSampler created with mipmapMode equal to
VK_SAMPLER_MIPMAP_MODE_LINEAR,
reductionMode equal to
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
and compareEnable equal to VK_FALSE is used to sample a
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
VUID-vkCmdDispatchIndirect2KHR-mipmapMode-09599
If a VkSampler created with mipmapMode equal to
VK_SAMPLER_MIPMAP_MODE_LINEAR and reductionMode equal to
either VK_SAMPLER_REDUCTION_MODE_MIN or
VK_SAMPLER_REDUCTION_MODE_MAX is used to sample a
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
VUID-vkCmdDispatchIndirect2KHR-unnormalizedCoordinates-09635
If a VkSampler created with unnormalizedCoordinates equal to
VK_TRUE is used to sample a VkImageView as a result of this
command, then the image view’s levelCount and layerCountmust be 1
VUID-vkCmdDispatchIndirect2KHR-None-08609
If a VkSampler created with unnormalizedCoordinates equal to
VK_TRUE is used to sample a VkImageView as a result of this
command, then the image view’s viewType must be
VK_IMAGE_VIEW_TYPE_1D or VK_IMAGE_VIEW_TYPE_2D
VUID-vkCmdDispatchIndirect2KHR-None-08610
If a VkSampler created with unnormalizedCoordinates equal to
VK_TRUE is used to sample a VkImageView 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
VUID-vkCmdDispatchIndirect2KHR-None-08611
If a VkSampler created with unnormalizedCoordinates equal to
VK_TRUE is used to sample a VkImageView 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
VUID-vkCmdDispatchIndirect2KHR-None-06479
If a VkImageView is sampled with
depth comparison, the image view’s
format features must contain
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
VUID-vkCmdDispatchIndirect2KHR-None-02691
If a VkImageView is accessed using atomic operations as a result
of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
VUID-vkCmdDispatchIndirect2KHR-None-07888
If a VK_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
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
VUID-vkCmdDispatchIndirect2KHR-None-02692
If a VkImageView is sampled with VK_FILTER_CUBIC_EXT as a
result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
VUID-vkCmdDispatchIndirect2KHR-None-02693
If
the VK_EXT_filter_cubic extension is not enabled and
any VkImageView is sampled with VK_FILTER_CUBIC_EXT as a
result of this command, it must not have a VkImageViewType of
VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, or
VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
VUID-vkCmdDispatchIndirect2KHR-filterCubic-02694
Any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a
result of this command must have a VkImageViewType and format
that supports cubic filtering, as specified by
VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
VUID-vkCmdDispatchIndirect2KHR-filterCubicMinmax-02695
Any VkImageView being sampled with VK_FILTER_CUBIC_EXT with
a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN or
VK_SAMPLER_REDUCTION_MODE_MAX as a result of this command must
have a VkImageViewType and format that supports cubic filtering
together with minmax filtering, as specified by
VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
VUID-vkCmdDispatchIndirect2KHR-cubicRangeClamp-09212
If the cubicRangeClamp feature is
not enabled, then any VkImageView being sampled with
VK_FILTER_CUBIC_EXT as a result of this command must not have a
VkSamplerReductionModeCreateInfo::reductionMode equal to
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
VUID-vkCmdDispatchIndirect2KHR-reductionMode-09213
Any VkImageView being sampled with a
VkSamplerReductionModeCreateInfo::reductionMode equal to
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a
result of this command must sample with VK_FILTER_CUBIC_EXT
VUID-vkCmdDispatchIndirect2KHR-selectableCubicWeights-09214
If the selectableCubicWeights
feature is not enabled, then any VkImageView being sampled with
VK_FILTER_CUBIC_EXT as a result of this command must have
VkSamplerCubicWeightsCreateInfoQCOM::cubicWeights equal to
VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
VUID-vkCmdDispatchIndirect2KHR-flags-02696
Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a
result of this command must only be sampled using a
VkSamplerAddressMode of
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
VUID-vkCmdDispatchIndirect2KHR-OpTypeImage-07027
For any VkImageView being written as a storage image where the
image format field of the OpTypeImage is Unknown, the view’s
format features must contain
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
VUID-vkCmdDispatchIndirect2KHR-OpTypeImage-07028
For any VkImageView being read as a storage image where the image
format field of the OpTypeImage is Unknown, the view’s
format features must contain
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
VUID-vkCmdDispatchIndirect2KHR-OpTypeImage-07029
For any VkBufferView being written as a storage texel buffer where
the image format field of the OpTypeImage is Unknown, the
view’s buffer features must contain
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
VUID-vkCmdDispatchIndirect2KHR-OpTypeImage-07030
Any VkBufferView 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
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
VUID-vkCmdDispatchIndirect2KHR-None-08600
If a a bound shader
was created
as a VkShaderEXT without the
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT flag or
as part of a pipeline without the
VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT flag, and that shader
statically uses a set n, a descriptor set must have been bound to n
at the same pipeline bind point, with a VkPipelineLayout that is
compatible for set n, with the VkPipelineLayout used to create
the current VkPipeline
or the VkDescriptorSetLayout array used to create the current
VkShaderEXT
, as described in Pipeline Layout Compatibility
VUID-vkCmdDispatchIndirect2KHR-None-08601
If a a bound shader
was created
as a VkShaderEXT without the
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT flag or
as part of a pipeline without the
VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT flag, and that shader
statically uses a push constant value, that value must have been set
for the same pipeline bind point, with a VkPipelineLayout that is
compatible for push constants with the
VkPipelineLayout used to create the current VkPipeline
or the VkDescriptorSetLayout array used to create the current
VkShaderEXT
VUID-vkCmdDispatchIndirect2KHR-None-10068
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
VUID-vkCmdDispatchIndirect2KHR-maintenance4-08602
If a a bound shader
was created
as a VkShaderEXT without the
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT flag or
as part of a pipeline without the
VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT flag, and that shader
statically uses a push constant value, that value must have been set
for the same pipeline bind point, with a VkPipelineLayout that is
compatible for push constants with the
VkPipelineLayout used to create the current VkPipeline
or the VkDescriptorSetLayout and VkPushConstantRange arrays
used to create the current VkShaderEXT
VUID-vkCmdDispatchIndirect2KHR-None-08114
Descriptors in each bound descriptor set, specified via
vkCmdBindDescriptorSets, must be valid if they are accessed as
described by descriptor validity by
the VkPipeline bound to the pipeline bind point used by this
command and the bound VkPipeline was not created with
VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
VUID-vkCmdDispatchIndirect2KHR-imageLayout-00344
If an image descriptor is accessed by a shader, the VkImageLayoutmust match the subresource accessible from the VkImageView as defined by the image layout matching rules
VUID-vkCmdDispatchIndirect2KHR-None-08115
If the descriptors used by the VkPipeline bound to the pipeline
bind point were specified via vkCmdBindDescriptorSets, the bound
VkPipeline must have been created without
VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
VUID-vkCmdDispatchIndirect2KHR-None-08116
Descriptors in bound descriptor buffers, specified via
vkCmdSetDescriptorBufferOffsetsEXT, must be valid if they are
dynamically used by the VkPipeline bound to the pipeline bind
point used by this command and the bound VkPipeline was created
with VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
VUID-vkCmdDispatchIndirect2KHR-None-08604
Descriptors in bound descriptor buffers, specified via vkCmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command
VUID-vkCmdDispatchIndirect2KHR-None-08117
If the descriptors used by the VkPipeline bound to the pipeline
bind point were specified via vkCmdSetDescriptorBufferOffsetsEXT,
the bound VkPipeline must have been created with
VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
VUID-vkCmdDispatchIndirect2KHR-None-08119
If a descriptor is dynamically used with a VkPipeline created with
VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor
memory must be resident
VUID-vkCmdDispatchIndirect2KHR-None-08605
If a descriptor is dynamically used with a VkShaderEXT created
with a VkDescriptorSetLayout that was created with
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the
descriptor memory must be resident
VUID-vkCmdDispatchIndirect2KHR-None-08606
If the shaderObject feature is not
enabled, a
valid pipeline must be bound to the pipeline bind point used by this
command
VUID-vkCmdDispatchIndirect2KHR-None-08608
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 VkPipeline object bound to the pipeline bind point used by this command, since that pipeline was bound
VUID-vkCmdDispatchIndirect2KHR-uniformBuffers-06935
If any stage of the VkPipeline object bound to the pipeline bind
point used by this command accesses a uniform buffer,
and that stage was created without enabling either
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS or
VK_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
VUID-vkCmdDispatchIndirect2KHR-None-08612
If the robustBufferAccess feature
is not enabled, and any VkShaderEXT 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
VUID-vkCmdDispatchIndirect2KHR-storageBuffers-06936
If any stage of the VkPipeline object bound to the pipeline bind
point used by this command accesses a storage buffer,
and that stage was created without enabling either
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS or
VK_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
VUID-vkCmdDispatchIndirect2KHR-None-08613
If the robustBufferAccess feature
is not enabled, and any VkShaderEXT 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
VUID-vkCmdDispatchIndirect2KHR-commandBuffer-02707
If commandBuffer is an unprotected command buffer and
protectedNoFault is not supported,
any resource accessed by bound shaders must not be
a protected resource
VUID-vkCmdDispatchIndirect2KHR-viewType-07752
If a VkImageView 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 Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types
VUID-vkCmdDispatchIndirect2KHR-format-07753
If a VkImageView or VkBufferView 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
VUID-vkCmdDispatchIndirect2KHR-OpImageWrite-08795
If a VkImageView
created with a format other than VK_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
VUID-vkCmdDispatchIndirect2KHR-OpImageWrite-08796
If a VkImageView created with the format VK_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
VUID-vkCmdDispatchIndirect2KHR-OpImageWrite-04469
If a VkBufferView 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
VUID-vkCmdDispatchIndirect2KHR-SampledType-04470
If a VkImageView with a VkFormat 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
VUID-vkCmdDispatchIndirect2KHR-SampledType-04471
If a VkImageView with a VkFormat 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
VUID-vkCmdDispatchIndirect2KHR-SampledType-04472
If a VkBufferView with a VkFormat 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
VUID-vkCmdDispatchIndirect2KHR-SampledType-04473
If a VkBufferView with a VkFormat 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
VUID-vkCmdDispatchIndirect2KHR-sparseImageInt64Atomics-04474
If the sparseImageInt64Atomics feature is not enabled, VkImage
objects created with the VK_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
VUID-vkCmdDispatchIndirect2KHR-sparseImageInt64Atomics-04475
If the sparseImageInt64Atomics feature is not enabled, VkBuffer
objects created with the VK_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
VUID-vkCmdDispatchIndirect2KHR-OpImageSampleWeightedQCOM-06971
If OpImageSampleWeightedQCOM is used to sample a VkImageView
as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageSampleWeightedQCOM-06972
If OpImageSampleWeightedQCOM uses a VkImageView as a sample
weight image as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageBoxFilterQCOM-06973
If OpImageBoxFilterQCOM is used to sample a VkImageView as a
result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageBlockMatchSSDQCOM-06974
If OpImageBlockMatchSSDQCOM is used to read from an
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageBlockMatchSADQCOM-06975
If OpImageBlockMatchSADQCOM is used to read from an
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageBlockMatchSADQCOM-06976
If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to
read from a reference image as result of this command, then the
specified reference coordinates must not fail
integer texel coordinate
validation
VUID-vkCmdDispatchIndirect2KHR-OpImageSampleWeightedQCOM-06977
If OpImageSampleWeightedQCOM, OpImageBoxFilterQCOM,
OpImageBlockMatchWindowSSDQCOM,
OpImageBlockMatchWindowSADQCOM,
OpImageBlockMatchGatherSSDQCOM,
OpImageBlockMatchGatherSADQCOM,
OpImageBlockMatchSSDQCOM, or OpImageBlockMatchSADQCOM uses a
VkSampler as a result of this command, then the sampler must have
been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageSampleWeightedQCOM-06978
If any command other than OpImageSampleWeightedQCOM,
OpImageBoxFilterQCOM,
OpImageBlockMatchWindowSSDQCOM,
OpImageBlockMatchWindowSADQCOM,
OpImageBlockMatchGatherSSDQCOM,
OpImageBlockMatchGatherSADQCOM,
OpImageBlockMatchSSDQCOM, or OpImageBlockMatchSADQCOM uses a
VkSampler as a result of this command, then the sampler must not
have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageBlockMatchWindow-09215
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM instruction is used to read from an
VkImageView as a result of this command, then the image view’s
format features must contain
VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
VUID-vkCmdDispatchIndirect2KHR-OpImageBlockMatchWindow-09216
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM instruction is used to read from an
VkImageView as a result of this command, then the image view’s
format must be a single-component format
VUID-vkCmdDispatchIndirect2KHR-OpImageBlockMatchWindow-09217
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM read from a reference image as result
of this command, then the specified reference coordinates must not fail
integer texel coordinate
validation
VUID-vkCmdDispatchIndirect2KHR-None-07288
Any shader invocation executed by this command mustterminate
VUID-vkCmdDispatchIndirect2KHR-None-09600
If a descriptor with type equal to any of
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
VK_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
VUID-vkCmdDispatchIndirect2KHR-commandBuffer-10746
The VkDeviceMemory object allocated from a VkMemoryHeap with
the VK_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 bound tile memory object in
commandBuffer
VUID-vkCmdDispatchIndirect2KHR-None-10678
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
VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_FRAGMENT_BIT,
and/or VK_SHADER_STAGE_COMPUTE_BIT
VUID-vkCmdDispatchIndirect2KHR-None-10679
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
VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT layout
VUID-vkCmdDispatchIndirect2KHR-pDescription-09900
If a VK_DESCRIPTOR_TYPE_TENSOR_ARM descriptor is accessed as a
result of this command, then the underlying VkTensorARM object
must have been created with the VK_TENSOR_USAGE_SHADER_BIT_ARM
usage flag set
VUID-vkCmdDispatchIndirect2KHR-dimensionCount-09905
If a VK_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
VkTensorCreateInfoARM::pDescription when creating the
underlying VkTensorARM object
VUID-vkCmdDispatchIndirect2KHR-OpTypeTensorARM-09906
If a VK_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 VkFormat of the
VkTensorViewARM used for the access
VUID-vkCmdDispatchIndirect2KHR-None-11297
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11298
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11299
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11397
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11300
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT or
VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11301
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT or
VK_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
VkDeviceAddress backed by physical memory at every offset
specified by each mapping
VUID-vkCmdDispatchIndirect2KHR-None-11302
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 VK_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
VkDeviceAddress
VUID-vkCmdDispatchIndirect2KHR-None-11304
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 VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11305
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 VK_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
VkDeviceAddress backed by physical memory at every offset
specified by each mapping
VUID-vkCmdDispatchIndirect2KHR-None-11306
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 VK_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
VkDeviceAddress
VUID-vkCmdDispatchIndirect2KHR-None-11308
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
VUID-vkCmdDispatchIndirect2KHR-None-11309
If a bound shader was created
as a VkShaderEXT with the
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT flag or
as part of a pipeline with the
VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11372
If any stage of the VkPipeline 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
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS or
VK_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 VkDeviceAddressRangeKHR
when the descriptor was written
VUID-vkCmdDispatchIndirect2KHR-None-11373
If any stage of the VkPipeline 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
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS or
VK_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 VkDeviceAddressRangeKHR
when the descriptor was written
VUID-vkCmdDispatchIndirect2KHR-None-11374
If
the robustBufferAccess2 feature
is not enabled,
the robustBufferAccess feature is
not enabled, and any VkShaderEXT 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 VkDeviceAddressRangeKHR when the descriptor was
written
VUID-vkCmdDispatchIndirect2KHR-pBindInfo-11375
If any bound shader uses an embedded sampler via a
descriptor mapping, the value of
pBindInfo→reservedRangeSize set for vkCmdBindSamplerHeapEXTmust be greater than or equal to
minSamplerHeapReservedRangeWithEmbedded
VUID-vkCmdDispatchIndirect2KHR-None-11376
If a bound shader was created
as a VkShaderEXT with the
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT flag or
as part of a pipeline with the
VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT flag, and that shader
statically uses a push constant value, that value must have been set by
vkCmdPushDataEXT
VUID-vkCmdDispatchIndirect2KHR-None-11398
If a bound shader was created with a
descriptor mapping using
VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, or
VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, and a shader
accesses a resource using that mapping, the access must not be
out of bounds
VUID-vkCmdDispatchIndirect2KHR-None-11437
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, or
VK_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
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT usage flag set
VUID-vkCmdDispatchIndirect2KHR-None-11438
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 VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or VK_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 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT usage flag set
VUID-vkCmdDispatchIndirect2KHR-None-11441
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 VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11439
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 VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or VK_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 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT usage flag set
VUID-vkCmdDispatchIndirect2KHR-None-11442
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 VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or VK_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
VUID-vkCmdDispatchIndirect2KHR-None-11485
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 VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, or VK_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 VkAccelerationStructureKHR object via vkGetAccelerationStructureDeviceAddressKHR
or handle retrieved from a VkAccelerationStructureNV object via vkGetAccelerationStructureHandleNV
VUID-vkCmdDispatchIndirect2KHR-index-11450
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
VkSamplerCustomBorderColorIndexCreateInfoEXT, the value of
VkSamplerCustomBorderColorIndexCreateInfoEXT::index must
have been registered before this command was recorded, and still be
registered during the sampling operation, with an identically defined
color
VUID-vkCmdDispatchIndirect2KHR-protectedNoFault-11455
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 VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the address
that the resource is mapped to must have been queried from a buffer
created without the VK_BUFFER_CREATE_PROTECTED_BIT create flag set
VUID-vkCmdDispatchIndirect2KHR-protectedNoFault-11456
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
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT or
VK_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 VK_BUFFER_CREATE_PROTECTED_BIT create flag set
VUID-vkCmdDispatchIndirect2KHR-commandBuffer-13049
commandBuffer must not be a protected command buffer
VUID-vkCmdDispatchIndirect2KHR-pInfo-13050
pInfo→addressRange.size must be greater than or equal to
sizeof(VkDispatchIndirectCommand)
Valid Usage (Implicit)
VUID-vkCmdDispatchIndirect2KHR-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdDispatchIndirect2KHR-pInfo-parameter
pInfo must be a valid pointer to a valid VkDispatchIndirect2InfoKHR structure
VUID-vkCmdDispatchIndirect2KHR-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdDispatchIndirect2KHR-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT operations
VUID-vkCmdDispatchIndirect2KHR-renderpass
This command must only be called outside of a render pass instance
VUID-vkCmdDispatchIndirect2KHR-suspended
This command must not be called between suspended render pass instances
VUID-vkCmdDispatchIndirect2KHR-videocoding
This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized