vkCmdDrawIndirectByteCountEXT - Draw primitives with indirect parameters
where the vertex count is derived from the counter byte value in the
counter buffer
When the command is executed, primitives are assembled in the same way
as done with cmdDraw except the
vertexCount is calculated based on the byte count read from
counterBuffer at offset counterBufferOffset. The assembled
primitives execute the bound graphics pipeline.
If a
Sampler created with magFilter or
minFilter equal to FILTER_LINEAR and
reductionMode equal to either
SAMPLER_REDUCTION_MODE_MIN
or
SAMPLER_REDUCTION_MODE_MAX
is used to sample a ImageView as a result of
this command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
If a
Sampler created with mipmapMode equal to
SAMPLER_MIPMAP_MODE_LINEAR,
reductionMode equal to
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
and compareEnable equal to FALSE
is used to sample a ImageView as a result of
this command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
If a
Sampler created with mipmapMode equal to
SAMPLER_MIPMAP_MODE_LINEAR
and reductionMode equal to either
SAMPLER_REDUCTION_MODE_MIN
or
SAMPLER_REDUCTION_MODE_MAX
is used to sample a ImageView as a result of
this command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
If a Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the image view’s levelCount and layerCount must be 1
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the image view’s viewType must be
IMAGE_VIEW_TYPE_1D or
IMAGE_VIEW_TYPE_2D
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the sampler must not be used with any of the SPIR-V
OpImageSample* or OpImageSparseSample* instructions with
ImplicitLod, Dref or Proj in their name
If a
Sampler created with
unnormalizedCoordinates equal to
TRUE is used to sample a
ImageView as a result of this command, then
the sampler must not be used with any of the SPIR-V
OpImageSample* or OpImageSparseSample* instructions that
includes a LOD bias or any offset values
If a
ImageView is sampled with
depth comparison,
the image view’s
format features
must contain
FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
If a
ImageView is accessed using atomic
operations as a result of this command, then the image view’s
format features
must contain
FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
If a
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
descriptor is accessed using atomic operations as a result of this
command, then the storage texel buffer’s
format features
must contain
FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
If a
ImageView is sampled with
FILTER_CUBIC_EXT as a result of this
command, then the image view’s
format features
must contain
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
If the
VK_EXT_filter_cubic
extension is not enabled and any ImageView
is sampled with FILTER_CUBIC_EXT as a
result of this command, it must not have a
ImageViewType of
IMAGE_VIEW_TYPE_3D,
IMAGE_VIEW_TYPE_CUBE, or
IMAGE_VIEW_TYPE_CUBE_ARRAY
Any
ImageView being sampled with
FILTER_CUBIC_EXT as a result of this
command must have a
ImageViewType and format that
supports cubic filtering, as specified by
FilterCubicImageViewImageFormatPropertiesEXT::filterCubic
returned by
getPhysicalDeviceImageFormatProperties2
Any
ImageView being sampled with
FILTER_CUBIC_EXT with a reduction mode
of either
SAMPLER_REDUCTION_MODE_MIN
or
SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a
ImageViewType and format that
supports cubic filtering together with minmax filtering, as
specified by
FilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax
returned by
getPhysicalDeviceImageFormatProperties2
If the
cubicRangeClamp
feature is not enabled, then any ImageView
being sampled with FILTER_CUBIC_EXT as
a result of this command must not have a
SamplerReductionModeCreateInfo::reductionMode
equal to
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
Any
ImageView being sampled with a
SamplerReductionModeCreateInfo::reductionMode
equal to
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
as a result of this command must sample with
FILTER_CUBIC_EXT
If
the
selectableCubicWeights
feature is not enabled, then any ImageView
being sampled with FILTER_CUBIC_EXT as
a result of this command must have
SamplerCubicWeightsCreateInfoQCOM::cubicWeights
equal to
CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM
Any
Image created with a
ImageCreateInfo::flags containing
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a
SamplerAddressMode of
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
For any
ImageView being written as a storage image
where the image format field of the OpTypeImage is Unknown, the
view’s
format features
must contain
FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
For any
ImageView being read as a storage image
where the image format field of the OpTypeImage is Unknown, the
view’s
format features
must contain
FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
For any
BufferView being written as a storage texel
buffer where the image format field of the OpTypeImage is
Unknown, the view’s
buffer features
must contain
FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
Any
BufferView being read as a storage texel
buffer where the image format field of the OpTypeImage is
Unknown then the view’s
buffer features
must contain
FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
If a
a bound shader
was created with a pipeline layout and statically uses a set n, a
descriptor set must have been bound to n at the same pipeline
bind point, with layouts compatible for set n with the layout(s)
used to create the shader, as described in
???
If a
a bound shader
was created with a pipeline layout or specified push constant ranges
and statically uses a push constant value, that value must have
been set for the same pipeline bind point, with push constant ranges
that are
compatible
with the push constant range used to create the shader
For each array of
resources that is used by
a bound shader,
the indices used to access members of the array must be less than
the descriptor count for the identified binding in the descriptor
sets used by this command
Descriptors in each
bound descriptor set, specified via
cmdBindDescriptorSets, must
be valid if they are accessed as described by
descriptor validity
by the Pipeline bound to the pipeline bind
point used by this command and the bound
Pipeline was not created with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If an image
descriptor is accessed by a shader, the
ImageLayout must match the
subresource accessible from the ImageView as
defined by the
image layout matching rules
If the descriptors
used by the Pipeline bound to the pipeline
bind point were specified via
cmdBindDescriptorSets, the
bound Pipeline must have been created
without
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT,
must be valid if they are dynamically used by the
Pipeline bound to the pipeline bind point
used by this command and the bound Pipeline
was created with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
Descriptors in bound
descriptor buffers, specified via
cmdSetDescriptorBufferOffsetsEXT,
must be valid if they are dynamically used by any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command
If the descriptors
used by the Pipeline bound to the pipeline
bind point were specified via
cmdSetDescriptorBufferOffsetsEXT,
the bound Pipeline must have been created
with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is
dynamically used with a Pipeline created
with
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT,
the descriptor memory must be resident
If a descriptor is
dynamically used with a ShaderEXT
created with a DescriptorSetLayout that was
created with
DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT,
the descriptor memory must be resident
If the
shaderObject
feature is not enabled, a valid pipeline must be bound to the
pipeline bind point used by this command
If a pipeline is
bound to the pipeline bind point used by this command, there must
not have been any calls to dynamic state setting commands for any
state specified statically in the Pipeline
object bound to the pipeline bind point used by this command, since
that pipeline was bound
If any
stage of the Pipeline object bound to the
pipeline bind point used by this command accesses a uniform buffer,
and that stage was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for uniformBuffers, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the buffer as specified in the descriptor set bound
to the same pipeline bind point
If the
robustBufferAccess
feature is not enabled, and any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command accesses a uniform
buffer, it must not access values outside of the range of the
buffer as specified in the descriptor set bound to the same pipeline
bind point
If any
stage of the Pipeline object bound to the
pipeline bind point used by this command accesses a storage buffer,
and that stage was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for storageBuffers, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the buffer as specified in the descriptor set bound
to the same pipeline bind point
If the
robustBufferAccess
feature is not enabled, and any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command accesses a storage
buffer, it must not access values outside of the range of the
buffer as specified in the descriptor set bound to the same pipeline
bind point
If
commandBuffer is an unprotected command buffer and
protectedNoFault
is not supported, any resource accessed by
bound shaders
must not be a protected resource
If a
ImageView is accessed as a result of this
command, then the image view’s viewType must match the Dim
operand of the OpTypeImage as described in
???
If a
ImageView or
BufferView is accessed as a result of this
command, then the
numeric type
of the view’s format and the Sampled Type operand of the
OpTypeImage must match
If a
ImageView created with a format other than
FORMAT_A8_UNORM is accessed using
OpImageWrite as a result of this command, then the Type of the
Texel operand of that instruction must have at least as many
components as the image view’s format
If a
ImageView created with the format
FORMAT_A8_UNORM is accessed using
OpImageWrite as a result of this command, then the Type of the
Texel operand of that instruction must have four components
If a
BufferView is accessed using OpImageWrite
as a result of this command, then the Type of the Texel operand
of that instruction must have at least as many components as the
buffer view’s format
If a
ImageView with a
Format that has a 64-bit component
width is accessed as a result of this command, the SampledType of
the OpTypeImage operand of that instruction must have a Width
of 64
If a
ImageView with a
Format that has a component width less
than 64-bit is accessed as a result of this command, the
SampledType of the OpTypeImage operand of that instruction
must have a Width of 32
If a
BufferView with a
Format that has a 64-bit component
width is accessed as a result of this command, the SampledType of
the OpTypeImage operand of that instruction must have a Width
of 64
If a
BufferView with a
Format that has a component width less
than 64-bit is accessed as a result of this command, the
SampledType of the OpTypeImage operand of that instruction
must have a Width of 32
If the
sparseImageInt64Atomics
feature is not enabled, Image objects
created with the
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an
OpTypeImage with a SampledType with a Width of 64 by this
command
If the
sparseImageInt64Atomics
feature is not enabled, Buffer objects
created with the
BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an
OpTypeImage with a SampledType with a Width of 64 by this
command
If OpImageSampleWeightedQCOM is used to sample a
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
If OpImageSampleWeightedQCOM uses a
ImageView as a sample weight image as a
result of this command, then the image view’s
format features
must contain
FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
If
OpImageBoxFilterQCOM is used to sample a
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
If OpImageBlockMatchSSDQCOM is used to read from an
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
or
FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM
If OpImageBlockMatchSADQCOM is used to read from an
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
or
FORMAT_FEATURE_2_BLOCK_MATCHING_SXD_BIT_QCOM
If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to
read from a reference image as result of this command, and the
blockMatchExtendedClampToEdge
feature is not enabled or the input sampler was not created with
both addressModeU and addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
then the specified reference coordinates must not fail
integer texel coordinate validation
If OpImageSampleWeightedQCOM, OpImageBoxFilterQCOM,
OpImageBlockMatchWindowSSDQCOM, OpImageBlockMatchWindowSADQCOM,
OpImageBlockMatchGatherSSDQCOM, OpImageBlockMatchGatherSADQCOM,
OpImageBlockMatchSSDQCOM, or OpImageBlockMatchSADQCOM uses a
Sampler as a result of this command, then
the sampler must have been created with
SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
If any command other than OpImageSampleWeightedQCOM,
OpImageBoxFilterQCOM, OpImageBlockMatchWindowSSDQCOM,
OpImageBlockMatchWindowSADQCOM, OpImageBlockMatchGatherSSDQCOM,
OpImageBlockMatchGatherSADQCOM, OpImageBlockMatchSSDQCOM, or
OpImageBlockMatchSADQCOM uses a Sampler as
a result of this command, then the sampler must not have been
created with
SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM instruction is used to read from an
ImageView as a result of this command, then
the image view’s
format features
must contain
FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM instruction is used to read from an
ImageView as a result of this command, then
the image view’s format must be a single-component format
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM read from a reference image as result
of this command, and the
blockMatchExtendedClampToEdge
feature is not enabled or the input sampler was not created with
both addressModeU and addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
then the specified reference coordinates must not fail
integer texel coordinate validation
If a OpImageBlockMatchWindow*QCOM or
OpImageBlockMatchGather*QCOM instruction uses a
Sampler as a result of this command, and the
blockMatchExtendedClampToEdge
is not enabled, the input sampler must not have been created
with either addressModeU or addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
If a
OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM
instruction uses a Sampler as a result of
this command, and the input sampler was created with either
addressModeU or addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
then the sampler must have been created with both addressModeU
and addressModeV equal to
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
Any shader
invocation executed by this command must
terminate
If a descriptor with
type equal to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
DESCRIPTOR_TYPE_SAMPLED_IMAGE,
DESCRIPTOR_TYPE_STORAGE_IMAGE,
or
DESCRIPTOR_TYPE_INPUT_ATTACHMENT
is accessed as a result of this command, all image subresources
identified by that descriptor must be in the image layout
identified when the descriptor was written
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command through an
OpRayQueryProceedKHR operation , the VK_EXT_opacity_micromap
extension is not enabled, and the acceleration structure is built
using geometry with a
AccelerationStructureTrianglesOpacityMicromapKHR
structure included in its pNext chain, the shader must have
specified a OpacityMicromapIdKHR execution mode with its
specialization constant operand equal to
TRUE
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command and the
acceleration structure was constructed through deserialization, all
micromap arrays referenced by the acceleration structure that were
not replaced by an acceleration structure update command must have
been deserialized using the serialized data of the corresponding
micromaps used to originally build the acceleration structure prior
to the execution of this command on the device
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command and the
acceleration structure is built using geometry with an indexBuffer
containing both
OpacityMicromapSpecialIndexKHR
values and indices into an associated micromap array, any
Pipeline bound to the pipeline bind point
used by this command must not have been created with flags that
includes
PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR
If a
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
descriptor is accessed as a result of this command and the
acceleration structure is built using geometry with an indexBuffer
containing both
OpacityMicromapSpecialIndexKHR
values and indices into an associated micromap array, any
ShaderEXT that accessed the descriptor
must not have been created with flags that includes
SHADER_CREATE_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_EXT
The
DeviceMemory object allocated from a
MemoryHeap with the
MEMORY_HEAP_TILE_MEMORY_BIT_QCOM
property that is bound to a resource accessed as a result of this
command must be the active
bound tile memory object
in commandBuffer
If this command is
recorded inside a
tile shading render pass
instance, the stages corresponding to the pipeline bind point used
by this command must only include
SHADER_STAGE_VERTEX_BIT,
SHADER_STAGE_FRAGMENT_BIT,
and/or
SHADER_STAGE_COMPUTE_BIT
If this command is
recorded where
per-tile execution model
is enabled, there must be no access to any image while the image
was be transitioned to the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
layout
If a
DESCRIPTOR_TYPE_TENSOR_ARM
descriptor is accessed as a result of this command, then the
underlying TensorARM object must have
been created with the
TENSOR_USAGE_SHADER_BIT_ARM usage
flag set
If a
DESCRIPTOR_TYPE_TENSOR_ARM
descriptor is accessed as a result of this command, then the Rank
of the OpTypeTensorARM of the tensor resource variable must be
equal to the dimensionCount provided via
TensorCreateInfoARM::pDescription
when creating the underlying TensorARM
object
If a
DESCRIPTOR_TYPE_TENSOR_ARM
descriptor is accessed as a result of this command, then the element
type of the OpTypeTensorARM of the tensor resource variable must
be
compatible
with the Format of the
TensorViewARM used for the access
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses a OpTypeStruct decorated with Block or
BufferBlock using that mapping, the calculated offset for the
resource heap must be a multiple of
bufferDescriptorAlignment
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses an OpTypeImage or OpTypeSampledImage using
that mapping, the calculated offset for the resource heap must be
a multiple of
imageDescriptorAlignment
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses an OpTypeSampler or OpTypeSampledImage
using that mapping, the calculated offset for the sampler heap
must be a multiple of
samplerDescriptorAlignment
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses an OpTypeTensorARM using that mapping, the
calculated offset for the resource heap must be a multiple of
tensorDescriptorAlignment
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a
multiple of 4
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a valid
DeviceAddress backed by physical
memory at every offset specified by each mapping
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a valid
DeviceAddress
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a
multiple of 8
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address at the expected location in push data must be a valid
DeviceAddress backed by physical
memory at every offset specified by each mapping
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the value of
the address pointed to by the address in push data must be a valid
DeviceAddress
For each
descriptor heap
that is statically used by
a bound shader,
either directly or via a
descriptor mapping,
a valid descriptor heap must be bound
If a
bound shader
was created as a ShaderEXT with the
SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
flag or as part of a pipeline with the
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
flag, execution of this command must not result in any descriptor
read accessing data outside of the user range of the respective heap
bound by vkCmdBind*HeapEXT commands
If any stage of the
Pipeline object bound to the pipeline bind
point used by this command accesses a uniform buffer or uniform
texel buffer through a descriptor in the bound resource heap, that
stage was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for uniformBuffers, the
robustBufferAccess2
feature is not enabled, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the descriptor specified via
DeviceAddressRangeKHR
when the descriptor was written
If any stage of the
Pipeline object bound to the pipeline bind
point used by this command accesses a storage buffer or storage
texel buffer through a descriptor in the bound resource heap, that
stage was created without enabling either
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
for storageBuffers, the
robustBufferAccess2
feature is not enabled, and the
robustBufferAccess
feature is not enabled, that stage must not access values outside
of the range of the descriptor specified by
DeviceAddressRangeKHR
when the descriptor was written
If the
robustBufferAccess2
feature is not enabled, the
robustBufferAccess
feature is not enabled, and any
ShaderEXT bound to a stage corresponding
to the pipeline bind point used by this command accesses a uniform
buffer, uniform texel buffer, storage buffer, or storage texel
buffer, that shader must not access values outside of the range of
the buffer as specified by
DeviceAddressRangeKHR
when the descriptor was written
If any
bound shader
uses an embedded sampler via a
descriptor mapping,
the value of pBindInfo->reservedRangeSize set for
cmdBindSamplerHeapEXT
must be greater than or equal to
minSamplerHeapReservedRangeWithEmbedded
If a
bound shader
was created as a ShaderEXT with the
SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
flag or as part of a pipeline with the
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
flag, and that shader statically uses a push constant value, that
value must have been set by
cmdPushDataEXT
If a
bound shader
was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the access
must not be
out of bounds
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a resource using that mapping, the buffer from
which the address in push data was queried must have been created
with the
BUFFER_USAGE_UNIFORM_BUFFER_BIT
usage flag set
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a uniform buffer using that mapping, the
address that the uniform buffer is mapped to must have been
queried from a buffer created with the
BUFFER_USAGE_UNIFORM_BUFFER_BIT
usage flag set
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a uniform buffer using that mapping, the
address that the uniform buffer is mapped to must be aligned to
minUniformBufferOffsetAlignment
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a storage buffer using that mapping, the
address that the storage buffer is mapped to must have been
queried from a buffer created with the
BUFFER_USAGE_STORAGE_BUFFER_BIT
usage flag set
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses a storage buffer using that mapping, the
address that the storage buffer is mapped to must be aligned to
minStorageBufferOffsetAlignment
If a pipeline is
bound to the pipeline bind point used by this command, or shader is
bound to a shader stage used by this command, and it was created
with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
and a shader accesses an acceleration structure using that mapping,
the address that the acceleration structure is mapped to must be
an acceleration structure address retrieved from a
AccelerationStructureKHR object via
getAccelerationStructureDeviceAddressKHR
or handle retrieved from a
AccelerationStructureNV object via
getAccelerationStructureHandleNV
If a shader uses a
sampler descriptor to sample an image as a result of this command,
and that sampler descriptor uses a custom border color with an index
defined by
SamplerCustomBorderColorIndexCreateInfoEXT,
the value of
SamplerCustomBorderColorIndexCreateInfoEXT::index
must have been registered before this command was recorded, and
still be registered during the sampling operation, with an
identically defined color
If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,
DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT,
or
DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT,
the address that the resource is mapped to must have been queried
from a buffer created without the
BUFFER_CREATE_PROTECTED_BIT
create flag set
If
protectedNoFault
is not supported, a pipeline is bound to the pipeline bind point
used by this command, or a shader is bound to a shader stage used by
this command, and it was created with a
descriptor mapping
using
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT
or
DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
the address of the indirect memory must have been queried from a
buffer created without the
BUFFER_CREATE_PROTECTED_BIT
create flag set
The current
render pass must be
compatible
with the renderPass member of the
GraphicsPipelineCreateInfo
structure specified when creating the
Pipeline bound to
PIPELINE_BIND_POINT_GRAPHICS
The subpass index
of the current render pass must be equal to the subpass member
of the GraphicsPipelineCreateInfo
structure specified when creating the
Pipeline bound to
PIPELINE_BIND_POINT_GRAPHICS
If any shader
executed by this pipeline accesses an OpTypeImage variable with a
Dim operand of SubpassData, it must be decorated with an
InputAttachmentIndex that corresponds to a valid input attachment
in the current subpass
Input 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 Compatibility
Input attachment views accessed in a dynamic render pass with a
InputAttachmentIndex referenced by
RenderingInputAttachmentIndexInfo,
or no InputAttachmentIndex if
RenderingInputAttachmentIndexInfo::pDepthInputAttachmentIndex
or
RenderingInputAttachmentIndexInfo::pStencilInputAttachmentIndex
are NULL, must be created with a
ImageView that is compatible with the
corresponding color, depth, or stencil attachment in
RenderingInfo
Input attachment views accessed in a dynamic render pass via a
shader object must have an InputAttachmentIndex if both
RenderingInputAttachmentIndexInfo::pDepthInputAttachmentIndex
and
RenderingInputAttachmentIndexInfo::pStencilInputAttachmentIndex
are non-NULL
If
an input attachment view accessed in a dynamic render pass via a
shader object has an InputAttachmentIndex, the
InputAttachmentIndex must match an index in
RenderingInputAttachmentIndexInfo
Memory 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
writeMask are not zero, and stencil test is enabled,
all stencil ops
must be STENCIL_OP_KEEP
If 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 rasterizerDiscardEnable is
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 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 dynamic
state enabled, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of depthBiasEnable is TRUE, then
cmdSetDepthBias or
cmdSetDepthBias2EXT
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 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 rasterizerDiscardEnable is
FALSE, and an active color
attachment
current value
of blendEnable is 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 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_BOUNDS
dynamic state enabled, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of depthBoundsTestEnable is TRUE,
then cmdSetDepthBounds 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_STENCIL_COMPARE_MASK
dynamic state enabled, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of stencilTestEnable is TRUE,
then cmdSetStencilCompareMask
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_STENCIL_WRITE_MASK
dynamic state enabled, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of stencilTestEnable is TRUE,
then cmdSetStencilWriteMask
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_STENCIL_REFERENCE
dynamic state enabled, the
current value
of and rasterizerDiscardEnable is
FALSE, the
current value
of stencilTestEnable is TRUE,
then cmdSetStencilReference
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the draw is recorded in a render pass instance with multiview
enabled, the maximum instance index must be less than or equal to
PhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
If
the bound graphics pipeline was created with
PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to TRUE, then the active depth
attachment must have been created with the
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set
If the
VK_EXT_sample_locations extension 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
of rasterizerDiscardEnable is
FALSE, then
cmdSetSampleLocationsEnableEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_EXT_sample_locations extension 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
of rasterizerDiscardEnable is
FALSE, and the
current value
of sampleLocationsEnable is TRUE,
then
cmdSetSampleLocationsEXT
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_CULL_MODE dynamic
state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, then
cmdSetCullMode
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_FRONT_FACE dynamic
state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, then
cmdSetFrontFace
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_TEST_ENABLE
dynamic state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE,
cmdSetDepthTestEnable
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_WRITE_ENABLE
dynamic state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of depthTestEnable is TRUE, then
cmdSetDepthWriteEnable
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_COMPARE_OP
dynamic state enabled, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of depthTestEnable is TRUE, then
cmdSetDepthCompareOp
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetDepthBoundsTestEnable
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_STENCIL_TEST_ENABLE
dynamic state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, then
cmdSetStencilTestEnable
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_STENCIL_OP dynamic
state enabled, the
current value
of rasterizerDiscardEnable is
FALSE, the
current value
of stencilTestEnable is TRUE,
then
cmdSetStencilOp
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_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
viewportCount parameter of
cmdSetViewportWithCount
must match the scissorCount parameter of
cmdSetScissorWithCount
If 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::viewportCount
greater or equal to the viewportCount parameter in the last call
to
cmdSetViewportWithCount
If the
VK_NV_clip_space_w_scaling extension 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
of viewportWScalingEnable is
TRUE, then
cmdSetViewportWScalingNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_NV_clip_space_w_scaling extension 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
of viewportWScalingEnable is
TRUE, then the viewportCount
parameter in the last call to
cmdSetViewportWScalingNV
must be greater than or equal to the viewportCount parameter in
the last call to
cmdSetViewportWithCount
If 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::viewportCount
greater or equal to the viewportCount parameter in the last call
to
cmdSetViewportWithCount
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetCoarseSampleOrderNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, and the
current value
of shadingRateImageEnable is
TRUE, then
cmdSetViewportShadingRatePaletteNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, and the
current value
of shadingRateImageEnable is
TRUE, then the viewportCount
parameter in the last call to
cmdSetViewportShadingRatePaletteNV
must be greater than or equal to the viewportCount parameter in
the last call to
cmdSetViewportWithCount
If 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::viewportCount
greater or equal to the viewportCount parameter in the last call
to
cmdSetViewportWithCount
If 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::exclusiveScissorCount
greater or equal to the viewportCount parameter in the last call
to
cmdSetViewportWithCount
If 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
pExclusiveScissorEnables to TRUE,
then
cmdSetExclusiveScissorNV
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_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 rasterizerDiscardEnable is
FALSE, then
cmdSetDepthBiasEnable
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 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 rasterizerDiscardEnable is
FALSE, and the
current value
of logicOpEnable is TRUE, then
cmdSetLogicOpEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 PrimitiveShadingRateKHR built-in,
then
cmdSetViewportWithCount
must have been called in the current command buffer prior to this
drawing command, and the viewportCount parameter of
cmdSetViewportWithCount
must be 1
If the
primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and any shader object bound to a graphics
stage writes to the PrimitiveShadingRateKHR built-in, then
cmdSetViewportWithCount
must have been called in the current command buffer prior to this
drawing command, and the viewportCount parameter of
cmdSetViewportWithCount
must be 1
If 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 rasterizerDiscardEnable is
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
of blendEnable must be FALSE
If a shader object
is bound to any graphics stage or a graphics pipeline is bound, the
current value
of rasterizerDiscardEnable is
FALSE, and none of the following is
enabled:
then the
current value
of rasterizationSamples must be the same as the current color
and/or depth/stencil attachments
If 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 imageView member of pDepthAttachment is not
NULL_HANDLE, and the layout member of
pDepthAttachment is
IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
this command must not write any values to the depth attachment
If the current
render pass instance was begun with
cmdBeginRendering,
the imageView member of pStencilAttachment is not
NULL_HANDLE, and the layout member of
pStencilAttachment is
IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
this command must not write any values to the stencil attachment
If the current
render pass instance was begun with
cmdBeginRendering,
the imageView member of pDepthAttachment is not
NULL_HANDLE, and the layout member of
pDepthAttachment is
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
this command must not write any values to the depth attachment
If the current
render pass instance was begun with
cmdBeginRendering,
the imageView member of pStencilAttachment is not
NULL_HANDLE, and the layout member of
pStencilAttachment is
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
this command must not write any values to the stencil attachment
If the current
render pass instance was begun with
cmdBeginRendering,
the imageView member of pDepthAttachment is not
NULL_HANDLE, and the layout member of
pDepthAttachment is
IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
this command must not write any values to the depth attachment
If the current
render pass instance was begun with
cmdBeginRendering,
the imageView member of pStencilAttachment is not
NULL_HANDLE, and the layout member of
pStencilAttachment is
IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
this command must not write any values to the stencil attachment
If the current
render pass instance was begun with
cmdBeginRendering,
the bound graphics pipeline must have been created with a
PipelineRenderingCreateInfo::viewMask
equal to
RenderingInfo::viewMask
If
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::colorAttachmentCount
equal to
RenderingInfo::colorAttachmentCount
If the
dynamicRenderingUnusedAttachments
feature is not enabled, and the current render pass instance was
begun with
cmdBeginRendering
and
RenderingInfo::colorAttachmentCount
greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with an imageView not equal to
NULL_HANDLE must have been created
with a Format equal to the
corresponding element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the bound graphics pipeline
If the
dynamicRenderingUnusedAttachments
feature is not enabled, and the current render pass instance was
begun with
cmdBeginRendering
and
RenderingInfo::colorAttachmentCount
greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with an imageView equal to
NULL_HANDLE must have the
corresponding element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the bound pipeline equal to
FORMAT_UNDEFINED
If the
dynamicRenderingUnusedAttachments
feature is enabled, and the current render pass instance was begun
with
cmdBeginRendering
and
RenderingInfo::colorAttachmentCount
greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with an imageView not equal to
NULL_HANDLE must have been created
with a Format equal to the
corresponding element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the bound graphics pipeline, or the corresponding
element of
PipelineRenderingCreateInfo::pColorAttachmentFormats,
if it exists, must be
FORMAT_UNDEFINED
If
the current render pass instance was begun with
cmdBeginRendering,
with a
RenderingInfo::colorAttachmentCount
equal to 1, 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::pColorAttachments
array with a resolveImageView not equal to
NULL_HANDLE must have been created
with an image created with a
ExternalFormatANDROID::externalFormat
value equal to the
ExternalFormatANDROID::externalFormat
value used to create the bound graphics pipeline
If there is no
shader object bound to any graphics stage, the current render pass
instance was begun with
cmdBeginRendering
and a
RenderingInfo::colorAttachmentCount
equal to 1, and a color attachment with a resolve mode of
RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID,
each element of the
RenderingInfo::pColorAttachments
array with a imageView not equal to
NULL_HANDLE must have been created
with an image created with a
ExternalFormatANDROID::externalFormat
value equal to the
ExternalFormatANDROID::externalFormat
value used to create the bound graphics pipeline
If 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::externalFormat
value 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 command
If 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::externalFormat
value and with the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
dynamic state enabled, then
cmdSetRasterizationSamplesEXT
must have set rasterizationSamples to
SAMPLE_COUNT_1_BIT 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
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 rasterizationSamples to
SAMPLE_COUNT_1_BIT prior
to this drawing command
If 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::externalFormat
value and with the
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
dynamic state enabled, then
cmdSetFragmentShadingRateKHR
must have set pFragmentSize->width to 1 prior to this drawing
command
If 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::externalFormat
value and with the
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
dynamic state enabled, then
cmdSetFragmentShadingRateKHR
must have set pFragmentSize->height to 1 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
cmdSetFragmentShadingRateKHR
must have set pFragmentSize->width to 1 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
cmdSetFragmentShadingRateKHR
must have set pFragmentSize->height to 1 prior to this drawing
command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetColorWriteEnableEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then the attachmentCount
parameter of most recent call to
cmdSetColorWriteEnableEXT
in the current command buffer must be greater than or equal to the
number of active color attachments
If the
VK_EXT_discard_rectangles extension is enabled, a graphics
pipeline is bound which was created with the
DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
dynamic state enabled and the pNext chain of
GraphicsPipelineCreateInfo included
a
PipelineDiscardRectangleStateCreateInfoEXT
structure, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of discardRectangleEnable is
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::discardRectangleCount
If the VK_EXT_discard_rectangles extension 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 the pNext chain of
GraphicsPipelineCreateInfo did not
include a
PipelineDiscardRectangleStateCreateInfoEXT
structure, the
current value
of rasterizerDiscardEnable is
FALSE, and the
current value
of discardRectangleEnable is
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::maxDiscardRectangles
If the
VK_EXT_discard_rectangles extension 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
of rasterizerDiscardEnable is
FALSE, then
cmdSetDiscardRectangleEnableEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_EXT_discard_rectangles extension 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
of rasterizerDiscardEnable is
FALSE, and the
current value
of discardRectangleEnable is
TRUE, then
cmdSetDiscardRectangleModeEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the current render pass instance was begun with
cmdBeginRendering,
the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pDepthAttachment->imageView
was NULL_HANDLE, the value of
PipelineRenderingCreateInfo::depthAttachmentFormat
used to create the bound graphics pipeline must be equal to
FORMAT_UNDEFINED
If current render pass instance was begun with
cmdBeginRendering,
the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pDepthAttachment->imageView
was not NULL_HANDLE, the value of
PipelineRenderingCreateInfo::depthAttachmentFormat
used to create the bound graphics pipeline must be equal to the
Format used to create
RenderingInfo::pDepthAttachment->imageView
If the current render pass instance was begun with
cmdBeginRendering,
the
dynamicRenderingUnusedAttachments
feature is enabled,
RenderingInfo::pDepthAttachment->imageView
was not NULL_HANDLE, and the value of
PipelineRenderingCreateInfo::depthAttachmentFormat
used 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_UNDEFINED
If the current render pass instance was begun with
cmdBeginRendering,
the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pStencilAttachment->imageView
was NULL_HANDLE, the value of
PipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the bound graphics pipeline must be equal to
FORMAT_UNDEFINED
If current render pass instance was begun with
cmdBeginRendering,
the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pStencilAttachment->imageView
was not NULL_HANDLE, the value of
PipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the bound graphics pipeline must be equal to the
Format used to create
RenderingInfo::pStencilAttachment->imageView
If the current render pass instance was begun with
cmdBeginRendering,
the
dynamicRenderingUnusedAttachments
feature is enabled,
RenderingInfo::pStencilAttachment->imageView
was not NULL_HANDLE, and the value of
PipelineRenderingCreateInfo::stencilAttachmentFormat
used 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_UNDEFINED
If the current
render pass instance was begun with
cmdBeginRendering
and
RenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not NULL_HANDLE, the bound graphics
pipeline must have been created with
PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
If 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::flags
for that attachment must include
RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR
If the current
render pass instance was begun with
cmdBeginRendering
and
RenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not NULL_HANDLE, the bound graphics
pipeline must have been created with
PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
If 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 layers value
less than or equal to
PipelineFragmentDensityMapLayeredCreateInfoVALVE::maxFragmentDensityMapLayers
If
the bound pipeline was created with a
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
structure, and the current render pass instance was begun with
cmdBeginRendering
with a
RenderingInfo::colorAttachmentCount
parameter greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with a imageView not equal to
NULL_HANDLE must have been created
with a sample count equal to the corresponding element of the
pColorAttachmentSamples member of
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
used to create the bound graphics pipeline
If the
current render pass instance was begun with
cmdBeginRendering,
the bound pipeline was created with a
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
structure, and
RenderingInfo::pDepthAttachment->imageView
was not NULL_HANDLE, the value of the
depthStencilAttachmentSamples member of
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
used to create the bound graphics pipeline must be equal to the
sample count used to create
RenderingInfo::pDepthAttachment->imageView
If the
current render pass instance was begun with
cmdBeginRendering,
the bound pipeline was created with a
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
structure, and
RenderingInfo::pStencilAttachment->imageView
was not NULL_HANDLE, the value of the
depthStencilAttachmentSamples member of
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
used to create the bound graphics pipeline must be equal to the
sample count used to create
RenderingInfo::pStencilAttachment->imageView
If 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::colorAttachmentCount
parameter greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with a imageView not equal to
NULL_HANDLE must have been created
with a sample count equal to the value of rasterizationSamples for
the bound graphics pipeline
If 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->imageView
was not NULL_HANDLE, the value of
rasterizationSamples for the bound graphics pipeline must be
equal to the sample count used to create
RenderingInfo::pDepthAttachment->imageView
If 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->imageView
was not NULL_HANDLE, the value of
rasterizationSamples for the bound graphics pipeline must be
equal to the sample count used to create
RenderingInfo::pStencilAttachment->imageView
If this command is
called inside a render pass instance started with
cmdBeginRendering,
and the pNext chain of
RenderingInfo
includes a
MultisampledRenderToSingleSampledInfoEXT
structure with multisampledRenderToSingleSampledEnable equal to
TRUE, then the value of
rasterizationSamples for the bound graphics pipeline must be
equal to
MultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
If the current
render pass instance was begun with
cmdBeginRendering,
the bound pipeline must have been created with a
GraphicsPipelineCreateInfo::renderPass
equal to NULL_HANDLE
If 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->imageView
was not NULL_HANDLE, then the
corresponding element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the pipeline must not be
FORMAT_UNDEFINED
If 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->resolveImageView
was not NULL_HANDLE, then the
corresponding element of
CustomResolveCreateInfoEXT::pColorAttachmentFormats
used to create the pipeline must not be
FORMAT_UNDEFINED
If 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->imageView
was not NULL_HANDLE, then the
PipelineRenderingCreateInfo::depthAttachmentFormat
used to create the pipeline must not be
FORMAT_UNDEFINED
If 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->resolveImageView
was not NULL_HANDLE, then the
CustomResolveCreateInfoEXT::depthAttachmentFormat
used to create the pipeline must not be
FORMAT_UNDEFINED
If 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->imageView
was not NULL_HANDLE, then the
PipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the pipeline must not be
FORMAT_UNDEFINED
If 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->resolveImageView
was not NULL_HANDLE, then the
CustomResolveCreateInfoEXT::stencilAttachmentFormat
used to create the pipeline must not be
FORMAT_UNDEFINED
If the current
render pass instance was begun with a
cmdBeginRendering
call in commandBuffer, its
RenderingInfo::flags
parameter must not have
RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
set unless
RENDERING_CONTENTS_INLINE_BIT_KHR
is also set
If 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::rasterizationStream
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetDepthClampEnableEXT
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_POLYGON_MODE_EXT
dynamic state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, then
cmdSetPolygonModeEXT
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_RASTERIZATION_SAMPLES_EXT
dynamic state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, then
cmdSetRasterizationSamplesEXT
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_SAMPLE_MASK_EXT
dynamic state enabled, and the
current value
of rasterizerDiscardEnable is
FALSE, then
cmdSetSampleMaskEXT
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_ALPHA_TO_COVERAGE_ENABLE_EXT
dynamic state enabled, and alphaToCoverageEnable was
TRUE in the last call to
cmdSetAlphaToCoverageEnableEXT,
then the
Fragment Output Interface
must contain a variable for the alpha Component word in
Location 0 at Index 0
If
a shader object is bound to any graphics stage, and the most recent
call to
cmdSetAlphaToCoverageEnableEXT
in the current command buffer set alphaToCoverageEnable to
TRUE, then the
Fragment Output Interface
must contain a variable for the alpha Component word in
Location 0 at Index 0
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetAlphaToCoverageEnableEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetAlphaToOneEnableEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetLogicOpEnableEXT
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 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 rasterizerDiscardEnable is
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 command
If 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 rasterizerDiscardEnable is
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 command
If 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_rasterization extension 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
of rasterizerDiscardEnable is
FALSE, then
cmdSetConservativeRasterizationModeEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_EXT_conservative_rasterization extension 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
of rasterizerDiscardEnable is
FALSE, and the
current value
of conservativeRasterizationMode is
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,
then
cmdSetExtraPrimitiveOverestimationSizeEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the VK_EXT_conservative_rasterization extension is enabled,
conservativePointAndLineRasterization
is not supported, a shader object is bound to any graphics stage or
a graphics pipeline is bound, the
current value
of rasterizerDiscardEnable is
FALSE, and the
effective rasterization input topology
is in line or point topology class, then the
current value
of conservativeRasterizationMode must be
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
If 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_vertex extension 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
of rasterizerDiscardEnable is
FALSE, then
cmdSetProvokingVertexModeEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
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 command
If 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 rasterizerDiscardEnable is
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 command
If 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 rasterizerDiscardEnable is
FALSE, and the
current value
of stippledLineEnable is TRUE,
then
cmdSetLineStipple
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_RASTERIZATION_MODE_EXT
dynamic state enabled, the
effective rasterization input topology
is in line topology class, and the current lineRasterizationMode
is
LINE_RASTERIZATION_MODE_BRESENHAM
or
LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,
then the current alphaToCoverageEnable, alphaToOneEnable and
sampleShadingEnable states must all be
FALSE
If 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 depthClampEnable is TRUE, then
cmdSetDepthClampRangeEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_NV_clip_space_w_scaling extension 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 command
If the
VK_NV_viewport_swizzle extension 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 command
If the
VK_NV_fragment_coverage_to_color extension 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
of rasterizerDiscardEnable is
FALSE, then
cmdSetCoverageToColorEnableNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_NV_fragment_coverage_to_color extension 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
of rasterizerDiscardEnable is
FALSE, and the
current value
of coverageToColorEnable is TRUE,
then
cmdSetCoverageToColorLocationNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_NV_framebuffer_mixed_samples extension 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
of rasterizerDiscardEnable is
FALSE, then
cmdSetCoverageModulationModeNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
VK_NV_framebuffer_mixed_samples extension 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
of rasterizerDiscardEnable is
FALSE, and the
current value
of coverageModulationMode is 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 command
If the
VK_NV_framebuffer_mixed_samples extension 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
of rasterizerDiscardEnable is
FALSE, and the
current value
of coverageModulationTableEnable is
TRUE, then
cmdSetCoverageModulationTableNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetShadingRateImageEnableNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetFragmentShadingRateKHR
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetRepresentativeFragmentTestEnableNV
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetCoverageReductionModeNV
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_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color
and/or depth/stencil attachments, then the rasterizationSamples
in the last call to
cmdSetRasterizationSamplesEXT
must follow the rules for a
zero-attachment subpass
If 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 samples parameter in the last call to
cmdSetSampleMaskEXT
must be greater or equal to the
PipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline
If 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 samples parameter in the last call to
cmdSetSampleMaskEXT
must be greater or equal to the rasterizationSamples parameter
in the last call to
cmdSetRasterizationSamplesEXT
If 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 multisampledRenderToSingleSampledEnable equal to
TRUE, then the
rasterizationSamples in the last call to
cmdSetRasterizationSamplesEXT
must be the same as the rasterizationSamples member of that
structure
If 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 rasterizerDiscardEnable is
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 attachments
If 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 rasterizerDiscardEnable is
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 attachments
If 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 rasterizerDiscardEnable is
FALSE, and an active color
attachment
current value
of blendEnable is TRUE, then the
number of active color attachments must not exceed
advancedBlendMaxColorAttachments
If 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 rasterizerDiscardEnable is
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 the blendEnable
current value
of TRUE
If 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 rasterizerDiscardEnable is
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 the blendEnable
current value
of TRUE
If 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 rasterizerDiscardEnable is
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 the blendEnable
current value
of TRUE
If 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 rasterizationStream to zero
If 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 sampleLocationsEnable is TRUE,
then the sampleLocationsPerPixel member of pSampleLocationsInfo
in the last call to
cmdSetSampleLocationsEXT
must equal the rasterizationSamples member of the
PipelineMultisampleStateCreateInfo
structure the bound graphics pipeline has been created with
If 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 sampleLocationsEnable is TRUE,
then the sampleLocationsPerPixel member of pSampleLocationsInfo
in the last call to
cmdSetSampleLocationsEXT
must equal the rasterizationSamples parameter of the last call
to
cmdSetRasterizationSamplesEXT
If
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 sampleLocationsEnable was
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 set
If
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 sampleLocationsEnable was
TRUE in the last call to
cmdSetSampleLocationsEnableEXT,
then the sampleLocationsInfo.maxSampleLocationGridSize.width in
the last call to
cmdSetSampleLocationsEXT
must evenly divide
MultisamplePropertiesEXT::maxSampleLocationGridSize.width
as returned by
getPhysicalDeviceMultisamplePropertiesEXT
with a samples parameter equaling rasterizationSamples
If
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 sampleLocationsEnable was
TRUE in the last call to
cmdSetSampleLocationsEnableEXT,
then the sampleLocationsInfo.maxSampleLocationGridSize.height in
the last call to
cmdSetSampleLocationsEXT
must evenly divide
MultisamplePropertiesEXT::maxSampleLocationGridSize.height
as returned by
getPhysicalDeviceMultisamplePropertiesEXT
with a samples parameter equaling rasterizationSamples
If
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 sampleLocationsEnable was
TRUE in the last call to
cmdSetSampleLocationsEnableEXT,
the fragment shader code must not statically use the extended
instruction InterpolateAtSample
If
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 sampleLocationsEnable is TRUE,
then sampleLocationsInfo.sampleLocationGridSize.width must
evenly divide
MultisamplePropertiesEXT::maxSampleLocationGridSize.width
as returned by
getPhysicalDeviceMultisamplePropertiesEXT
with a samples parameter equaling the value of
rasterizationSamples in the last call to
cmdSetRasterizationSamplesEXT
If
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 sampleLocationsEnable is TRUE,
then sampleLocationsInfo.sampleLocationGridSize.height must
evenly divide
MultisamplePropertiesEXT::maxSampleLocationGridSize.height
as returned by
getPhysicalDeviceMultisamplePropertiesEXT
with a samples parameter equaling the value of
rasterizationSamples in the last call to
cmdSetRasterizationSamplesEXT
If
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 sampleLocationsEnable is TRUE,
then sampleLocationsInfo.sampleLocationsPerPixel must equal
rasterizationSamples in the last call to
cmdSetRasterizationSamplesEXT
If 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 coverageModulationTableEnable to
TRUE, then the
coverageModulationTableCount parameter in the last call to
cmdSetCoverageModulationTableNV
must equal the current rasterizationSamples divided by the
number of color samples in the current active color attachment
If
the VK_NV_framebuffer_mixed_samples extension 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 current rasterizationSamples must be the same
as the sample count of the depth/stencil attachment
If
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 coverageToColorEnable to
TRUE, then there must be an
active color attachment at the location selected by the last call to
cmdSetCoverageToColorLocationNV
coverageToColorLocation, with a
Format of
FORMAT_R8_UINT,
FORMAT_R8_SINT,
FORMAT_R16_UINT,
FORMAT_R16_SINT,
FORMAT_R32_UINT, or
FORMAT_R32_SINT
If the VK_NV_fragment_coverage_to_color extension 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 set rasterizerDiscardEnable to
FALSE, and the last call to
cmdSetCoverageToColorEnableNV
set the coverageToColorEnable to
TRUE, then there must be an
active color attachment at the location selected by the last call to
cmdSetCoverageToColorLocationNV
coverageToColorLocation, with a
Format of
FORMAT_R8_UINT,
FORMAT_R8_SINT,
FORMAT_R16_UINT,
FORMAT_R16_SINT,
FORMAT_R32_UINT, or
FORMAT_R32_SINT
If
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
getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
If 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::viewportCount
greater or equal to the viewportCount parameter in the last call
to
cmdSetViewportWithCount
If 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 viewportCount parameter in the
last call to
cmdSetViewportSwizzleNV
must be greater than or equal to the viewportCount parameter in
the last call to
cmdSetViewportWithCount
If the
VK_NV_viewport_swizzle extension is enabled, and a shader object
is bound to any graphics stage, then the viewportCount parameter
in the last call to
cmdSetViewportSwizzleNV
must be greater than or equal to the viewportCount parameter in
the last call to
cmdSetViewportWithCount
If
the VK_NV_framebuffer_mixed_samples extension is enabled, and the
coverageReductionMode
feature is not enabled, or the
current value
of coverageReductionMode is not
COVERAGE_REDUCTION_MODE_TRUNCATE_NV,
and the
current value
of rasterizationSamples is greater than sample count of the color
attachment, then
sample shading
must be disabled
If 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 stippledLineEnable
state is TRUE and the current
lineRasterizationMode state is
LINE_RASTERIZATION_MODE_RECTANGULAR,
then the
stippledRectangularLines
feature must be enabled
If 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 stippledLineEnable
state is TRUE and the current
lineRasterizationMode state is
LINE_RASTERIZATION_MODE_BRESENHAM,
then the
stippledBresenhamLines
feature must be enabled
If 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 stippledLineEnable
state is TRUE and the current
lineRasterizationMode state is
LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,
then the
stippledSmoothLines
feature must be enabled
If 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 stippledLineEnable
state is TRUE and the current
lineRasterizationMode state is
LINE_RASTERIZATION_MODE_DEFAULT,
then the
stippledRectangularLines
feature must be enabled and
PhysicalDeviceLimits::strictLines
must be TRUE
If the bound
pipeline was created with the
PipelineShaderStageCreateInfo::stage
member of an element of
GraphicsPipelineCreateInfo::pStages
set 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 active
If 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 rasterizerDiscardEnable is
FALSE, then
cmdSetAttachmentFeedbackLoopEnableEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If 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 nextStage including the corresponding bit to the
shader object bound to the following graphics stage in the logical
pipeline
If there is no bound
graphics pipeline,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_VERTEX_BIT
If there is no bound
graphics pipeline, and the
tessellationShader
feature is enabled,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_TESSELLATION_CONTROL_BIT
If there is no bound
graphics pipeline, and the
tessellationShader
feature is enabled,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
If there is no bound
graphics pipeline, and the
geometryShader
feature is enabled,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_GEOMETRY_BIT
If there is no bound
graphics pipeline,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_FRAGMENT_BIT
If there is no bound
graphics pipeline, and the
taskShader
feature is enabled,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_TASK_BIT_EXT
If there is no bound
graphics pipeline, and the
meshShader
feature is enabled,
cmdBindShadersEXT must
have been called in the current command buffer with pStages with
an element of
SHADER_STAGE_MESH_BIT_EXT
If 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::colorAttachmentCount
equal to 1, 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 the
DepthReplacing or StencilRefReplacingEXT execution modes
If 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 the EarlyFragmentTests execution
mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable
parameter in the last call to
cmdSetDepthWriteEnable
must be FALSE
If 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 the EarlyFragmentTests execution
mode and uses OpStencilAttachmentReadEXT, the writeMask
parameter in the last call to
cmdSetStencilWriteMask must
be 0
If 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 pColorWriteMasks parameter of
cmdSetColorWriteMaskEXT
must either include all of
COLOR_COMPONENT_R_BIT,
COLOR_COMPONENT_G_BIT,
and
COLOR_COMPONENT_B_BIT,
or none of them
If
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 Location for any output attachment
statically used
in the Fragment Execution Model executed by this command
must be less than
maxFragmentDualSrcAttachments
If 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::pColorAttachmentLocations
in the bound pipeline must match the value for the corresponding
locations set currently in the current render pass instance
If 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::pColorAttachmentInputIndices
in the bound pipeline must match the value for the corresponding
index set currently in the current render pass instance
If the current
render pass was begun with
cmdBeginRendering,
and there is no shader object bound to any graphics stage, the value
of
RenderingInputAttachmentIndexInfo::pDepthInputAttachmentIndex
in the bound pipeline must match the value set currently in the
current render pass instance
If the current
render pass was begun with
cmdBeginRendering,
and there is no shader object bound to any graphics stage, the value
of
RenderingInputAttachmentIndexInfo::pStencilInputAttachmentIndex
in the bound pipeline must match the value set currently in the
current render pass instance
If 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 viewMask must be less than the
current value
of viewportCount
If the
multiviewPerViewViewports
feature is enabled, then the index of the most significant bit in
current render pass instance viewMask must be less than the
current value
of scissorCount
If current render
pass instance was begun with
cmdBeginRendering
with
RenderingInfo::flags
which 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.0
If 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::customResolve
as TRUE
If 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::customResolve
as FALSE
If 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::colorAttachmentCount
equal to
RenderingInfo::colorAttachmentCount
If the
dynamicRenderingUnusedAttachments
feature is not enabled, and the current render pass instance was
begun with
cmdBeginRendering,
it contains a custom resolve, and
RenderingInfo::colorAttachmentCount
greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with an resolveImageView not equal to
NULL_HANDLE must have been created
with a Format equal to the
corresponding element of
CustomResolveCreateInfoEXT::pColorAttachmentFormats
used to create the bound graphics pipeline
If the
dynamicRenderingUnusedAttachments
feature is not enabled, and the current render pass instance was
begun with
cmdBeginRendering,
it contains a custom resolve, and
RenderingInfo::colorAttachmentCount
greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with an resolveImageView equal to
NULL_HANDLE must have the
corresponding element of
CustomResolveCreateInfoEXT::pColorAttachmentFormats
used to create the bound pipeline equal to
FORMAT_UNDEFINED
If the
dynamicRenderingUnusedAttachments
feature is enabled, the current render pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, and
RenderingInfo::colorAttachmentCount
greater than 0, then each element of the
RenderingInfo::pColorAttachments
array with an resolveImageView not equal to
NULL_HANDLE must have been created
with a Format equal to the
corresponding element of
CustomResolveCreateInfoEXT::pColorAttachmentFormats
used to create the bound graphics pipeline, or the corresponding
element of
CustomResolveCreateInfoEXT::pColorAttachmentFormats,
if it exists, must be
FORMAT_UNDEFINED
If the current
render pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pDepthAttachment->resolveImageView
was NULL_HANDLE, the value of
CustomResolveCreateInfoEXT::depthAttachmentFormat
used to create the bound graphics pipeline must be equal to
FORMAT_UNDEFINED
If current render
pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pDepthAttachment->resolveImageView
was not NULL_HANDLE, the value of
CustomResolveCreateInfoEXT::depthAttachmentFormat
used to create the bound graphics pipeline must be equal to the
Format used to create
RenderingInfo::pDepthAttachment->resolveImageView
If the current render pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, the
dynamicRenderingUnusedAttachments
feature is enabled,
RenderingInfo::pDepthAttachment->resolveImageView
was not NULL_HANDLE, and the value of
CustomResolveCreateInfoEXT::depthAttachmentFormat
used 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_UNDEFINED
If the current
render pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pStencilAttachment->resolveImageView
was NULL_HANDLE, the value of
CustomResolveCreateInfoEXT::stencilAttachmentFormat
used to create the bound graphics pipeline must be equal to
FORMAT_UNDEFINED
If current render
pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, the
dynamicRenderingUnusedAttachments
feature is not enabled, and
RenderingInfo::pStencilAttachment->resolveImageView
was not NULL_HANDLE, the value of
CustomResolveCreateInfoEXT::stencilAttachmentFormat
used to create the bound graphics pipeline must be equal to the
Format used to create
RenderingInfo::pStencilAttachment->resolveImageView
If the current render pass instance was begun with
cmdBeginRendering,
it contains a custom resolve, the
dynamicRenderingUnusedAttachments
feature is enabled,
RenderingInfo::pStencilAttachment->resolveImageView
was not NULL_HANDLE, and the value of
CustomResolveCreateInfoEXT::stencilAttachmentFormat
used 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_UNDEFINED
If
the current render pass instance was begun with
cmdBeginRendering
with a
RenderingInfo::colorAttachmentCount
parameter greater than 0 and
cmdBeginCustomResolveEXT
has been recorded in the render pass instance, then for each element
of the
RenderingInfo::pColorAttachments
array with a resolveImageView not equal to
NULL_HANDLE, the resolveImageView
must have been created with a sample count equal to the value of
rasterizationSamples for the bound graphics pipeline
If the
current render pass instance was begun with
cmdBeginRendering,
cmdBeginCustomResolveEXT
has been recorded in the render pass instance, and
RenderingInfo::pDepthAttachment->resolveImageView
was not NULL_HANDLE, the value of
rasterizationSamples for the bound graphics pipeline must be
equal to the sample count used to create
RenderingInfo::pDepthAttachment->resolveImageView
If the
current render pass instance was begun with
cmdBeginRendering,
cmdBeginCustomResolveEXT
has been recorded in the render pass instance,
RenderingInfo::pStencilAttachment->resolveImageView
was not NULL_HANDLE, the value of
rasterizationSamples for the bound graphics pipeline must be
equal to the sample count used to create
RenderingInfo::pStencilAttachment->resolveImageView
If 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::customResolve
as TRUE
If 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::customResolve
as FALSE
If there are any
shader objects bound that were created with flags that 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
bit
If there are any
shader objects bound that were created with flags that 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
set
If there are any
shader objects bound that were created with flags that 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::stageFlags
set 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::stageFlags
set with
SHADER_STAGE_TASK_BIT_EXT
or
SHADER_STAGE_MESH_BIT_EXT
If there are any
shader objects bound that were created with flags that 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
set
If there are any
shader objects bound that were created with flags that 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
stage
All vertex input
bindings accessed via vertex input variables declared in the vertex
shader entry point’s interface must have either valid or
NULL_HANDLE buffers bound
If the
nullDescriptor
feature is not enabled, all vertex input bindings accessed via
vertex input variables declared in the vertex shader entry point’s
interface must not be NULL_HANDLE
If the
robustBufferAccess
feature is not enabled, and that pipeline was created without
enabling
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
for vertexInputs, then for a given vertex buffer binding, any
attribute data fetched must be entirely contained within the
corresponding vertex buffer binding, as described in
???
For each vertex
attribute accessed by this command, if its
VertexInputAttributeDescription::format
or
VertexInputAttributeDescription2EXT::format
is a
packed format,
and the
legacyVertexAttributes
feature is not enabled, the value of attribAddress, calculated as
described in
Vertex Input Calculation,
must be a multiple of the
size of the format
For each vertex
attribute accessed by this command, if its
VertexInputAttributeDescription::format
or
VertexInputAttributeDescription2EXT::format
is not a
packed format,
and either the
legacyVertexAttributes
feature is not enabled or format has 64-bit components, the value
of attribAddress, calculated as described in
Vertex Input Calculation,
must be a multiple of the
component size of the format
If there is a shader
object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
dynamic state enabled then
cmdSetPrimitiveTopology
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_PRIMITIVE_TOPOLOGY
dynamic state enabled and the
dynamicPrimitiveTopologyUnrestricted
is FALSE, then the
primitiveTopology parameter of
cmdSetPrimitiveTopology
must be of the same
topology class
as the pipeline
PipelineInputAssemblyStateCreateInfo::topology
state
If a
SHADER_STAGE_TESSELLATION_CONTROL_BIT
stage is bound, then the
current value
of primitiveTopology must be
PRIMITIVE_TOPOLOGY_PATCH_LIST
prior to this drawing command
If
cmdSetPrimitiveTopology
set primitiveTopology to
PRIMITIVE_TOPOLOGY_PATCH_LIST
prior to this drawing command, then a
SHADER_STAGE_TESSELLATION_CONTROL_BIT
stage must be bound
If
cmdSetPrimitiveTopology
set primitiveTopology to
PRIMITIVE_TOPOLOGY_POINT_LIST
prior to this drawing command, the
maintenance5
feature is not enabled, both a
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
and
SHADER_STAGE_GEOMETRY_BIT
stage are not bound, then the Vertex Execution Model must
have a PointSize decorated variable that is statically written to
If the bound
graphics pipeline was created with the
DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
dynamic state enabled, but without the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then
cmdBindVertexBuffers2
with a non-NULL pStrides parameter or
cmdBindVertexBuffers3KHR
with setStride set to TRUE must
have been called and not subsequently
invalidated
in the current command buffer prior to this draw command
If the bound
graphics pipeline was created without the
DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
dynamic state enabled, without the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, and
cmdBindVertexBuffers3KHR
was called and not subsequently
invalidated
in the current command buffer prior to this draw command, the value
of setStride in each of its pBindInfos elements must have been
FALSE
If there is a shader
object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled then
cmdSetVertexInputEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this draw command
If the
vertexAttributeRobustness
feature is not enabled, and the
maintenance9
feature is not enabled, and there is a shader object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled then all variables with the Input storage
class decorated with Location in the Vertex Execution Model
OpEntryPoint must contain a location in
VertexInputAttributeDescription2EXT::location
If there is a
shader object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled and either the
legacyVertexAttributes
feature is not enabled or the SPIR-V Type associated with a given
Input variable of the corresponding Location in the Vertex
Execution Model OpEntryPoint is 64-bit, then the numeric type
associated with all Input variables of the corresponding
Location in the Vertex Execution Model OpEntryPoint must
be the same as
VertexInputAttributeDescription2EXT::format
If there is a
shader object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled and
VertexInputAttributeDescription2EXT::format
has a 64-bit component, then the scalar width associated with all
Input variables of the corresponding Location in the Vertex
Execution Model OpEntryPoint must be 64-bit
If there is a
shader object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled and the scalar width associated with a
Location decorated Input variable in the Vertex Execution
Model OpEntryPoint is 64-bit, then the corresponding
VertexInputAttributeDescription2EXT::format
must have a 64-bit component
If there is a shader
object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled and
VertexInputAttributeDescription2EXT::format
has a 64-bit component, then all Input variables at the
corresponding Location in the Vertex Execution Model
OpEntryPoint must not use components that are not present in the
format
If there is a shader
object bound to the
SHADER_STAGE_TESSELLATION_CONTROL_BIT
stage or the bound graphics pipeline state was created with both a
SHADER_STAGE_TESSELLATION_CONTROL_BIT
stage and the
DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled, and the
current value
of primitiveTopology is
PRIMITIVE_TOPOLOGY_PATCH_LIST,
then
cmdSetPatchControlPointsEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If there is a shader
object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
dynamic state enabled then
cmdSetPrimitiveRestartEnable
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If the
primitiveTopologyListRestart
feature is not enabled, the
input assembly
is
PRIMITIVE_TOPOLOGY_POINT_LIST,
PRIMITIVE_TOPOLOGY_LINE_LIST,
PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
or
PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
there is a shader object bound to the
SHADER_STAGE_VERTEX_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
dynamic state enabled, then
cmdSetPrimitiveRestartEnable
must be FALSE
If the
primitiveTopologyPatchListRestart
feature is not enabled, the
input assembly
is
PRIMITIVE_TOPOLOGY_PATCH_LIST,
there is a shader object bound to the
SHADER_STAGE_TESSELLATION_CONTROL_BIT
stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
dynamic state enabled then
cmdSetPrimitiveRestartEnable
must be FALSE
The bound graphics
pipeline must not have been created with the
PipelineShaderStageCreateInfo::stage
member of any element of
GraphicsPipelineCreateInfo::pStages
set to
SHADER_STAGE_TASK_BIT_EXT
or
SHADER_STAGE_MESH_BIT_EXT
There must be no
shader object bound to either of the
SHADER_STAGE_TASK_BIT_EXT
or
SHADER_STAGE_MESH_BIT_EXT
stages
If a shader object
is bound to the
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage or a graphics pipeline is bound which was created with both a
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage and the
DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
dynamic state enabled, then
cmdSetTessellationDomainOriginEXT
must have been called and not subsequently
invalidated
in the current command buffer prior to this drawing command
If a
shader is bound to both the
SHADER_STAGE_TESSELLATION_CONTROL_BIT
and
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
stages, and if both stages contain an OpExecutionMode instruction
specifying the type of subdivision, they must be the same
If a
shader is bound to both the
SHADER_STAGE_TESSELLATION_CONTROL_BIT
and
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
stages, and if both stages contain an OpExecutionMode instruction
specifying the orientation of triangles, they must be the same
If a
shader is bound to both the
SHADER_STAGE_TESSELLATION_CONTROL_BIT
and
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
stages, and if both stages contain an OpExecutionMode instruction
specifying the segment spacing, they must be the same
If a
shader is bound to both the
SHADER_STAGE_TESSELLATION_CONTROL_BIT
and
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
stages, and if both stages contain an OpExecutionMode instruction
specifying the output patch size, they must be the same
If the bound
graphics pipeline state was created with
PipelineVertexInputDivisorStateCreateInfo
in the pNext chain of
GraphicsPipelineCreateInfo::pVertexInputState,
any member of
PipelineVertexInputDivisorStateCreateInfo::pVertexBindingDivisors
has a value other than 1 in divisor, and
PhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
is FALSE, then firstInstance
must be 0
If
shader objects
are used for drawing or the bound graphics pipeline state was
created with the
DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, any member of the
pVertexBindingDescriptions parameter to the
cmdSetVertexInputEXT
call that sets this dynamic state has a value other than 1 in
divisor, and
PhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance
is FALSE, then firstInstance
must be 0
counterOffset must be a multiple of 4
PhysicalDeviceTransformFeedbackFeaturesEXT::transformFeedback
must be enabled
The
implementation must support
PhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackDraw
vertexStride must be greater than 0 and less than or equal to
PhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackBufferDataStride
vertexStride must be a multiple of 4
commandBuffer must not be a protected command buffer
If
counterBuffer is non-sparse then it must be bound completely and
contiguously to a single DeviceMemory object
counterBuffer must have been created with the
BUFFER_USAGE_INDIRECT_BUFFER_BIT
usage flag set
counterBufferOffset must be a multiple of 4