cmdDrawClusterHUAWEI :: MonadIO io=> CommandBuffercommandBufferis the command buffer into which the command will be recorded.->"groupCountX"
::: Word32groupCountXis the number of local workgroups to dispatch in the X dimension.->"groupCountY"
::: Word32groupCountYis the number of local workgroups to dispatch in the Y dimension.->"groupCountZ"
::: Word32groupCountZis the number of local workgroups to dispatch in the Z dimension.-> io ()
vkCmdDrawClusterHUAWEI - Draw cluster culling work items
Description
When the command is executed,a global workgroup consisting of groupCountX*groupCountY*groupCountZ local workgroup is assembled. Note that the cluster culling shader pipeline only accepts cmdDrawClusterHUAWEI and cmdDrawClusterIndirectHUAWEI as drawing commands.
Valid Usage
If a Sampler created with
magFilterorminFilterequal to FILTER_LINEAR,reductionModeequal to SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal 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
magFilterorminFilterequal to FILTER_LINEAR andreductionModeequal 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_BITIf a Sampler created with
mipmapModeequal to SAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal to SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal 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_BITIf a Sampler created with
mipmapModeequal to SAMPLER_MIPMAP_MODE_LINEAR andreductionModeequal 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_BITIf a Sampler created with
unnormalizedCoordinatesequal to TRUE is used to sample a ImageView as a result of this command, then the image view’slevelCountandlayerCountmust be 1If a Sampler created with
unnormalizedCoordinatesequal to TRUE is used to sample a ImageView as a result of this command, then the image view’sviewTypemust be IMAGE_VIEW_TYPE_1D or IMAGE_VIEW_TYPE_2DIf a Sampler created with
unnormalizedCoordinatesequal 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-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their nameIf a Sampler created with
unnormalizedCoordinatesequal 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-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset valuesIf 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::
filterCubicreturned by getPhysicalDeviceImageFormatProperties2Any 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::
filterCubicMinmaxreturned by getPhysicalDeviceImageFormatProperties2If 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::
reductionModeequal to SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOMAny ImageView being sampled with a SamplerReductionModeCreateInfo::
reductionModeequal to SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with FILTER_CUBIC_EXTIf the selectableCubicWeights feature is not enabled, then any ImageView being sampled with FILTER_CUBIC_EXT as a result of this command must have SamplerCubicWeightsCreateInfoQCOM::
cubicWeightsequal to CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOMAny Image created with a ImageCreateInfo::
flagscontaining 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_EDGEFor any ImageView being written as a storage image where the image format field of the
OpTypeImageisUnknown, the view’s format features must contain FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BITFor any ImageView being read as a storage image where the image format field of the
OpTypeImageisUnknown, the view’s format features must contain FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BITFor any BufferView being written as a storage texel buffer where the image format field of the
OpTypeImageisUnknown, the view’s buffer features must contain FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BITAny BufferView being read as a storage texel buffer where the image format field of the
OpTypeImageisUnknownthen the view’s buffer features must contain FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BITIf 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 pointIf 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 pointIf 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
commandBufferis an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resourceIf a ImageView is accessed as a result of this command, then the image view’s
viewTypemust match theDimoperand of theOpTypeImageas described in ???If a ImageView or BufferView is accessed as a result of this command, then the numeric type of the view’s
formatand theSampledTypeoperand of theOpTypeImagemust matchIf a ImageView created with a format other than FORMAT_A8_UNORM is accessed using
OpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s formatIf a ImageView created with the format FORMAT_A8_UNORM is accessed using
OpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have four componentsIf a BufferView is accessed using
OpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s formatIf a ImageView with a Format that has a 64-bit component width is accessed as a result of this command, the
SampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64If a ImageView with a Format that has a component width less than 64-bit is accessed as a result of this command, the
SampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32If a BufferView with a Format that has a 64-bit component width is accessed as a result of this command, the
SampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64If a BufferView with a Format that has a component width less than 64-bit is accessed as a result of this command, the
SampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32If 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
OpTypeImagewith aSampledTypewith aWidthof 64 by this commandIf 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
OpTypeImagewith aSampledTypewith aWidthof 64 by this commandIf
OpImageSampleWeightedQCOMis 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_QCOMIf
OpImageSampleWeightedQCOMuses 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_QCOMIf
OpImageBoxFilterQCOMis 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_QCOMIf
OpImageBlockMatchSSDQCOMis 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_QCOMIf
OpImageBlockMatchSADQCOMis 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_QCOMIf
OpImageBlockMatchSADQCOMor 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 bothaddressModeUandaddressModeVequal to SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE then the specified reference coordinates must not fail integer texel coordinate validationIf
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses a Sampler as a result of this command, then the sampler must have been created with SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOMIf any command other than
OpImageSampleWeightedQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses a Sampler as a result of this command, then the sampler must not have been created with SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOMIf a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction 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_QCOMIf a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from an ImageView as a result of this command, then the image view’s format must be a single-component formatIf a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMread from a reference image as result of this command, and the blockMatchExtendedClampToEdge feature is not enabled or the input sampler was not created with bothaddressModeUandaddressModeVequal to SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE then the specified reference coordinates must not fail integer texel coordinate validationIf a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction uses a Sampler as a result of this command, and the blockMatchExtendedClampToEdge is not enabled, the input sampler must not have been created with eitheraddressModeUoraddressModeVequal to SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEIf a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction uses a Sampler as a result of this command, and the input sampler was created with eitheraddressModeUoraddressModeVequal to SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, then the sampler must have been created with bothaddressModeUandaddressModeVequal to SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEAny 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
OpRayQueryProceedKHRoperation , theVK_EXT_opacity_micromapextension is not enabled, and the acceleration structure is built using geometry with a AccelerationStructureTrianglesOpacityMicromapKHR structure included in itspNextchain, the shader must have specified aOpacityMicromapIdKHRexecution mode with its specialization constant operand equal to TRUEIf 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
indexBuffercontaining 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 withflagsthat includes PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHRIf 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
indexBuffercontaining both OpacityMicromapSpecialIndexKHR values and indices into an associated micromap array, any ShaderEXT that accessed the descriptor must not have been created withflagsthat includes SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXTThe 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
commandBufferIf 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
Rankof theOpTypeTensorARMof the tensor resource variable must be equal to thedimensionCountprovided via TensorCreateInfoARM::pDescriptionwhen creating the underlying TensorARM objectIf a DESCRIPTOR_TYPE_TENSOR_ARM descriptor is accessed as a result of this command, then the element type of the
OpTypeTensorARMof the tensor resource variable must be compatible with the Format of the TensorViewARM used for the accessIf 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
OpTypeStructdecorated withBlockorBufferBlockusing that mapping, the calculated offset for the resource heap must be a multiple of bufferDescriptorAlignmentIf 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
OpTypeImageorOpTypeSampledImageusing that mapping, the calculated offset for the resource heap must be a multiple of imageDescriptorAlignmentIf 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
OpTypeSamplerorOpTypeSampledImageusing that mapping, the calculated offset for the sampler heap must be a multiple of samplerDescriptorAlignmentIf 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
OpTypeTensorARMusing that mapping, the calculated offset for the resource heap must be a multiple of tensorDescriptorAlignmentIf 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*HeapEXTcommandsIf 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 writtenIf 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 writtenIf 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->reservedRangeSizeset for cmdBindSamplerHeapEXT must be greater than or equal to minSamplerHeapReservedRangeWithEmbeddedIf 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::
indexmust have been registered before this command was recorded, and still be registered during the sampling operation, with an identically defined colorIf 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
The current render pass must be compatible with the
renderPassmember of the GraphicsPipelineCreateInfo structure specified when creating the Pipeline bound to PIPELINE_BIND_POINT_GRAPHICSThe subpass index of the current render pass must be equal to the
subpassmember of the GraphicsPipelineCreateInfo structure specified when creating the Pipeline bound to PIPELINE_BIND_POINT_GRAPHICSIf any shader executed by this pipeline accesses an
OpTypeImagevariable with aDimoperand ofSubpassData, it must be decorated with anInputAttachmentIndexthat corresponds to a valid input attachment in the current subpassInput attachment views accessed in a subpass must be created with the same Format as the corresponding subpass definition, and be created with a ImageView that is compatible with the attachment referenced by the subpass'
pInputAttachments[InputAttachmentIndex] in the bound Framebuffer as specified by Fragment Input Attachment CompatibilityInput attachment views accessed in a dynamic render pass with a
InputAttachmentIndexreferenced by RenderingInputAttachmentIndexInfo, or noInputAttachmentIndexif RenderingInputAttachmentIndexInfo::pDepthInputAttachmentIndexor RenderingInputAttachmentIndexInfo::pStencilInputAttachmentIndexareNULL, must be created with a ImageView that is compatible with the corresponding color, depth, or stencil attachment in RenderingInfoInput attachment views accessed in a dynamic render pass via a shader object must have an
InputAttachmentIndexif both RenderingInputAttachmentIndexInfo::pDepthInputAttachmentIndexand RenderingInputAttachmentIndexInfo::pStencilInputAttachmentIndexare non-NULLIf an input attachment view accessed in a dynamic render pass via a shader object has an
InputAttachmentIndex, theInputAttachmentIndexmust match an index in RenderingInputAttachmentIndexInfoMemory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command
If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, and feedback loop is not enabled for IMAGE_ASPECT_COLOR_BIT on that attachment, it must not be accessed in any way other than as an attachment by this command
If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, and feedback loop is not enabled for IMAGE_ASPECT_DEPTH_BIT on that attachment, it must not be accessed in any way other than as an attachment by this command
If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, and feedback loop is not enabled for IMAGE_ASPECT_STENCIL_BIT on that attachment, it must not be accessed in any way other than as an attachment by this command
If a color attachment is read in this command in any way other than as an attachment, or has been read by any prior command in this subpass as a non-attachment, and feedback loop is not enabled for IMAGE_ASPECT_COLOR_BIT on that attachment, the color attachment must not be written to by this command
If a depth attachment is read in this command in any way other than as an attachment, or has been read by any prior command in this subpass as a non-attachment, and feedback loop is not enabled for IMAGE_ASPECT_DEPTH_BIT on that attachment, the depth attachment must not be written to by this command
If a stencil attachment is read in this command in any way other than as an attachment, or has been read by any prior command in this subpass as a non-attachment, and feedback loop is not enabled for IMAGE_ASPECT_STENCIL_BIT on that attachment, the stencil attachment must not be written to by this command
If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it must not be accessed in any way other than as an attachment, storage image, or sampled image by this command
If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back
writeMaskare not zero, and stencil test is enabled, all stencil ops must be STENCIL_OP_KEEPIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT dynamic state enabled then cmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the DYNAMIC_STATE_SCISSOR dynamic state enabled then cmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_LINE_WIDTH dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the effective rasterization input topology is in line topology class, then cmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofdepthBiasEnableis TRUE, then cmdSetDepthBias or cmdSetDepthBias2EXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and an active color attachment current value ofblendEnableis TRUE with a blend equations where any BlendFactor member is BLEND_FACTOR_CONSTANT_COLOR, BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, BLEND_FACTOR_CONSTANT_ALPHA, or BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, then cmdSetBlendConstants must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofdepthBoundsTestEnableis TRUE, then cmdSetDepthBounds must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofstencilTestEnableis TRUE, then cmdSetStencilCompareMask must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofstencilTestEnableis TRUE, then cmdSetStencilWriteMask must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, the current value of and
rasterizerDiscardEnableis FALSE, the current value ofstencilTestEnableis TRUE, then cmdSetStencilReference must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to PhysicalDeviceMultiviewProperties::
maxMultiviewInstanceIndexIf the bound graphics pipeline was created with PipelineSampleLocationsStateCreateInfoEXT::
sampleLocationsEnableset to TRUE, then the active depth attachment must have been created with the IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit setIf the
VK_EXT_sample_locationsextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled, and the current value ofrasterizerDiscardEnableis FALSE, then cmdSetSampleLocationsEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_EXT_sample_locationsextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofsampleLocationsEnableis TRUE, then cmdSetSampleLocationsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_CULL_MODE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetCullMode must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_FRONT_FACE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetFrontFace must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, cmdSetDepthTestEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, and the current value ofdepthTestEnableis TRUE, then cmdSetDepthWriteEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofdepthTestEnableis TRUE, then cmdSetDepthCompareOp must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the depthBounds feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetDepthBoundsTestEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetStencilTestEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_STENCIL_OP dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, the current value ofstencilTestEnableis TRUE, then cmdSetStencilOp must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, and the state is not inherited, then cmdSetViewportWithCount must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, and the state is not inherited, then cmdSetScissorWithCount must have been called and not subsequently invalidated in the current command buffer prior to this drawing
If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with both the DYNAMIC_STATE_SCISSOR_WITH_COUNT and DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled, and the state is not inherited, then the
viewportCountparameter of cmdSetViewportWithCount must match thescissorCountparameter of cmdSetScissorWithCountIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, then the bound graphics pipeline must have been created with PipelineViewportWScalingStateCreateInfoNV::
viewportCountgreater or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the
VK_NV_clip_space_w_scalingextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT and DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, the current value ofviewportWScalingEnableis TRUE, then cmdSetViewportWScalingNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_clip_space_w_scalingextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT and DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, the current value ofviewportWScalingEnableis TRUE, then theviewportCountparameter in the last call to cmdSetViewportWScalingNV must be greater than or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic state enabled, then the bound graphics pipeline must have been created with PipelineViewportShadingRateImageStateCreateInfoNV::
viewportCountgreater or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetCoarseSampleOrderNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT and DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofshadingRateImageEnableis TRUE, then cmdSetViewportShadingRatePaletteNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT and DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofshadingRateImageEnableis TRUE, then theviewportCountparameter in the last call to cmdSetViewportShadingRatePaletteNV must be greater than or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a PipelineViewportSwizzleStateCreateInfoNV structure chained from PipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with PipelineViewportSwizzleStateCreateInfoNV::
viewportCountgreater or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a PipelineViewportExclusiveScissorStateCreateInfoNV structure chained from PipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with PipelineViewportExclusiveScissorStateCreateInfoNV::
exclusiveScissorCountgreater or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV dynamic state enabled, then cmdSetExclusiveScissorEnableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If the exclusiveScissor feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV dynamic state enabled, and the most recent call to cmdSetExclusiveScissorEnableNV in the current command buffer set any element of
pExclusiveScissorEnablesto TRUE, then cmdSetExclusiveScissorNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then cmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT or a graphics pipeline is bound which was created with the DYNAMIC_STATE_LOGIC_OP_EXT dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value oflogicOpEnableis TRUE, then cmdSetLogicOpEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the primitiveFragmentShadingRateWithMultipleViewports limit is not supported, the bound graphics pipeline was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the
PrimitiveShadingRateKHRbuilt-in, then cmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and theviewportCountparameter of cmdSetViewportWithCount must be1If the primitiveFragmentShadingRateWithMultipleViewports limit is not supported, and any shader object bound to a graphics stage writes to the
PrimitiveShadingRateKHRbuilt-in, then cmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and theviewportCountparameter of cmdSetViewportWithCount must be1If a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, then for each color attachment, if the corresponding image view’s format features do not contain FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding current value ofblendEnablemust be FALSEIf a shader object is bound to any graphics stage or a graphics pipeline is bound, the current value of
rasterizerDiscardEnableis FALSE, and none of the following is enabled:the
VK_AMD_mixed_attachment_samplesextensionthe
VK_NV_framebuffer_mixed_samplesextensionthe multisampledRenderToSingleSampled feature
then the current value of
rasterizationSamplesmust be the same as the current color and/or depth/stencil attachmentsIf a shader object is bound to any graphics stage, the current render pass instance must have been begun with cmdBeginRendering
If the current render pass instance was begun with cmdBeginRendering, the
imageViewmember ofpDepthAttachmentis not NULL_HANDLE, and thelayoutmember ofpDepthAttachmentis IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachmentIf the current render pass instance was begun with cmdBeginRendering, the
imageViewmember ofpStencilAttachmentis not NULL_HANDLE, and thelayoutmember ofpStencilAttachmentis IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachmentIf the current render pass instance was begun with cmdBeginRendering, the
imageViewmember ofpDepthAttachmentis not NULL_HANDLE, and thelayoutmember ofpDepthAttachmentis IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachmentIf the current render pass instance was begun with cmdBeginRendering, the
imageViewmember ofpStencilAttachmentis not NULL_HANDLE, and thelayoutmember ofpStencilAttachmentis IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachmentIf the current render pass instance was begun with cmdBeginRendering, the
imageViewmember ofpDepthAttachmentis not NULL_HANDLE, and thelayoutmember ofpDepthAttachmentis IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachmentIf the current render pass instance was begun with cmdBeginRendering, the
imageViewmember ofpStencilAttachmentis not NULL_HANDLE, and thelayoutmember ofpStencilAttachmentis IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachmentIf the current render pass instance was begun with cmdBeginRendering, the bound graphics pipeline must have been created with a PipelineRenderingCreateInfo::
viewMaskequal to RenderingInfo::viewMaskIf the dynamicRenderingUnusedAttachments feature is not enabled and the current render pass instance was begun with cmdBeginRendering, the bound graphics pipeline must have been created with a PipelineRenderingCreateInfo::
colorAttachmentCountequal to RenderingInfo::colorAttachmentCountIf the dynamicRenderingUnusedAttachments feature is not enabled, and the current render pass instance was begun with cmdBeginRendering and RenderingInfo::
colorAttachmentCountgreater than0, then each element of the RenderingInfo::pColorAttachmentsarray with animageViewnot equal to NULL_HANDLE must have been created with a Format equal to the corresponding element of PipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the bound graphics pipelineIf the dynamicRenderingUnusedAttachments feature is not enabled, and the current render pass instance was begun with cmdBeginRendering and RenderingInfo::
colorAttachmentCountgreater than0, then each element of the RenderingInfo::pColorAttachmentsarray with animageViewequal to NULL_HANDLE must have the corresponding element of PipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the bound pipeline equal to FORMAT_UNDEFINEDIf the dynamicRenderingUnusedAttachments feature is enabled, and the current render pass instance was begun with cmdBeginRendering and RenderingInfo::
colorAttachmentCountgreater than0, then each element of the RenderingInfo::pColorAttachmentsarray with animageViewnot equal to NULL_HANDLE must have been created with a Format equal to the corresponding element of PipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the bound graphics pipeline, or the corresponding element of PipelineRenderingCreateInfo::pColorAttachmentFormats, if it exists, must be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, with a RenderingInfo::
colorAttachmentCountequal to1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID, each element of the RenderingInfo::pColorAttachmentsarray with aresolveImageViewnot equal to NULL_HANDLE must have been created with an image created with a ExternalFormatANDROID::externalFormatvalue equal to the ExternalFormatANDROID::externalFormatvalue used to create the bound graphics pipelineIf there is no shader object bound to any graphics stage, the current render pass instance was begun with cmdBeginRendering and a RenderingInfo::
colorAttachmentCountequal to1, and a color attachment with a resolve mode of RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID, each element of the RenderingInfo::pColorAttachmentsarray with aimageViewnot equal to NULL_HANDLE must have been created with an image created with a ExternalFormatANDROID::externalFormatvalue equal to the ExternalFormatANDROID::externalFormatvalue used to create the bound graphics pipelineIf the current render pass instance was begun with cmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero ExternalFormatANDROID::
externalFormatvalue and with the DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then cmdSetColorBlendEnableEXT must have set the blend enable to FALSE prior to this drawing commandIf the current render pass instance was begun with cmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero ExternalFormatANDROID::
externalFormatvalue and with the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then cmdSetRasterizationSamplesEXT must have setrasterizationSamplesto SAMPLE_COUNT_1_BIT prior to this drawing commandIf there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID resolve mode, then cmdSetColorBlendEnableEXT must have set blend enable to FALSE prior to this drawing command
If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID resolve mode, then cmdSetRasterizationSamplesEXT must have set
rasterizationSamplesto SAMPLE_COUNT_1_BIT prior to this drawing commandIf the current render pass instance was begun with cmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero ExternalFormatANDROID::
externalFormatvalue and with the DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then cmdSetFragmentShadingRateKHR must have setpFragmentSize->widthto1prior to this drawing commandIf the current render pass instance was begun with cmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero ExternalFormatANDROID::
externalFormatvalue and with the DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then cmdSetFragmentShadingRateKHR must have setpFragmentSize->heightto1prior to this drawing commandIf there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID resolve mode, then cmdSetFragmentShadingRateKHR must have set
pFragmentSize->widthto1prior to this drawing commandIf there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID resolve mode, then cmdSetFragmentShadingRateKHR must have set
pFragmentSize->heightto1prior to this drawing commandIf the colorWriteEnable feature is enabled, a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the colorWriteEnable feature is enabled, a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then theattachmentCountparameter of most recent call to cmdSetColorWriteEnableEXT in the current command buffer must be greater than or equal to the number of active color attachmentsIf the
VK_EXT_discard_rectanglesextension is enabled, a graphics pipeline is bound which was created with the DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and thepNextchain of GraphicsPipelineCreateInfo included a PipelineDiscardRectangleStateCreateInfoEXT structure, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofdiscardRectangleEnableis TRUE, then cmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in PipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCountIf the
VK_EXT_discard_rectanglesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and thepNextchain of GraphicsPipelineCreateInfo did not include a PipelineDiscardRectangleStateCreateInfoEXT structure, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofdiscardRectangleEnableis TRUE, then cmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in PhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectanglesIf the
VK_EXT_discard_rectanglesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, then cmdSetDiscardRectangleEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_EXT_discard_rectanglesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofdiscardRectangleEnableis TRUE, then cmdSetDiscardRectangleModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the current render pass instance was begun with cmdBeginRendering, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pDepthAttachment->imageViewwas NULL_HANDLE, the value of PipelineRenderingCreateInfo::depthAttachmentFormatused to create the bound graphics pipeline must be equal to FORMAT_UNDEFINEDIf current render pass instance was begun with cmdBeginRendering, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pDepthAttachment->imageViewwas not NULL_HANDLE, the value of PipelineRenderingCreateInfo::depthAttachmentFormatused to create the bound graphics pipeline must be equal to the Format used to create RenderingInfo::pDepthAttachment->imageViewIf the current render pass instance was begun with cmdBeginRendering, the dynamicRenderingUnusedAttachments feature is enabled, RenderingInfo::
pDepthAttachment->imageViewwas not NULL_HANDLE, and the value of PipelineRenderingCreateInfo::depthAttachmentFormatused to create the bound graphics pipeline was not equal to the Format used to create RenderingInfo::pDepthAttachment->imageView, the value of the format must be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pStencilAttachment->imageViewwas NULL_HANDLE, the value of PipelineRenderingCreateInfo::stencilAttachmentFormatused to create the bound graphics pipeline must be equal to FORMAT_UNDEFINEDIf current render pass instance was begun with cmdBeginRendering, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pStencilAttachment->imageViewwas not NULL_HANDLE, the value of PipelineRenderingCreateInfo::stencilAttachmentFormatused to create the bound graphics pipeline must be equal to the Format used to create RenderingInfo::pStencilAttachment->imageViewIf the current render pass instance was begun with cmdBeginRendering, the dynamicRenderingUnusedAttachments feature is enabled, RenderingInfo::
pStencilAttachment->imageViewwas not NULL_HANDLE, and the value of PipelineRenderingCreateInfo::stencilAttachmentFormatused to create the bound graphics pipeline was not equal to the Format used to create RenderingInfo::pStencilAttachment->imageView, the value of the format must be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering and RenderingFragmentShadingRateAttachmentInfoKHR::
imageViewwas not NULL_HANDLE, the bound graphics pipeline must have been created with PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRIf the current render pass instance was begun with cmdBeginRendering, the dynamicRenderingLocalRead feature is enabled, the RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR flag is specified, and an attachment is being used as a feedback loop as specified by https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#rendering-attachment-input-attachment-feedback, RenderingAttachmentFlagsInfoKHR::
flagsfor that attachment must include RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHRIf the current render pass instance was begun with cmdBeginRendering and RenderingFragmentDensityMapAttachmentInfoEXT::
imageViewwas not NULL_HANDLE, the bound graphics pipeline must have been created with PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXTIf the current render pass instance was created with RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE or RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE, and the bound graphics pipeline was created with PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE, then the current render pass instance must have a
layersvalue less than or equal to PipelineFragmentDensityMapLayeredCreateInfoVALVE::maxFragmentDensityMapLayersIf the bound pipeline was created with a AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV structure, and the current render pass instance was begun with cmdBeginRendering with a RenderingInfo::
colorAttachmentCountparameter greater than0, then each element of the RenderingInfo::pColorAttachmentsarray with aimageViewnot equal to NULL_HANDLE must have been created with a sample count equal to the corresponding element of thepColorAttachmentSamplesmember of AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV used to create the bound graphics pipelineIf the current render pass instance was begun with cmdBeginRendering, the bound pipeline was created with a AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV structure, and RenderingInfo::
pDepthAttachment->imageViewwas not NULL_HANDLE, the value of thedepthStencilAttachmentSamplesmember of AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV used to create the bound graphics pipeline must be equal to the sample count used to create RenderingInfo::pDepthAttachment->imageViewIf the current render pass instance was begun with cmdBeginRendering, the bound pipeline was created with a AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV structure, and RenderingInfo::
pStencilAttachment->imageViewwas not NULL_HANDLE, the value of thedepthStencilAttachmentSamplesmember of AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV used to create the bound graphics pipeline must be equal to the sample count used to create RenderingInfo::pStencilAttachment->imageViewIf the bound pipeline was created without a AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled feature is not enabled, and cmdBeginCustomResolveEXT has not yet been recorded in the render pass instance, and the current render pass instance was begun with cmdBeginRendering with a RenderingInfo::
colorAttachmentCountparameter greater than0, then each element of the RenderingInfo::pColorAttachmentsarray with aimageViewnot equal to NULL_HANDLE must have been created with a sample count equal to the value ofrasterizationSamplesfor the bound graphics pipelineIf the bound pipeline was created without a AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled feature is not enabled, and cmdBeginCustomResolveEXT has not yet been recorded in the render pass instance, and RenderingInfo::
pDepthAttachment->imageViewwas not NULL_HANDLE, the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to the sample count used to create RenderingInfo::pDepthAttachment->imageViewIf the bound pipeline was created without a AttachmentSampleCountInfoAMD or AttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled feature is not enabled, and cmdBeginCustomResolveEXT has not yet been recorded in the render pass instance, and RenderingInfo::
pStencilAttachment->imageViewwas not NULL_HANDLE, the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to the sample count used to create RenderingInfo::pStencilAttachment->imageViewIf this command is called inside a render pass instance started with cmdBeginRendering, and the
pNextchain of RenderingInfo includes a MultisampledRenderToSingleSampledInfoEXT structure withmultisampledRenderToSingleSampledEnableequal to TRUE, then the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to MultisampledRenderToSingleSampledInfoEXT::rasterizationSamplesIf the current render pass instance was begun with cmdBeginRendering, the bound pipeline must have been created with a GraphicsPipelineCreateInfo::
renderPassequal to NULL_HANDLEIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has not yet been recorded in the render pass instance, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the RenderingInfo::
pColorAttachments->imageViewwas not NULL_HANDLE, then the corresponding element of PipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the pipeline must not be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has been recorded in the render pass instance, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the RenderingInfo::
pColorAttachments->resolveImageViewwas not NULL_HANDLE, then the corresponding element of CustomResolveCreateInfoEXT::pColorAttachmentFormatsused to create the pipeline must not be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has not yet been recorded in the render pass instance, there is a graphics pipeline bound, depth test is enabled, and the RenderingInfo::
pDepthAttachment->imageViewwas not NULL_HANDLE, then the PipelineRenderingCreateInfo::depthAttachmentFormatused to create the pipeline must not be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has been recorded in the render pass instance, there is a graphics pipeline bound, depth test is enabled, and the RenderingInfo::
pDepthAttachment->resolveImageViewwas not NULL_HANDLE, then the CustomResolveCreateInfoEXT::depthAttachmentFormatused to create the pipeline must not be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has not yet been recorded in the render pass instance, there is a graphics pipeline bound, stencil test is enabled and the RenderingInfo::
pStencilAttachment->imageViewwas not NULL_HANDLE, then the PipelineRenderingCreateInfo::stencilAttachmentFormatused to create the pipeline must not be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has been recorded in the render pass instance, there is a graphics pipeline bound, stencil test is enabled and the RenderingInfo::
pStencilAttachment->resolveImageViewwas not NULL_HANDLE, then the CustomResolveCreateInfoEXT::stencilAttachmentFormatused to create the pipeline must not be FORMAT_UNDEFINEDIf the current render pass instance was begun with a cmdBeginRendering call in
commandBuffer, its RenderingInfo::flagsparameter must not have RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT set unless RENDERING_CONTENTS_INLINE_BIT_KHR is also setIf the primitivesGeneratedQueryWithRasterizerDiscard feature is not enabled and the QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
If the primitivesGeneratedQueryWithNonZeroStreams feature is not enabled and the QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in PipelineRasterizationStateStreamCreateInfoEXT::
rasterizationStreamIf the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetSampleMaskEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the bound graphics pipeline state was created with the DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled, and
alphaToCoverageEnablewas TRUE in the last call to cmdSetAlphaToCoverageEnableEXT, then the Fragment Output Interface must contain a variable for the alphaComponentword inLocation0 atIndex0If a shader object is bound to any graphics stage, and the most recent call to cmdSetAlphaToCoverageEnableEXT in the current command buffer set
alphaToCoverageEnableto TRUE, then the Fragment Output Interface must contain a variable for the alphaComponentword inLocation0 atIndex0If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetAlphaToCoverageEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the alphaToOne feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetAlphaToOneEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the logicOp feature is enabled, a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetLogicOpEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and there are color attachments bound, then cmdSetColorBlendEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and there are color attachments bound, then cmdSetColorWriteMaskEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the geometryStreams feature is enabled, and a shader object is bound to the SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a SHADER_STAGE_GEOMETRY_BIT stage and the DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then cmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If the
VK_EXT_conservative_rasterizationextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value ofrasterizerDiscardEnableis FALSE, then cmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_EXT_conservative_rasterizationextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofconservativeRasterizationModeis CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then cmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_EXT_conservative_rasterizationextension is enabled, conservativePointAndLineRasterization is not supported, a shader object is bound to any graphics stage or a graphics pipeline is bound, the current value ofrasterizerDiscardEnableis FALSE, and the effective rasterization input topology is in line or point topology class, then the current value ofconservativeRasterizationModemust be CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXTIf the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then cmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If the
VK_EXT_provoking_vertexextension is enabled, a shader object is bound to the SHADER_STAGE_VERTEX_BIT stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled, and the current value ofrasterizerDiscardEnableis FALSE, then cmdSetProvokingVertexModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf any of the stippledRectangularLines, stippledBresenhamLines or stippledSmoothLines features are enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, and the effective rasterization input topology is in line topology class, then cmdSetLineRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf any of the stippledRectangularLines, stippledBresenhamLines or stippledSmoothLines features are enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the effective rasterization input topology is in line topology class, then cmdSetLineStippleEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf any of the stippledRectangularLines, stippledBresenhamLines or stippledSmoothLines features are enabled and a shader object is bound to any graphics stage, or a bound graphics pipeline state was created with the DYNAMIC_STATE_LINE_STIPPLE dynamic state enabled, the current value of
rasterizerDiscardEnableis FALSE, and the current value ofstippledLineEnableis TRUE, then cmdSetLineStipple must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled, the effective rasterization input topology is in line topology class, and the current
lineRasterizationModeis LINE_RASTERIZATION_MODE_BRESENHAM or LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, then the currentalphaToCoverageEnable,alphaToOneEnableandsampleShadingEnablestates must all be FALSEIf the depthClipControl feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled, then cmdSetDepthClipNegativeOneToOneEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command
If the depthClampControl feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT dynamic state enabled, and the current value of
depthClampEnableis TRUE, then cmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_clip_space_w_scalingextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled, then cmdSetViewportWScalingEnableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_viewport_swizzleextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then cmdSetViewportSwizzleNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_fragment_coverage_to_colorextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled, and the current value ofrasterizerDiscardEnableis FALSE, then cmdSetCoverageToColorEnableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_fragment_coverage_to_colorextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofcoverageToColorEnableis TRUE, then cmdSetCoverageToColorLocationNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_framebuffer_mixed_samplesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled, and the current value ofrasterizerDiscardEnableis FALSE, then cmdSetCoverageModulationModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_framebuffer_mixed_samplesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofcoverageModulationModeis any value other than COVERAGE_MODULATION_MODE_NONE_NV, then cmdSetCoverageModulationTableEnableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the
VK_NV_framebuffer_mixed_samplesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled, the current value ofrasterizerDiscardEnableis FALSE, and the current value ofcoverageModulationTableEnableis TRUE, then cmdSetCoverageModulationTableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the shadingRateImage feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetShadingRateImageEnableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the pipelineFragmentShadingRate feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetFragmentShadingRateKHR must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the representativeFragmentTest feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetRepresentativeFragmentTestEnableNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the coverageReductionMode feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf the bound graphics pipeline state was created with the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the
rasterizationSamplesin the last call to cmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpassIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the
samplesparameter in the last call to cmdSetSampleMaskEXT must be greater or equal to the PipelineMultisampleStateCreateInfo::rasterizationSamplesparameter used to create the bound graphics pipelineIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_MASK_EXT state and DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, then the
samplesparameter in the last call to cmdSetSampleMaskEXT must be greater or equal to therasterizationSamplesparameter in the last call to cmdSetRasterizationSamplesEXTIf the bound graphics pipeline state was created with the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a MultisampledRenderToSingleSampledInfoEXT structure with
multisampledRenderToSingleSampledEnableequal to TRUE, then therasterizationSamplesin the last call to cmdSetRasterizationSamplesEXT must be the same as therasterizationSamplesmember of that structureIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound was created with the DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic states enabled, and the current value of
rasterizerDiscardEnableis FALSE, then the last call to cmdSetColorBlendEnableEXT in the current command buffer prior to this drawing command must have set a value for all active color attachmentsIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound was created with the DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic states enabled, and the current value of
rasterizerDiscardEnableis FALSE, then the last call to cmdSetColorWriteMaskEXT in the current command buffer prior to this drawing command must have set a value for all active color attachmentsIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound was created with the DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT and DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic states enabled, the current value of
rasterizerDiscardEnableis FALSE, and an active color attachment current value ofblendEnableis TRUE, then the number of active color attachments must not exceed advancedBlendMaxColorAttachmentsIf a graphics pipeline is bound was created with DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT , but not the DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetColorBlendEquationEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for all active color attachments with theblendEnablecurrent value of TRUEIf a graphics pipeline is bound was created with DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT, but not the DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for all active color attachments with theblendEnablecurrent value of TRUEIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound was created with DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT and DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then either cmdSetColorBlendAdvancedEXT or cmdSetColorBlendEquationEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for all active color attachments with theblendEnablecurrent value of TRUEIf the primitivesGeneratedQueryWithNonZeroStreams feature is not enabled and the QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, and the bound graphics pipeline was created with DYNAMIC_STATE_RASTERIZATION_STREAM_EXT state enabled, the last call to cmdSetRasterizationStreamEXT must have set the
rasterizationStreamto zeroIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, and the current value of
sampleLocationsEnableis TRUE, then thesampleLocationsPerPixelmember ofpSampleLocationsInfoin the last call to cmdSetSampleLocationsEXT must equal therasterizationSamplesmember of the PipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created withIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current value of
sampleLocationsEnableis TRUE, then thesampleLocationsPerPixelmember ofpSampleLocationsInfoin the last call to cmdSetSampleLocationsEXT must equal therasterizationSamplesparameter of the last call to cmdSetRasterizationSamplesEXTIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and
sampleLocationsEnablewas TRUE in the last call to cmdSetSampleLocationsEnableEXT then the current active depth attachment must have been created with the IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit setIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if
sampleLocationsEnablewas TRUE in the last call to cmdSetSampleLocationsEnableEXT, then thesampleLocationsInfo.maxSampleLocationGridSize.widthin the last call to cmdSetSampleLocationsEXT must evenly divide MultisamplePropertiesEXT::maxSampleLocationGridSize.widthas returned by getPhysicalDeviceMultisamplePropertiesEXT with asamplesparameter equalingrasterizationSamplesIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if
sampleLocationsEnablewas TRUE in the last call to cmdSetSampleLocationsEnableEXT, then thesampleLocationsInfo.maxSampleLocationGridSize.heightin the last call to cmdSetSampleLocationsEXT must evenly divide MultisamplePropertiesEXT::maxSampleLocationGridSize.heightas returned by getPhysicalDeviceMultisamplePropertiesEXT with asamplesparameter equalingrasterizationSamplesIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if
sampleLocationsEnablewas TRUE in the last call to cmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instructionInterpolateAtSampleIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current value of
sampleLocationsEnableis TRUE, thensampleLocationsInfo.sampleLocationGridSize.widthmust evenly divide MultisamplePropertiesEXT::maxSampleLocationGridSize.widthas returned by getPhysicalDeviceMultisamplePropertiesEXT with asamplesparameter equaling the value ofrasterizationSamplesin the last call to cmdSetRasterizationSamplesEXTIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current value of
sampleLocationsEnableis TRUE, thensampleLocationsInfo.sampleLocationGridSize.heightmust evenly divide MultisamplePropertiesEXT::maxSampleLocationGridSize.heightas returned by getPhysicalDeviceMultisamplePropertiesEXT with asamplesparameter equaling the value ofrasterizationSamplesin the last call to cmdSetRasterizationSamplesEXTIf the bound graphics pipeline state was created with the DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current value of
sampleLocationsEnableis TRUE, thensampleLocationsInfo.sampleLocationsPerPixelmust equalrasterizationSamplesin the last call to cmdSetRasterizationSamplesEXTIf a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to cmdSetCoverageModulationTableEnableNV set
coverageModulationTableEnableto TRUE, then thecoverageModulationTableCountparameter in the last call to cmdSetCoverageModulationTableNV must equal the currentrasterizationSamplesdivided by the number of color samples in the current active color attachmentIf the
VK_NV_framebuffer_mixed_samplesextension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the currentrasterizationSamplesmust be the same as the sample count of the depth/stencil attachmentIf the bound graphics pipeline state was created with the DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to cmdSetCoverageToColorEnableNV set the
coverageToColorEnableto TRUE, then there must be an active color attachment at the location selected by the last call to cmdSetCoverageToColorLocationNVcoverageToColorLocation, with a Format of FORMAT_R8_UINT, FORMAT_R8_SINT, FORMAT_R16_UINT, FORMAT_R16_SINT, FORMAT_R32_UINT, or FORMAT_R32_SINTIf the
VK_NV_fragment_coverage_to_colorextension is enabled, and a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to cmdSetRasterizerDiscardEnable in the current command buffer setrasterizerDiscardEnableto FALSE, and the last call to cmdSetCoverageToColorEnableNV set thecoverageToColorEnableto TRUE, then there must be an active color attachment at the location selected by the last call to cmdSetCoverageToColorLocationNVcoverageToColorLocation, with a Format of FORMAT_R8_UINT, FORMAT_R8_SINT, FORMAT_R16_UINT, FORMAT_R16_SINT, FORMAT_R32_UINT, or FORMAT_R32_SINTIf the coverageReductionMode feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV or DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic states enabled, then the current values of
coverageReductionMode,rasterizationSamples, the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with PipelineViewportSwizzleStateCreateInfoNV::
viewportCountgreater or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the bound graphics pipeline state was created with the DYNAMIC_STATE_VIEWPORT_WITH_COUNT and DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the
viewportCountparameter in the last call to cmdSetViewportSwizzleNV must be greater than or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the
VK_NV_viewport_swizzleextension is enabled, and a shader object is bound to any graphics stage, then theviewportCountparameter in the last call to cmdSetViewportSwizzleNV must be greater than or equal to theviewportCountparameter in the last call to cmdSetViewportWithCountIf the
VK_NV_framebuffer_mixed_samplesextension is enabled, and the coverageReductionMode feature is not enabled, or the current value ofcoverageReductionModeis not COVERAGE_REDUCTION_MODE_TRUNCATE_NV, and the current value ofrasterizationSamplesis greater than sample count of the color attachment, then sample shading must be disabledIf the bound graphics pipeline state was created with the DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current
stippledLineEnablestate is TRUE and the currentlineRasterizationModestate is LINE_RASTERIZATION_MODE_RECTANGULAR, then the stippledRectangularLines feature must be enabledIf the bound graphics pipeline state was created with the DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current
stippledLineEnablestate is TRUE and the currentlineRasterizationModestate is LINE_RASTERIZATION_MODE_BRESENHAM, then the stippledBresenhamLines feature must be enabledIf the bound graphics pipeline state was created with the DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current
stippledLineEnablestate is TRUE and the currentlineRasterizationModestate is LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, then the stippledSmoothLines feature must be enabledIf the bound graphics pipeline state was created with the DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current
stippledLineEnablestate is TRUE and the currentlineRasterizationModestate is LINE_RASTERIZATION_MODE_DEFAULT, then the stippledRectangularLines feature must be enabled and PhysicalDeviceLimits::strictLinesmust be TRUEIf the bound pipeline was created with the PipelineShaderStageCreateInfo::
stagemember of an element of GraphicsPipelineCreateInfo::pStagesset to SHADER_STAGE_VERTEX_BIT, SHADER_STAGE_TESSELLATION_CONTROL_BIT, SHADER_STAGE_TESSELLATION_EVALUATION_BIT or SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be activeIf a shader object is bound to the SHADER_STAGE_FRAGMENT_BIT stage or a graphics pipeline is bound which was created with the DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT dynamic state enabled, and the current value of
rasterizerDiscardEnableis FALSE, then cmdSetAttachmentFeedbackLoopEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing commandIf dynamic state was inherited from CommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
For each shader object bound to a graphics stage, except for shader object bound to the last graphics stage in the logical pipeline, it must have been created with a
nextStageincluding the corresponding bit to the shader object bound to the following graphics stage in the logical pipelineIf there is no bound graphics pipeline, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_VERTEX_BITIf there is no bound graphics pipeline, and the tessellationShader feature is enabled, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_TESSELLATION_CONTROL_BITIf there is no bound graphics pipeline, and the tessellationShader feature is enabled, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_TESSELLATION_EVALUATION_BITIf there is no bound graphics pipeline, and the geometryShader feature is enabled, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_GEOMETRY_BITIf there is no bound graphics pipeline, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_FRAGMENT_BITIf there is no bound graphics pipeline, and the taskShader feature is enabled, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_TASK_BIT_EXTIf there is no bound graphics pipeline, and the meshShader feature is enabled, cmdBindShadersEXT must have been called in the current command buffer with
pStageswith an element of SHADER_STAGE_MESH_BIT_EXTIf there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the SHADER_STAGE_VERTEX_BIT or SHADER_STAGE_MESH_BIT_EXT stages must have a valid ShaderEXT bound, and the other must have no ShaderEXT bound
If there is no bound graphics pipeline, and a valid ShaderEXT is bound to the SHADER_STAGE_VERTEX_BIT stage, there must be no ShaderEXT bound to either the SHADER_STAGE_TASK_BIT_EXT stage or the SHADER_STAGE_MESH_BIT_EXT stage
If any graphics shader is bound which was created with the SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same createShadersEXT call must also be bound
If any graphics shader is bound which was created with the SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same createShadersEXT call must not have any ShaderEXT bound
All bound graphics shader objects must have been created with identical or identically defined push constant ranges
All bound graphics shader objects must have either been created with the SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT flag set, or with identical or identically defined arrays of descriptor set layouts
If the current render pass instance was begun with cmdBeginRendering and a RenderingInfo::
colorAttachmentCountequal to1, a color attachment with a resolve mode of RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID, and a fragment shader is bound, it must not declare theDepthReplacingorStencilRefReplacingEXTexecution modesIf the bound graphics pipeline state includes a fragment shader stage, was created with DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in PipelineDynamicStateCreateInfo::
pDynamicStates, and the fragment shader declares theEarlyFragmentTestsexecution mode and usesOpDepthAttachmentReadEXT, thedepthWriteEnableparameter in the last call to cmdSetDepthWriteEnable must be FALSEIf the bound graphics pipeline state includes a fragment shader stage, was created with DYNAMIC_STATE_STENCIL_WRITE_MASK set in PipelineDynamicStateCreateInfo::
pDynamicStates, and the fragment shader declares theEarlyFragmentTestsexecution mode and usesOpStencilAttachmentReadEXT, thewriteMaskparameter in the last call to cmdSetStencilWriteMask must be0If a shader object is bound to any graphics stage or the bound graphics pipeline was created with DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, and the format of any color attachment is FORMAT_E5B9G9R9_UFLOAT_PACK32, the corresponding element of the
pColorWriteMasksparameter of cmdSetColorWriteMaskEXT must either include all of COLOR_COMPONENT_R_BIT, COLOR_COMPONENT_G_BIT, and COLOR_COMPONENT_B_BIT, or none of themIf blending is enabled for any attachment where either the source or destination blend factors for that attachment use the secondary color input, the maximum value of
Locationfor any output attachment statically used in theFragmentExecutionModelexecuted by this command must be less than maxFragmentDualSrcAttachmentsIf the current render pass was begun with cmdBeginRendering, there is no shader object bound to any graphics stage, the value of each element of RenderingAttachmentLocationInfo::
pColorAttachmentLocationsin the bound pipeline must match the value for the corresponding locations set currently in the current render pass instanceIf the current render pass was begun with cmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of RenderingInputAttachmentIndexInfo::
pColorAttachmentInputIndicesin the bound pipeline must match the value for the corresponding index set currently in the current render pass instanceIf the current render pass was begun with cmdBeginRendering, and there is no shader object bound to any graphics stage, the value of RenderingInputAttachmentIndexInfo::
pDepthInputAttachmentIndexin the bound pipeline must match the value set currently in the current render pass instanceIf the current render pass was begun with cmdBeginRendering, and there is no shader object bound to any graphics stage, the value of RenderingInputAttachmentIndexInfo::
pStencilInputAttachmentIndexin the bound pipeline must match the value set currently in the current render pass instanceIf the current render pass was begun with cmdBeginRendering with the RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT
If the bound graphics pipeline was created with PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with cmdBeginRendering with the RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag
If the per-tile execution model is enabled, the tileShadingPerTileDraw feature must be enabled
If a shader object is bound to any graphics stage, multiview functionality must not be enabled in the current render pass
If the multiviewPerViewViewports feature is enabled, then the index of the most significant bit in current render pass instance
viewMaskmust be less than the current value ofviewportCountIf the multiviewPerViewViewports feature is enabled, then the index of the most significant bit in current render pass instance
viewMaskmust be less than the current value ofscissorCountIf current render pass instance was begun with cmdBeginRendering with RenderingInfo::
flagswhich includes RENDERING_FRAGMENT_REGION_BIT_EXT, and if sample shading is enabled (explicitly or implicitly), then the minimum fraction for sample shading must equal 0.0If the current render pass instance was begun with cmdBeginRendering and contains a custom resolve, and the dynamicRenderingUnusedAttachments feature is not enabled, the graphics pipeline bound must have been created with a CustomResolveCreateInfoEXT
If the current render pass instance was begun with cmdBeginRendering and does not contain a custom resolve, and the dynamicRenderingUnusedAttachments feature is not enabled, the graphics pipeline bound must not have been created with a CustomResolveCreateInfoEXT
If the current render pass instance was begun with cmdBeginRendering and cmdBeginCustomResolveEXT has been recorded in the render pass instance, the graphics pipeline bound must have been created with CustomResolveCreateInfoEXT::
customResolveas TRUEIf the current render pass instance was begun with cmdBeginRendering and contains a custom resolve, and cmdBeginCustomResolveEXT has not been recorded in the render pass instance, the graphics pipeline bound must have been created with CustomResolveCreateInfoEXT::
customResolveas FALSEIf the dynamicRenderingUnusedAttachments feature is not enabled and the current render pass instance was begun with cmdBeginRendering and contains a custom resolve, the bound graphics pipeline must have been created with a CustomResolveCreateInfoEXT::
colorAttachmentCountequal to RenderingInfo::colorAttachmentCountIf the dynamicRenderingUnusedAttachments feature is not enabled, and the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, and RenderingInfo::
colorAttachmentCountgreater than0, then each element of the RenderingInfo::pColorAttachmentsarray with anresolveImageViewnot equal to NULL_HANDLE must have been created with a Format equal to the corresponding element of CustomResolveCreateInfoEXT::pColorAttachmentFormatsused to create the bound graphics pipelineIf the dynamicRenderingUnusedAttachments feature is not enabled, and the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, and RenderingInfo::
colorAttachmentCountgreater than0, then each element of the RenderingInfo::pColorAttachmentsarray with anresolveImageViewequal to NULL_HANDLE must have the corresponding element of CustomResolveCreateInfoEXT::pColorAttachmentFormatsused to create the bound pipeline equal to FORMAT_UNDEFINEDIf the dynamicRenderingUnusedAttachments feature is enabled, the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, and RenderingInfo::
colorAttachmentCountgreater than0, then each element of the RenderingInfo::pColorAttachmentsarray with anresolveImageViewnot equal to NULL_HANDLE must have been created with a Format equal to the corresponding element of CustomResolveCreateInfoEXT::pColorAttachmentFormatsused to create the bound graphics pipeline, or the corresponding element of CustomResolveCreateInfoEXT::pColorAttachmentFormats, if it exists, must be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pDepthAttachment->resolveImageViewwas NULL_HANDLE, the value of CustomResolveCreateInfoEXT::depthAttachmentFormatused to create the bound graphics pipeline must be equal to FORMAT_UNDEFINEDIf current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pDepthAttachment->resolveImageViewwas not NULL_HANDLE, the value of CustomResolveCreateInfoEXT::depthAttachmentFormatused to create the bound graphics pipeline must be equal to the Format used to create RenderingInfo::pDepthAttachment->resolveImageViewIf the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, the dynamicRenderingUnusedAttachments feature is enabled, RenderingInfo::
pDepthAttachment->resolveImageViewwas not NULL_HANDLE, and the value of CustomResolveCreateInfoEXT::depthAttachmentFormatused to create the bound graphics pipeline was not equal to the Format used to create RenderingInfo::pDepthAttachment->resolveImageView, the value of the format must be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pStencilAttachment->resolveImageViewwas NULL_HANDLE, the value of CustomResolveCreateInfoEXT::stencilAttachmentFormatused to create the bound graphics pipeline must be equal to FORMAT_UNDEFINEDIf current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, the dynamicRenderingUnusedAttachments feature is not enabled, and RenderingInfo::
pStencilAttachment->resolveImageViewwas not NULL_HANDLE, the value of CustomResolveCreateInfoEXT::stencilAttachmentFormatused to create the bound graphics pipeline must be equal to the Format used to create RenderingInfo::pStencilAttachment->resolveImageViewIf the current render pass instance was begun with cmdBeginRendering, it contains a custom resolve, the dynamicRenderingUnusedAttachments feature is enabled, RenderingInfo::
pStencilAttachment->resolveImageViewwas not NULL_HANDLE, and the value of CustomResolveCreateInfoEXT::stencilAttachmentFormatused to create the bound graphics pipeline was not equal to the Format used to create RenderingInfo::pStencilAttachment->resolveImageView, the value of the format must be FORMAT_UNDEFINEDIf the current render pass instance was begun with cmdBeginRendering with a RenderingInfo::
colorAttachmentCountparameter greater than0and cmdBeginCustomResolveEXT has been recorded in the render pass instance, then for each element of the RenderingInfo::pColorAttachmentsarray with aresolveImageViewnot equal to NULL_HANDLE, theresolveImageViewmust have been created with a sample count equal to the value ofrasterizationSamplesfor the bound graphics pipelineIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has been recorded in the render pass instance, and RenderingInfo::
pDepthAttachment->resolveImageViewwas not NULL_HANDLE, the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to the sample count used to create RenderingInfo::pDepthAttachment->resolveImageViewIf the current render pass instance was begun with cmdBeginRendering, cmdBeginCustomResolveEXT has been recorded in the render pass instance, RenderingInfo::
pStencilAttachment->resolveImageViewwas not NULL_HANDLE, the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to the sample count used to create RenderingInfo::pStencilAttachment->resolveImageViewIf a shader object is bound to the fragment stage, the current render pass instance was begun with cmdBeginRendering, a fragment density map attachment is active, and cmdBeginCustomResolveEXT has been called, then the fragment shader object bound must have been created with CustomResolveCreateInfoEXT::
customResolveas TRUEIf a shader object is bound to the fragment stage, the current render pass instance was begun with cmdBeginRendering and contains a custom resolve, a fragment density map attachment is active, and cmdBeginCustomResolveEXT has not yet been called, then the fragment shader object bound must have been created with CustomResolveCreateInfoEXT::
customResolveas FALSEIf there are any shader objects bound that were created with
flagsthat includes the SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR bit, then all bound shader objects must have been created with the SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR bitIf there are any shader objects bound that were created with
flagsthat includes the SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR bit, then the pipeline layout of the bound descriptor sets must have been created with PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT setIf there are any shader objects bound that were created with
flagsthat includes the SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR bit, and any of the descriptor set layouts used to create the pipeline layout of the bound descriptor sets were created with any binding’s DescriptorSetLayoutBinding::stageFlagsset with SHADER_STAGE_VERTEX_BIT, SHADER_STAGE_TESSELLATION_CONTROL_BIT, SHADER_STAGE_TESSELLATION_EVALUATION_BIT or SHADER_STAGE_GEOMETRY_BIT, then there must be no binding with DescriptorSetLayoutBinding::stageFlagsset with SHADER_STAGE_TASK_BIT_EXT or SHADER_STAGE_MESH_BIT_EXTIf there are any shader objects bound that were created with
flagsthat includes both the SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR and SHADER_CREATE_NO_TASK_SHADER_BIT_EXT bits, the pipeline layout of the bound descriptor sets must have been created with PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR setIf there are any shader objects bound that were created with
flagsthat includes both the SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR and SHADER_CREATE_NO_TASK_SHADER_BIT_EXT bits, there must be no shader object bound to the SHADER_STAGE_TASK_BIT_EXT stageThe bound graphics pipeline must not have been created with the PipelineShaderStageCreateInfo::
stagemember of any element of GraphicsPipelineCreateInfo::pStagesset to SHADER_STAGE_VERTEX_BIT, SHADER_STAGE_TESSELLATION_CONTROL_BIT, SHADER_STAGE_TESSELLATION_EVALUATION_BIT or SHADER_STAGE_GEOMETRY_BITIf there is no bound graphics pipeline, cmdBindShadersEXT must not have last bound the
pStageselement of SHADER_STAGE_VERTEX_BIT, SHADER_STAGE_TESSELLATION_CONTROL_BIT, SHADER_STAGE_TESSELLATION_EVALUATION_BIT or SHADER_STAGE_GEOMETRY_BIT with a valid shader object other than NULL_HANDLETransform Feedback Queries must not be active
Primitives Generated Queries must not be active
The
pipelineStatisticsmember used to create any active Pipeline Statistics Query must not contain QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, or QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BITIf there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid ShaderEXT is bound the to the SHADER_STAGE_MESH_BIT_EXT stage, and that ShaderEXT was created without the SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid ShaderEXT must be bound to the SHADER_STAGE_TASK_BIT_EXT stage
If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid ShaderEXT is bound the to the SHADER_STAGE_MESH_BIT_EXT stage, and that ShaderEXT was created with the SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no ShaderEXT bound to the SHADER_STAGE_TASK_BIT_EXT stage
The
pipelineStatisticsmember used to create any active Pipeline Statistics Query must not contain QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT, or QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXTgroupCountXmust be less than or equal to PhysicalDeviceClusterCullingShaderPropertiesHUAWEI::maxWorkGroupCount[0]groupCountYmust be less than or equal to PhysicalDeviceClusterCullingShaderPropertiesHUAWEI::maxWorkGroupCount[1]groupCountZmust be less than or equal to PhysicalDeviceClusterCullingShaderPropertiesHUAWEI::maxWorkGroupCount[2]The current pipeline bound to PIPELINE_BIND_POINT_GRAPHICS must contain a shader stage using the
ClusterCullingHUAWEIExecutionModel
Valid Usage (Implicit)
commandBuffermust be a valid CommandBuffer handle
commandBuffermust be in the recording stateThe CommandPool that
commandBufferwas allocated from must support QUEUE_GRAPHICS_BIT operationsThis command must only be called inside of a render pass instance
This command must not be called between suspended render pass instances
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 CommandPool that
commandBufferwas allocated from must be externally synchronized
Command Properties
'
Primary Secondary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action |
Conditional Rendering
vkCmdDrawClusterHUAWEI is affected by conditional rendering