// Copyright 2019-2024 The Khronos Group Inc. // // SPDX-License-Identifier: CC-BY-4.0 // Common Valid Usage // Common to all drawing commands include::{chapters}/commonvalidity/draw_dispatch_common.adoc[] * [[VUID-{refpage}-renderPass-02684]] The current render pass must: be <> with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo structure specified when creating the sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS * [[VUID-{refpage}-subpass-02685]] The subpass index of the current render pass must: be equal to the pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure specified when creating the sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS * [[VUID-{refpage}-None-07748]] If any shader statically accesses an input attachment, a valid descriptor must: be bound to the pipeline via a descriptor set * [[VUID-{refpage}-OpTypeImage-07468]] If any shader executed by this pipeline accesses an code:OpTypeImage variable with a code:Dim operand of code:SubpassData, it must: be decorated with an code:InputAttachmentIndex that corresponds to a valid input attachment in the current subpass * [[VUID-{refpage}-None-07469]] Input attachment views accessed in a subpass must: be created with the same elink:VkFormat as the corresponding subpass definition, and be created with a slink:VkImageView that is compatible with the attachment referenced by the subpass' pname:pInputAttachments[code:InputAttachmentIndex] in the currently bound slink:VkFramebuffer as specified by <> * [[VUID-{refpage}-None-06537]] 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 * [[VUID-{refpage}-None-09000]] If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, ifdef::VK_EXT_attachment_feedback_loop_layout[] it is not in the ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout, and ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] either: ** {empty} endif::VK_EXT_attachment_feedback_loop_dynamic_state[] the ename:VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT is set on the currently bound pipeline ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] or ** the last call to flink:vkCmdSetAttachmentFeedbackLoopEnableEXT included ename:VK_IMAGE_ASPECT_COLOR_BIT and ifdef::VK_EXT_shader_object[] *** there is no currently bound graphics pipeline or endif::VK_EXT_shader_object[] *** the currently bound graphics pipeline was created with ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT endif::VK_EXT_attachment_feedback_loop_dynamic_state[] endif::VK_EXT_attachment_feedback_loop_layout[] it must: not be accessed in any way other than as an attachment by this command * [[VUID-{refpage}-None-09001]] If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, ifdef::VK_EXT_attachment_feedback_loop_layout[] it is not in the ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout, and ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] either: ** {empty} endif::VK_EXT_attachment_feedback_loop_dynamic_state[] the ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT is set on the currently bound pipeline ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] or ** the last call to flink:vkCmdSetAttachmentFeedbackLoopEnableEXT included ename:VK_IMAGE_ASPECT_DEPTH_BIT and ifdef::VK_EXT_shader_object[] *** there is no currently bound graphics pipeline or endif::VK_EXT_shader_object[] *** the currently bound graphics pipeline was created with ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT endif::VK_EXT_attachment_feedback_loop_dynamic_state[] endif::VK_EXT_attachment_feedback_loop_layout[] it must: not be accessed in any way other than as an attachment by this command * [[VUID-{refpage}-None-09002]] If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, ifdef::VK_EXT_attachment_feedback_loop_layout[] it is not in the ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout, and ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] either: ** {empty} endif::VK_EXT_attachment_feedback_loop_dynamic_state[] the ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT is set on the currently bound pipeline ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] or ** the last call to flink:vkCmdSetAttachmentFeedbackLoopEnableEXT included ename:VK_IMAGE_ASPECT_STENCIL_BIT and ifdef::VK_EXT_shader_object[] *** there is no currently bound graphics pipeline or endif::VK_EXT_shader_object[] *** the currently bound graphics pipeline was created with ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT endif::VK_EXT_attachment_feedback_loop_dynamic_state[] endif::VK_EXT_attachment_feedback_loop_layout[] it must: not be accessed in any way other than as an attachment by this command ifdef::VK_EXT_attachment_feedback_loop_layout[] * [[VUID-{refpage}-None-09003]] 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 endif::VK_EXT_attachment_feedback_loop_layout[] * [[VUID-{refpage}-None-06539]] If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command must: not write to that image subresource as an attachment * [[VUID-{refpage}-None-06886]] If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <> must: be disabled * [[VUID-{refpage}-None-06887]] If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back pname:writeMask are not zero, and stencil test is enabled, <> must: be ename:VK_STENCIL_OP_KEEP * [[VUID-{refpage}-None-07831]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then flink:vkCmdSetViewport must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-07832]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then flink:vkCmdSetScissor must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-07833]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then flink:vkCmdSetLineWidth must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08617]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetPolygonModeEXT in the current command buffer set pname:polygonMode to ename:VK_POLYGON_MODE_LINE, flink:vkCmdSetLineWidth must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08618]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetPrimitiveTopology in the current command buffer set pname:primitiveTopology to any line topology, flink:vkCmdSetLineWidth must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08619]] If a shader object that outputs line primitives is bound to the ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, flink:vkCmdSetLineWidth must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07834]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then flink:vkCmdSetDepthBias ifdef::VK_EXT_depth_bias_control[] or flink:vkCmdSetDepthBias2EXT endif::VK_EXT_depth_bias_control[] must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08620]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetDepthBiasEnable in the current command buffer set pname:depthBiasEnable to ename:VK_TRUE, flink:vkCmdSetDepthBias ifdef::VK_EXT_depth_bias_control[] or flink:vkCmdSetDepthBias2EXT endif::VK_EXT_depth_bias_control[] must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07835]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then flink:vkCmdSetBlendConstants must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08621]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetColorBlendEnableEXT in the current command buffer set any element of pname:pColorBlendEnables to ename:VK_TRUE, and the most recent call to flink:vkCmdSetColorBlendEquationEXT in the current command buffer set the same element of pname:pColorBlendEquations to a sname:VkColorBlendEquationEXT structure with any elink:VkBlendFactor member with a value of ename:VK_BLEND_FACTOR_CONSTANT_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, ename:VK_BLEND_FACTOR_CONSTANT_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, flink:vkCmdSetBlendConstants must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07836]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current pname:depthBoundsTestEnable state is ename:VK_TRUE, then flink:vkCmdSetDepthBounds must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08622]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetDepthBoundsTestEnable in the current command buffer set pname:depthBoundsTestEnable to ename:VK_TRUE, then flink:vkCmdSetDepthBounds must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07837]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current pname:stencilTestEnable state is ename:VK_TRUE, then flink:vkCmdSetStencilCompareMask must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08623]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetStencilTestEnable in the current command buffer set pname:stencilTestEnable to ename:VK_TRUE, flink:vkCmdSetStencilCompareMask must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07838]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current pname:stencilTestEnable state is ename:VK_TRUE, then flink:vkCmdSetStencilWriteMask must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08624]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetStencilTestEnable in the current command buffer set pname:stencilTestEnable to ename:VK_TRUE, flink:vkCmdSetStencilWriteMask must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07839]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current pname:stencilTestEnable state is ename:VK_TRUE, then flink:vkCmdSetStencilReference must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08625]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetStencilTestEnable in the current command buffer set pname:stencilTestEnable to ename:VK_TRUE, flink:vkCmdSetStencilReference must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_VERSION_1_1,VK_KHR_multiview[] * [[VUID-{refpage}-maxMultiviewInstanceIndex-02688]] If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must: be less than or equal to slink:VkPhysicalDeviceMultiviewProperties::pname:maxMultiviewInstanceIndex endif::VK_VERSION_1_1,VK_KHR_multiview[] ifdef::VK_EXT_sample_locations[] * [[VUID-{refpage}-sampleLocationsEnable-02689]] If the bound graphics pipeline was created with slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable set to ename:VK_TRUE and the current subpass has a depth/stencil attachment, then that attachment must: have been created with the ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set * [[VUID-{refpage}-None-06666]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then flink:vkCmdSetSampleLocationsEXT must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08626]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetSampleLocationsEnableEXT in the current command buffer set pname:sampleLocationsEnable to ename:VK_TRUE, then flink:vkCmdSetSampleLocationsEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_sample_locations[] ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] * [[VUID-{refpage}-None-07840]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then flink:vkCmdSetCullMode must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08627]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetCullMode must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07841]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then flink:vkCmdSetFrontFace must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08628]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetFrontFace must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07843]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then flink:vkCmdSetDepthTestEnable must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08629]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetDepthTestEnable must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07844]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then flink:vkCmdSetDepthWriteEnable must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08630]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetDepthWriteEnable must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07845]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then flink:vkCmdSetDepthCompareOp must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08631]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetDepthTestEnable in the current command buffer set pname:depthTestEnable to ename:VK_TRUE, then flink:vkCmdSetDepthCompareOp must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07846]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then flink:vkCmdSetDepthBoundsTestEnable must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08632]] If a shader object is bound to any graphics stage, and the <> feature is enabled, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then the flink:vkCmdSetDepthBoundsTestEnable must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07847]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then flink:vkCmdSetStencilTestEnable must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08633]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetStencilTestEnable must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07848]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_STENCIL_OP dynamic state enabled then flink:vkCmdSetStencilOp must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08634]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetStencilTestEnable in the current command buffer set pname:stencilTestEnable to ename:VK_TRUE, then flink:vkCmdSetStencilOp must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-viewportCount-03417]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then flink:vkCmdSetViewportWithCount must: have been called in the current command buffer prior to this drawing command, and the pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: match the sname:VkPipelineViewportStateCreateInfo::pname:scissorCount of the pipeline * [[VUID-{refpage}-scissorCount-03418]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then flink:vkCmdSetScissorWithCount must: have been called in the current command buffer prior to this drawing command, and the pname:scissorCount parameter of fname:vkCmdSetScissorWithCount must: match the sname:VkPipelineViewportStateCreateInfo::pname:viewportCount of the pipeline * [[VUID-{refpage}-viewportCount-03419]] If the bound graphics pipeline state was created with both the ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT and ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both flink:vkCmdSetViewportWithCount and flink:vkCmdSetScissorWithCount must: have been called in the current command buffer prior to this drawing command, and the pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: match the pname:scissorCount parameter of fname:vkCmdSetScissorWithCount ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08635]] If a shader object is bound to any graphics stage, then both flink:vkCmdSetViewportWithCount and flink:vkCmdSetScissorWithCount must: have been called in the current command buffer prior to this drawing command, and the pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: match the pname:scissorCount parameter of fname:vkCmdSetScissorWithCount endif::VK_EXT_shader_object[] ifdef::VK_NV_clip_space_w_scaling[] * [[VUID-{refpage}-viewportCount-04137]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, then the bound graphics pipeline must: have been created with slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:viewportCount greater or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount * [[VUID-{refpage}-viewportCount-04138]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic states enabled then the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWScalingNV must: be greater than or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-09232]] If the `apiext:VK_NV_clip_space_w_scaling` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetViewportWScalingEnableNV in the current command buffer set pname:viewportWScalingEnable to ename:VK_TRUE, then flink:vkCmdSetViewportWScalingNV must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08636]] If the `apiext:VK_NV_clip_space_w_scaling` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetViewportWScalingEnableNV in the current command buffer set pname:viewportWScalingEnable to ename:VK_TRUE, then the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWScalingNV must: be greater than or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount endif::VK_EXT_shader_object[] endif::VK_NV_clip_space_w_scaling[] ifdef::VK_NV_shading_rate_image[] * [[VUID-{refpage}-viewportCount-04139]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic state enabled, then the bound graphics pipeline must: have been created with slink:VkPipelineViewportShadingRateImageStateCreateInfoNV::pname:viewportCount greater or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount * [[VUID-{refpage}-viewportCount-04140]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic states enabled then the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportShadingRatePaletteNV must: be greater than or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-shadingRateImage-09233]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetCoarseSampleOrderNV must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-shadingRateImage-09234]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetShadingRateImageEnableNV in the current command buffer set pname:shadingRateImageEnable to ename:VK_TRUE, then flink:vkCmdSetViewportShadingRatePaletteNV must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08637]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetShadingRateImageEnableNV in the current command buffer set pname:shadingRateImageEnable to ename:VK_TRUE, then the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportShadingRatePaletteNV must: be greater than or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount endif::VK_EXT_shader_object[] endif::VK_NV_shading_rate_image[] ifdef::VK_NV_viewport_swizzle[] * [[VUID-{refpage}-VkPipelineVieportCreateInfo-04141]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a slink:VkPipelineViewportSwizzleStateCreateInfoNV structure chained from slink:VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must: have been created with slink:VkPipelineViewportSwizzleStateCreateInfoNV::pname:viewportCount greater or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount endif::VK_NV_viewport_swizzle[] ifdef::VK_NV_scissor_exclusive[] * [[VUID-{refpage}-VkPipelineVieportCreateInfo-04142]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from slink:VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must: have been created with slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV::pname:exclusiveScissorCount greater or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount * [[VUID-{refpage}-None-07878]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV dynamic state enabled then flink:vkCmdSetExclusiveScissorEnableNV must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-07879]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV dynamic state enabled then flink:vkCmdSetExclusiveScissorNV must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-exclusiveScissor-09235]] If the <> feature is enabled, and a shader object is bound to any graphics stage, then flink:vkCmdSetExclusiveScissorEnableNV must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08638]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pname:pExclusiveScissorEnables to ename:VK_TRUE, then flink:vkCmdSetExclusiveScissorNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_scissor_exclusive[] endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] * [[VUID-{refpage}-None-04876]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled then flink:vkCmdSetRasterizerDiscardEnable must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08639]] If a shader object is bound to any graphics stage, then flink:vkCmdSetRasterizerDiscardEnable must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-04877]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled then flink:vkCmdSetDepthBiasEnable must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08640]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetDepthBiasEnable must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state2[] * [[VUID-{refpage}-logicOp-04878]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT dynamic state enabled then flink:vkCmdSetLogicOpEXT must: have been called in the current command buffer prior to this drawing command and the pname:logicOp must: be a valid elink:VkLogicOp value ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08641]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetLogicOpEnableEXT set pname:logicOpEnable to ename:VK_TRUE, then flink:vkCmdSetLogicOpEXT must: have been called in the current command buffer prior to this drawing command and the pname:logicOp must: be a valid elink:VkLogicOp value endif::VK_EXT_shader_object[] endif::VK_EXT_extended_dynamic_state2[] endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] ifdef::VK_KHR_fragment_shading_rate[] ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] * [[VUID-{refpage}-primitiveFragmentShadingRateWithMultipleViewports-04552]] If the <> limit is not supported, the bound graphics pipeline was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the code:PrimitiveShadingRateKHR built-in, then flink:vkCmdSetViewportWithCount must: have been called in the current command buffer prior to this drawing command, and the pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: be `1` ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-primitiveFragmentShadingRateWithMultipleViewports-08642]] If the <> limit is not supported, and any shader object bound to a graphics stage writes to the code:PrimitiveShadingRateKHR built-in, then flink:vkCmdSetViewportWithCount must: have been called in the current command buffer prior to this drawing command, and the pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: be `1` endif::VK_EXT_shader_object[] endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] endif::VK_KHR_fragment_shading_rate[] * [[VUID-{refpage}-blendEnable-04727]] If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's <> do not contain ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the pname:blendEnable member of the corresponding element of the pname:pAttachments member of pname:pColorBlendState must: be ename:VK_FALSE ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08643]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then for each color attachment in the render pass, if the corresponding image view's <> do not contain ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pname:pColorBlendEnables in the most recent call to fname:vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must: have been ename:VK_FALSE endif::VK_EXT_shader_object[] * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]] If rasterization is not disabled in the bound graphics pipeline, ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[] and none of the following is enabled: ifdef::VK_AMD_mixed_attachment_samples[] ** the `apiext:VK_AMD_mixed_attachment_samples` extension endif::VK_AMD_mixed_attachment_samples[] ifdef::VK_NV_framebuffer_mixed_samples[] ** the `apiext:VK_NV_framebuffer_mixed_samples` extension endif::VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_multisampled_render_to_single_sampled[] ** the <> feature endif::VK_EXT_multisampled_render_to_single_sampled[] endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[] + then pname:rasterizationSamples for the currently bound graphics pipeline must: be the same as the current subpass color and/or depth/stencil attachments ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08644]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[] and none of the following is enabled: ifdef::VK_AMD_mixed_attachment_samples[] ** the `apiext:VK_AMD_mixed_attachment_samples` extension endif::VK_AMD_mixed_attachment_samples[] ifdef::VK_NV_framebuffer_mixed_samples[] ** the `apiext:VK_NV_framebuffer_mixed_samples` extension endif::VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_multisampled_render_to_single_sampled[] ** the <> feature endif::VK_EXT_multisampled_render_to_single_sampled[] endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[] + then the most recent call to flink:vkCmdSetRasterizationSamplesEXT in the current command buffer must: have set pname:rasterizationSamples to be the same as the number of samples for the current render pass color and/or depth/stencil attachments endif::VK_EXT_shader_object[] ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08876]] If a shader object is bound to any graphics stage, the current render pass instance must: have been begun with flink:vkCmdBeginRendering endif::VK_EXT_shader_object[] * [[VUID-{refpage}-imageView-06172]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the pname:imageView member of pname:pDepthAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout member of pname:pDepthAttachment is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must: not write any values to the depth attachment * [[VUID-{refpage}-imageView-06173]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the pname:imageView member of pname:pStencilAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout member of pname:pStencilAttachment is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must: not write any values to the stencil attachment ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[] * [[VUID-{refpage}-imageView-06174]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the pname:imageView member of pname:pDepthAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout member of pname:pDepthAttachment is ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must: not write any values to the depth attachment * [[VUID-{refpage}-imageView-06175]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the pname:imageView member of pname:pStencilAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout member of pname:pStencilAttachment is ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, this command must: not write any values to the stencil attachment endif::VK_VERSION_1_1,VK_KHR_maintenance2[] ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] * [[VUID-{refpage}-imageView-06176]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the pname:imageView member of pname:pDepthAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout member of pname:pDepthAttachment is ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, this command must: not write any values to the depth attachment * [[VUID-{refpage}-imageView-06177]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the pname:imageView member of pname:pStencilAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout member of pname:pStencilAttachment is ename:VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, this command must: not write any values to the stencil attachment endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] * [[VUID-{refpage}-viewMask-06178]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the currently bound graphics pipeline must: have been created with a slink:VkPipelineRenderingCreateInfo::pname:viewMask equal to slink:VkRenderingInfo::pname:viewMask * [[VUID-{refpage}-colorAttachmentCount-06179]] If ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled and endif::VK_EXT_dynamic_rendering_unused_attachments[] the current render pass instance was begun with flink:vkCmdBeginRendering, the currently bound graphics pipeline must: have been created with a slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount equal to slink:VkRenderingInfo::pname:colorAttachmentCount * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08910]] If ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled, and endif::VK_EXT_dynamic_rendering_unused_attachments[] the current render pass instance was begun with flink:vkCmdBeginRendering and slink:VkRenderingInfo::pname:colorAttachmentCount greater than `0`, then each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been created with a elink:VkFormat equal to the corresponding element of slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used to create the currently bound graphics pipeline * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08912]] If ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled, and endif::VK_EXT_dynamic_rendering_unused_attachments[] the current render pass instance was begun with flink:vkCmdBeginRendering and slink:VkRenderingInfo::pname:colorAttachmentCount greater than `0`, then each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:imageView equal to dlink:VK_NULL_HANDLE must: have the corresponding element of slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used to create the currently bound pipeline equal to ename:VK_FORMAT_UNDEFINED ifdef::VK_EXT_dynamic_rendering_unused_attachments[] * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08911]] If the <> feature is enabled, and the current render pass instance was begun with flink:vkCmdBeginRendering and slink:VkRenderingInfo::pname:colorAttachmentCount greater than `0`, then each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been created with a elink:VkFormat equal to the corresponding element of slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used to create the currently bound graphics pipeline, or the corresponding element of slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats, if it exists, must: be ename:VK_FORMAT_UNDEFINED endif::VK_EXT_dynamic_rendering_unused_attachments[] ifdef::VK_ANDROID_external_format_resolve[] * [[VUID-{refpage}-colorAttachmentCount-09362]] If the current render pass instance was begun with flink:vkCmdBeginRendering, with a slink:VkRenderingInfo::pname:colorAttachmentCount equal to `1`, ifdef::VK_EXT_shader_object[] there is no shader object bound to any graphics stage, endif::VK_EXT_shader_object[] and a color attachment with a resolve mode of ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:resolveImageView not equal to dlink:VK_NULL_HANDLE must: have been created with an image created with a slink:VkExternalFormatANDROID::pname:externalFormat value equal to the slink:VkExternalFormatANDROID::pname:externalFormat value used to create the currently bound graphics pipeline * [[VUID-{refpage}-None-09363]] If ifdef::VK_EXT_shader_object[] there is no shader object bound to any graphics stage, endif::VK_EXT_shader_object[] the current render pass instance was begun with flink:vkCmdBeginRendering and a slink:VkRenderingInfo::pname:colorAttachmentCount equal to `1`, and a color attachment with a resolve mode of ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been created with an image created with a slink:VkExternalFormatANDROID::pname:externalFormat value equal to the slink:VkExternalFormatANDROID::pname:externalFormat value used to create the currently bound graphics pipeline ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-09364]] If the current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_shader_object[] there is no shader object bound to any graphics stage, endif::VK_EXT_shader_object[] and the currently bound graphics pipeline was created with a non-zero slink:VkExternalFormatANDROID::pname:externalFormat value and with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then flink:vkCmdSetColorBlendEnableEXT must: have set the blend enable to ename:VK_FALSE prior to this drawing command * [[VUID-{refpage}-None-09365]] If the current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_shader_object[] there is no shader object bound to any graphics stage, endif::VK_EXT_shader_object[] and the currently bound graphics pipeline was created with a non-zero slink:VkExternalFormatANDROID::pname:externalFormat value and with the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then flink:vkCmdSetRasterizationSamplesEXT must: have set pname:rasterizationSamples to ename:VK_SAMPLE_COUNT_1_BIT prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-09366]] If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then flink:vkCmdSetColorBlendEnableEXT must: have set blend enable to ename:VK_FALSE prior to this drawing command * [[VUID-{refpage}-rasterizationSamples-09367]] If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then flink:vkCmdSetRasterizationSamplesEXT must: have set pname:rasterizationSamples to ename:VK_SAMPLE_COUNT_1_BIT prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_KHR_fragment_shading_rate[] * [[VUID-{refpage}-None-09368]] If the current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_shader_object[] there is no shader object bound to any graphics stage, endif::VK_EXT_shader_object[] and the currently bound graphics pipeline was created with a non-zero slink:VkExternalFormatANDROID::pname:externalFormat value and with the ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then flink:vkCmdSetFragmentShadingRateKHR must: have set pname:pFragmentSize->width to `1` prior to this drawing command * [[VUID-{refpage}-None-09369]] If the current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_shader_object[] there is no shader object bound to any graphics stage, endif::VK_EXT_shader_object[] and the currently bound graphics pipeline was created with a non-zero slink:VkExternalFormatANDROID::pname:externalFormat value and with the ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then flink:vkCmdSetFragmentShadingRateKHR must: have set pname:pFragmentSize->height to `1` prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-pFragmentSize-09370]] If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then flink:vkCmdSetFragmentShadingRateKHR must: have set pname:pFragmentSize->width to `1` prior to this drawing command * [[VUID-{refpage}-pFragmentSize-09371]] If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then flink:vkCmdSetFragmentShadingRateKHR must: have set pname:pFragmentSize->height to `1` prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_KHR_fragment_shading_rate[] endif::VK_ANDROID_external_format_resolve[] ifdef::VK_EXT_color_write_enable[] * [[VUID-{refpage}-None-07749]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then flink:vkCmdSetColorWriteEnableEXT must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08646]] If the <> feature is enabled on the device, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetColorWriteEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-attachmentCount-07750]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the pname:attachmentCount parameter of fname:vkCmdSetColorWriteEnableEXT must: be greater than or equal to the sname:VkPipelineColorBlendStateCreateInfo::pname:attachmentCount of the currently bound graphics pipeline ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08647]] If the <> feature is enabled on the device, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then the pname:attachmentCount parameter of most recent call to fname:vkCmdSetColorWriteEnableEXT in the current command buffer must: be greater than or equal to the number of color attachments in the current render pass instance endif::VK_EXT_shader_object[] endif::VK_EXT_color_write_enable[] ifdef::VK_EXT_discard_rectangles[] * [[VUID-{refpage}-None-07751]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then flink:vkCmdSetDiscardRectangleEXT must: have been called in the current command buffer prior to this drawing command for each discard rectangle in slink:VkPipelineDiscardRectangleStateCreateInfoEXT::pname:discardRectangleCount * [[VUID-{refpage}-None-07880]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT dynamic state enabled then flink:vkCmdSetDiscardRectangleEnableEXT must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-rasterizerDiscardEnable-09236]] If the `apiext:VK_EXT_discard_rectangles` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetDiscardRectangleEnableEXT in the current command buffer set pname:discardRectangleEnable to ename:VK_TRUE, then flink:vkCmdSetDiscardRectangleEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08648]] If the `apiext:VK_EXT_discard_rectangles` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetDiscardRectangleEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] * [[VUID-{refpage}-None-07881]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT dynamic state enabled then flink:vkCmdSetDiscardRectangleModeEXT must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08649]] If the `apiext:VK_EXT_discard_rectangles` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetDiscardRectangleEnableEXT in the current command buffer set pname:discardRectangleEnable to ename:VK_TRUE, then flink:vkCmdSetDiscardRectangleModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_discard_rectangles[] * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08913]] If the current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled, endif::VK_EXT_dynamic_rendering_unused_attachments[] and slink:VkRenderingInfo::pname:pDepthAttachment->imageView was dlink:VK_NULL_HANDLE, the value of slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to create the currently bound graphics pipeline must: be equal to ename:VK_FORMAT_UNDEFINED * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08914]] If current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled, endif::VK_EXT_dynamic_rendering_unused_attachments[] and slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not dlink:VK_NULL_HANDLE, the value of slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to create the currently bound graphics pipeline must: be equal to the elink:VkFormat used to create slink:VkRenderingInfo::pname:pDepthAttachment->imageView ifdef::VK_EXT_dynamic_rendering_unused_attachments[] * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08915]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the <> feature is enabled, slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not dlink:VK_NULL_HANDLE, and the value of slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to create the currently bound graphics pipeline was not equal to the elink:VkFormat used to create slink:VkRenderingInfo::pname:pDepthAttachment->imageView, the value of the format must: be ename:VK_FORMAT_UNDEFINED endif::VK_EXT_dynamic_rendering_unused_attachments[] * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08916]] If the current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled, endif::VK_EXT_dynamic_rendering_unused_attachments[] and slink:VkRenderingInfo::pname:pStencilAttachment->imageView was dlink:VK_NULL_HANDLE, the value of slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used to create the currently bound graphics pipeline must: be equal to ename:VK_FORMAT_UNDEFINED * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08917]] If current render pass instance was begun with flink:vkCmdBeginRendering, ifdef::VK_EXT_dynamic_rendering_unused_attachments[] the <> feature is not enabled, endif::VK_EXT_dynamic_rendering_unused_attachments[] and slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not dlink:VK_NULL_HANDLE, the value of slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used to create the currently bound graphics pipeline must: be equal to the elink:VkFormat used to create slink:VkRenderingInfo::pname:pStencilAttachment->imageView ifdef::VK_EXT_dynamic_rendering_unused_attachments[] * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08918]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the <> feature is enabled, slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not dlink:VK_NULL_HANDLE, and the value of slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used to create the currently bound graphics pipeline was not equal to the elink:VkFormat used to create slink:VkRenderingInfo::pname:pStencilAttachment->imageView, the value of the format must: be ename:VK_FORMAT_UNDEFINED endif::VK_EXT_dynamic_rendering_unused_attachments[] ifdef::VK_KHR_fragment_shading_rate[] * [[VUID-{refpage}-imageView-06183]] If the current render pass instance was begun with flink:vkCmdBeginRendering and slink:VkRenderingFragmentShadingRateAttachmentInfoKHR::pname:imageView was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline must: have been created with ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR endif::VK_KHR_fragment_shading_rate[] ifdef::VK_EXT_fragment_density_map[] * [[VUID-{refpage}-imageView-06184]] If the current render pass instance was begun with flink:vkCmdBeginRendering and slink:VkRenderingFragmentDensityMapAttachmentInfoEXT::pname:imageView was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline must: have been created with ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT endif::VK_EXT_fragment_density_map[] ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] * [[VUID-{refpage}-colorAttachmentCount-06185]] If the currently bound pipeline was created with a slink:VkAttachmentSampleCountInfoAMD or slink:VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with flink:vkCmdBeginRendering with a slink:VkRenderingInfo::pname:colorAttachmentCount parameter greater than `0`, then each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been created with a sample count equal to the corresponding element of the pname:pColorAttachmentSamples member of slink:VkAttachmentSampleCountInfoAMD or slink:VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline * [[VUID-{refpage}-pDepthAttachment-06186]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the currently bound pipeline was created with a slink:VkAttachmentSampleCountInfoAMD or slink:VkAttachmentSampleCountInfoNV structure, and slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not dlink:VK_NULL_HANDLE, the value of the pname:depthStencilAttachmentSamples member of slink:VkAttachmentSampleCountInfoAMD or slink:VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must: be equal to the sample count used to create slink:VkRenderingInfo::pname:pDepthAttachment->imageView * [[VUID-{refpage}-pStencilAttachment-06187]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the currently bound pipeline was created with a slink:VkAttachmentSampleCountInfoAMD or slink:VkAttachmentSampleCountInfoNV structure, and slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not dlink:VK_NULL_HANDLE, the value of the pname:depthStencilAttachmentSamples member of slink:VkAttachmentSampleCountInfoAMD or slink:VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must: be equal to the sample count used to create slink:VkRenderingInfo::pname:pStencilAttachment->imageView endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] * [[VUID-{refpage}-multisampledRenderToSingleSampled-07285]] If ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] the currently bound pipeline was created without a ifdef::VK_AMD_mixed_attachment_samples[] slink:VkAttachmentSampleCountInfoAMD endif::VK_AMD_mixed_attachment_samples[] ifdef::VK_AMD_mixed_attachment_samples+VK_NV_framebuffer_mixed_samples[or] ifdef::VK_NV_framebuffer_mixed_samples[] slink:VkAttachmentSampleCountInfoNV endif::VK_NV_framebuffer_mixed_samples[] structure, and endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_multisampled_render_to_single_sampled[] the <> feature is not enabled, and endif::VK_EXT_multisampled_render_to_single_sampled[] the current render pass instance was begun with flink:vkCmdBeginRendering with a slink:VkRenderingInfo::pname:colorAttachmentCount parameter greater than `0`, then each element of the slink:VkRenderingInfo::pname:pColorAttachments array with a pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been created with a sample count equal to the value of pname:rasterizationSamples for the currently bound graphics pipeline * [[VUID-{refpage}-multisampledRenderToSingleSampled-07286]] If ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] the currently bound pipeline was created without a ifdef::VK_AMD_mixed_attachment_samples[] slink:VkAttachmentSampleCountInfoAMD endif::VK_AMD_mixed_attachment_samples[] ifdef::VK_AMD_mixed_attachment_samples+VK_NV_framebuffer_mixed_samples[or] ifdef::VK_NV_framebuffer_mixed_samples[] slink:VkAttachmentSampleCountInfoNV endif::VK_NV_framebuffer_mixed_samples[] structure, and endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_multisampled_render_to_single_sampled[] the <> feature is not enabled, and endif::VK_EXT_multisampled_render_to_single_sampled[] slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not dlink:VK_NULL_HANDLE, the value of pname:rasterizationSamples for the currently bound graphics pipeline must: be equal to the sample count used to create slink:VkRenderingInfo::pname:pDepthAttachment->imageView * [[VUID-{refpage}-multisampledRenderToSingleSampled-07287]] If ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] the currently bound pipeline was created without a ifdef::VK_AMD_mixed_attachment_samples[] slink:VkAttachmentSampleCountInfoAMD endif::VK_AMD_mixed_attachment_samples[] ifdef::VK_AMD_mixed_attachment_samples+VK_NV_framebuffer_mixed_samples[or] ifdef::VK_NV_framebuffer_mixed_samples[] slink:VkAttachmentSampleCountInfoNV endif::VK_NV_framebuffer_mixed_samples[] structure, and endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_multisampled_render_to_single_sampled[] the <> feature is not enabled, and endif::VK_EXT_multisampled_render_to_single_sampled[] slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not dlink:VK_NULL_HANDLE, the value of pname:rasterizationSamples for the currently bound graphics pipeline must: be equal to the sample count used to create slink:VkRenderingInfo::pname:pStencilAttachment->imageView ifdef::VK_EXT_multisampled_render_to_single_sampled[] * [[VUID-{refpage}-pNext-07935]] If this command has been called inside a render pass instance started with flink:vkCmdBeginRendering, and the pname:pNext chain of slink:VkRenderingInfo includes a slink:VkMultisampledRenderToSingleSampledInfoEXT structure with pname:multisampledRenderToSingleSampledEnable equal to ename:VK_TRUE, then the value of pname:rasterizationSamples for the currently bound graphics pipeline must: be equal to slink:VkMultisampledRenderToSingleSampledInfoEXT::pname:rasterizationSamples endif::VK_EXT_multisampled_render_to_single_sampled[] * [[VUID-{refpage}-renderPass-06198]] If the current render pass instance was begun with flink:vkCmdBeginRendering, the currently bound pipeline must: have been created with a slink:VkGraphicsPipelineCreateInfo::pname:renderPass equal to dlink:VK_NULL_HANDLE * [[VUID-{refpage}-pColorAttachments-08963]] If the current render pass instance was begun with flink:vkCmdBeginRendering, 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 slink:VkRenderingInfo::pname:pColorAttachments->imageView was not dlink:VK_NULL_HANDLE, then the corresponding element of slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used to create the pipeline must: not be ename:VK_FORMAT_UNDEFINED * [[VUID-{refpage}-pDepthAttachment-08964]] If the current render pass instance was begun with flink:vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not dlink:VK_NULL_HANDLE, then the slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to create the pipeline must: not be ename:VK_FORMAT_UNDEFINED * [[VUID-{refpage}-pStencilAttachment-08965]] If the current render pass instance was begun with flink:vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not dlink:VK_NULL_HANDLE, then the slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used to create the pipeline must: not be ename:VK_FORMAT_UNDEFINED endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] ifdef::VK_EXT_primitives_generated_query[] * [[VUID-{refpage}-primitivesGeneratedQueryWithRasterizerDiscard-06708]] If the <> feature is not enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, <> must: not be enabled ifdef::VK_EXT_transform_feedback[] * [[VUID-{refpage}-primitivesGeneratedQueryWithNonZeroStreams-06709]] If the <> feature is not enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must: not have been created with a non-zero value in sname:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream endif::VK_EXT_transform_feedback[] endif::VK_EXT_primitives_generated_query[] ifdef::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07619]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then flink:vkCmdSetTessellationDomainOriginEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-07620]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then flink:vkCmdSetDepthClampEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-09237]] If a shader object is bound to the ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then flink:vkCmdSetTessellationDomainOriginEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08650]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetDepthClampEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07621]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then flink:vkCmdSetPolygonModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08651]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetPolygonModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07622]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then flink:vkCmdSetRasterizationSamplesEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08652]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetRasterizationSamplesEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07623]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then flink:vkCmdSetSampleMaskEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08653]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetSampleMaskEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07624]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then flink:vkCmdSetAlphaToCoverageEnableEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-alphaToCoverageEnable-08919]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled, and pname:alphaToCoverageEnable was ename:VK_TRUE in the last call to flink:vkCmdSetAlphaToCoverageEnableEXT, then the <> must: contain a variable for the alpha code:Component word in code:Location 0 at code:Index 0 endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08654]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetAlphaToCoverageEnableEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-alphaToCoverageEnable-08920]] If a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetAlphaToCoverageEnableEXT in the current command buffer set pname:alphaToCoverageEnable to ename:VK_TRUE, then the <> must: contain a variable for the alpha code:Component word in code:Location 0 at code:Index 0 endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07625]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then flink:vkCmdSetAlphaToOneEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08655]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetAlphaToOneEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07626]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then flink:vkCmdSetLogicOpEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08656]] If the <> feature is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetLogicOpEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07627]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then flink:vkCmdSetColorBlendEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08657]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetColorBlendEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07628]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then flink:vkCmdSetColorBlendEquationEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08658]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetColorBlendEnableEXT for any attachment set that attachment's value in pname:pColorBlendEnables to ename:VK_TRUE, then flink:vkCmdSetColorBlendEquationEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07629]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then flink:vkCmdSetColorWriteMaskEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08659]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetColorWriteMaskEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_transform_feedback[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07630]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then flink:vkCmdSetRasterizationStreamEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08660]] If the <> feature is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, then flink:vkCmdSetRasterizationStreamEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_transform_feedback[] ifdef::VK_EXT_conservative_rasterization[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07631]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then flink:vkCmdSetConservativeRasterizationModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08661]] If the `apiext:VK_EXT_conservative_rasterization` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetConservativeRasterizationModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07632]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then flink:vkCmdSetExtraPrimitiveOverestimationSizeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08662]] If the `apiext:VK_EXT_conservative_rasterization` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetConservativeRasterizationModeEXT in the current command buffer set pname:conservativeRasterizationMode to ename:VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then flink:vkCmdSetExtraPrimitiveOverestimationSizeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_conservative_rasterization[] ifdef::VK_EXT_depth_clip_enable[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07633]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then flink:vkCmdSetDepthClipEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08663]] If the <> feature is enabled, and a shader object is bound to any graphics stage, then flink:vkCmdSetDepthClipEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_depth_clip_enable[] ifdef::VK_EXT_sample_locations[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07634]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then flink:vkCmdSetSampleLocationsEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08664]] If the `apiext:VK_EXT_sample_locations` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetSampleLocationsEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_sample_locations[] ifdef::VK_EXT_blend_operation_advanced[] * [[VUID-{refpage}-None-07635]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then flink:vkCmdSetColorBlendAdvancedEXT must: have been called in the current command buffer prior to this drawing command ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-rasterizerDiscardEnable-09416]] If the `apiext:VK_EXT_blend_operation_advanced` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then at least one of flink:vkCmdSetColorBlendEquationEXT and flink:vkCmdSetColorBlendAdvancedEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_blend_operation_advanced[] ifdef::VK_EXT_provoking_vertex[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07636]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then flink:vkCmdSetProvokingVertexModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08665]] If the `apiext:VK_EXT_provoking_vertex` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetProvokingVertexModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_provoking_vertex[] ifdef::VK_EXT_line_rasterization[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07637]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then flink:vkCmdSetLineRasterizationModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08666]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetPolygonModeEXT in the current command buffer set pname:polygonMode to ename:VK_POLYGON_MODE_LINE, then flink:vkCmdSetLineRasterizationModeEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08667]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetPrimitiveTopology in the current command buffer set pname:primitiveTopology to any line topology, then flink:vkCmdSetLineRasterizationModeEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08668]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object that outputs line primitives is bound to the ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetLineRasterizationModeEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07638]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then flink:vkCmdSetLineStippleEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08669]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetPolygonModeEXT in the current command buffer set pname:polygonMode to ename:VK_POLYGON_MODE_LINE, then flink:vkCmdSetLineStippleEnableEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08670]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetPrimitiveTopology in the current command buffer set pname:primitiveTopology to any line topology, then flink:vkCmdSetLineStippleEnableEXT must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08671]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object that outputs line primitives is bound to the ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetLineStippleEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07849]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then flink:vkCmdSetLineStippleEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08672]] If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetLineStippleEnableEXT in the current command buffer set pname:stippledLineEnable to ename:VK_TRUE, then flink:vkCmdSetLineStippleEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_line_rasterization[] ifdef::VK_EXT_depth_clip_control[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07639]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then flink:vkCmdSetDepthClipNegativeOneToOneEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08673]] If the <> feature is enabled, and a shader object is bound to any graphics stage, then flink:vkCmdSetDepthClipNegativeOneToOneEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_EXT_depth_clip_control[] ifdef::VK_NV_clip_space_w_scaling[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07640]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then flink:vkCmdSetViewportWScalingEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08674]] If the `apiext:VK_NV_clip_space_w_scaling` extension is enabled, and a shader object is bound to any graphics stage, then flink:vkCmdSetViewportWScalingEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_clip_space_w_scaling[] ifdef::VK_NV_viewport_swizzle[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07641]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then flink:vkCmdSetViewportSwizzleNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08675]] If the `apiext:VK_NV_viewport_swizzle` extension is enabled, and a shader object is bound to any graphics stage, then flink:vkCmdSetViewportSwizzleNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_viewport_swizzle[] ifdef::VK_NV_fragment_coverage_to_color[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07642]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then flink:vkCmdSetCoverageToColorEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08676]] If the `apiext:VK_NV_fragment_coverage_to_color` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetCoverageToColorEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07643]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then flink:vkCmdSetCoverageToColorLocationNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08677]] If the `apiext:VK_NV_fragment_coverage_to_color` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetCoverageToColorEnableNV in the current command buffer set pname:coverageToColorEnable to ename:VK_TRUE, then flink:vkCmdSetCoverageToColorLocationNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_fragment_coverage_to_color[] ifdef::VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07644]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then flink:vkCmdSetCoverageModulationModeNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08678]] If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetCoverageModulationModeNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07645]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then flink:vkCmdSetCoverageModulationTableEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08679]] If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetCoverageModulationModeNV in the current command buffer set coverageModulationMode to any value other than ename:VK_COVERAGE_MODULATION_MODE_NONE_NV, then flink:vkCmdSetCoverageModulationTableEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07646]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then flink:vkCmdSetCoverageModulationTableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08680]] If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent call to flink:vkCmdSetCoverageModulationTableEnableNV in the current command buffer set pname:coverageModulationTableEnable to ename:VK_TRUE, then flink:vkCmdSetCoverageModulationTableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_framebuffer_mixed_samples[] ifdef::VK_NV_shading_rate_image[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07647]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then flink:vkCmdSetShadingRateImageEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-pipelineFragmentShadingRate-09238]] If the <> feature is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetFragmentShadingRateKHR must: have been called in the current command buffer prior to this drawing command * [[VUID-{refpage}-None-08681]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetShadingRateImageEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_shading_rate_image[] ifdef::VK_NV_representative_fragment_test[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07648]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then flink:vkCmdSetRepresentativeFragmentTestEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08682]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetRepresentativeFragmentTestEnableNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_representative_fragment_test[] ifdef::VK_NV_coverage_reduction_mode[] ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-{refpage}-None-07649]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then flink:vkCmdSetCoverageReductionModeNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_extended_dynamic_state3[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08683]] If the <> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetCoverageReductionModeNV must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_shader_object[] endif::VK_NV_coverage_reduction_mode[] * [[VUID-{refpage}-pColorBlendEnables-07470]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to flink:vkCmdSetColorBlendEnableEXT set pname:pColorBlendEnables for any attachment to ename:VK_TRUE, then for those attachments in the subpass the corresponding image view's <> must: contain ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT * [[VUID-{refpage}-rasterizationSamples-07471]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the pname:rasterizationSamples in the last call to flink:vkCmdSetRasterizationSamplesEXT must: follow the rules for a <> * [[VUID-{refpage}-samples-07472]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the pname:samples parameter in the last call to flink:vkCmdSetSampleMaskEXT must: be greater or equal to the slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples parameter used to create the bound graphics pipeline * [[VUID-{refpage}-samples-07473]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT state and ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, then the pname:samples parameter in the last call to flink:vkCmdSetSampleMaskEXT must: be greater or equal to the pname:rasterizationSamples parameter in the last call to flink:vkCmdSetRasterizationSamplesEXT * [[VUID-{refpage}-rasterizationSamples-07474]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the `apiext:VK_AMD_mixed_attachment_samples` nor the `apiext:VK_NV_framebuffer_mixed_samples` extensions are enabled, then the pname:rasterizationSamples in the last call to flink:vkCmdSetRasterizationSamplesEXT must: be the same as the current subpass color and/or depth/stencil attachments ifdef::VK_EXT_multisampled_render_to_single_sampled[] * [[VUID-{refpage}-None-09211]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, ifdef::VK_EXT_shader_object[] or a shader object is bound to any graphics stage, endif::VK_EXT_shader_object[] and the current render pass instance includes a slink:VkMultisampledRenderToSingleSampledInfoEXT structure with pname:multisampledRenderToSingleSampledEnable equal to ename:VK_TRUE, then the pname:rasterizationSamples in the last call to flink:vkCmdSetRasterizationSamplesEXT must: be the same as the pname:rasterizationSamples member of that structure endif::VK_EXT_multisampled_render_to_single_sampled[] * [[VUID-{refpage}-firstAttachment-07476]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then flink:vkCmdSetColorBlendEnableEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorBlendEnableEXT calls must: specify an enable for all active color attachments in the current subpass ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-rasterizerDiscardEnable-09417]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetColorBlendEnableEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorBlendEnableEXT calls must: specify an enable for all active color attachments in the current subpass endif::VK_EXT_shader_object[] * [[VUID-{refpage}-firstAttachment-07477]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then flink:vkCmdSetColorBlendEquationEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorBlendEquationEXT calls must: specify the blend equations for all active color attachments in the current subpass where blending is enabled ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-rasterizerDiscardEnable-09418]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetColorBlendEquationEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorBlendEquationEXT calls must: specify the blend equations for all active color attachments in the current subpass where blending is enabled endif::VK_EXT_shader_object[] * [[VUID-{refpage}-firstAttachment-07478]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then flink:vkCmdSetColorWriteMaskEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorWriteMaskEXT calls must: specify the color write mask for all active color attachments in the current subpass ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-rasterizerDiscardEnable-09419]] If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetColorWriteMaskEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorWriteMaskEXT calls must: specify the color write mask for all active color attachments in the current subpass endif::VK_EXT_shader_object[] ifdef::VK_EXT_blend_operation_advanced[] * [[VUID-{refpage}-firstAttachment-07479]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then flink:vkCmdSetColorBlendAdvancedEXT must: have been called in the current command buffer prior to this drawing command, and the attachments specified by the pname:firstAttachment and pname:attachmentCount parameters of fname:vkCmdSetColorBlendAdvancedEXT calls must: specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled * [[VUID-{refpage}-advancedBlendMaxColorAttachments-07480]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT and ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic states enabled and the last calls to flink:vkCmdSetColorBlendEnableEXT and flink:vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must: not exceed <> endif::VK_EXT_blend_operation_advanced[] ifdef::VK_EXT_transform_feedback[] * [[VUID-{refpage}-primitivesGeneratedQueryWithNonZeroStreams-07481]] If the <> feature is not enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, and the bound graphics pipeline was created with ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT state enabled, the last call to flink:vkCmdSetRasterizationStreamEXT must: have set the pname:rasterizationStream to zero endif::VK_EXT_transform_feedback[] ifdef::VK_EXT_sample_locations[] * [[VUID-{refpage}-sampleLocationsPerPixel-07482]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the pname:sampleLocationsPerPixel member of pname:pSampleLocationsInfo in the last call to flink:vkCmdSetSampleLocationsEXT must: equal the pname:rasterizationSamples member of the slink:VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with * [[VUID-{refpage}-sampleLocationsPerPixel-07483]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, then the pname:sampleLocationsPerPixel member of pname:pSampleLocationsInfo in the last call to flink:vkCmdSetSampleLocationsEXT must: equal the pname:rasterizationSamples parameter of the last call to flink:vkCmdSetRasterizationSamplesEXT * [[VUID-{refpage}-sampleLocationsEnable-07484]] If ifdef::VK_EXT_shader_object[] a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, or endif::VK_EXT_shader_object[] the bound graphics pipeline was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and pname:sampleLocationsEnable was ename:VK_TRUE in the last call to flink:vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must: have been created with the ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set * [[VUID-{refpage}-sampleLocationsEnable-07485]] If ifdef::VK_EXT_shader_object[] a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, or endif::VK_EXT_shader_object[] the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if pname:sampleLocationsEnable was ename:VK_TRUE in the last call to flink:vkCmdSetSampleLocationsEnableEXT, then the pname:sampleLocationsInfo.sampleLocationGridSize.width in the last call to flink:vkCmdSetSampleLocationsEXT must: evenly divide slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.width as returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a pname:samples parameter equaling pname:rasterizationSamples * [[VUID-{refpage}-sampleLocationsEnable-07486]] If ifdef::VK_EXT_shader_object[] a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, or endif::VK_EXT_shader_object[] the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if pname:sampleLocationsEnable was ename:VK_TRUE in the last call to flink:vkCmdSetSampleLocationsEnableEXT, then the pname:sampleLocationsInfo.sampleLocationGridSize.height in the last call to flink:vkCmdSetSampleLocationsEXT must: evenly divide slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.height as returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a pname:samples parameter equaling pname:rasterizationSamples * [[VUID-{refpage}-sampleLocationsEnable-07487]] If ifdef::VK_EXT_shader_object[] a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, or endif::VK_EXT_shader_object[] the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if pname:sampleLocationsEnable was ename:VK_TRUE in the last call to flink:vkCmdSetSampleLocationsEnableEXT, the fragment shader code must: not statically use the extended instruction code:InterpolateAtSample * [[VUID-{refpage}-sampleLocationsEnable-07936]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, the pname:sampleLocationsEnable member of a slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable in the bound graphics pipeline is ename:VK_TRUE or ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, then, pname:sampleLocationsInfo.sampleLocationGridSize.width must: evenly divide slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.width as returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a pname:samples parameter equaling the value of pname:rasterizationSamples in the last call to flink:vkCmdSetRasterizationSamplesEXT * [[VUID-{refpage}-sampleLocationsEnable-07937]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, the pname:sampleLocationsEnable member of a slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable in the bound graphics pipeline is ename:VK_TRUE or ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, then, pname:sampleLocationsInfo.sampleLocationGridSize.height must: evenly divide slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.height as returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a pname:samples parameter equaling the value of pname:rasterizationSamples in the last call to flink:vkCmdSetRasterizationSamplesEXT * [[VUID-{refpage}-sampleLocationsEnable-07938]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, the pname:sampleLocationsEnable member of a slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable in the bound graphics pipeline is ename:VK_TRUE or ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, then, pname:sampleLocationsInfo.sampleLocationsPerPixel must: equal pname:rasterizationSamples in the last call to flink:vkCmdSetRasterizationSamplesEXT endif::VK_EXT_sample_locations[] ifdef::VK_NV_framebuffer_mixed_samples[] * [[VUID-{refpage}-coverageModulationTableEnable-07488]] If ifdef::VK_EXT_shader_object[] a shader object is bound to any graphics stage or endif::VK_EXT_shader_object[] the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to flink:vkCmdSetCoverageModulationTableEnableNV set pname:coverageModulationTableEnable to ename:VK_TRUE, then the pname:coverageModulationTableCount parameter in the last call to flink:vkCmdSetCoverageModulationTableNV must: equal the current pname:rasterizationSamples divided by the number of color samples in the current subpass * [[VUID-{refpage}-rasterizationSamples-07489]] If the `apiext: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 currently bound pipeline state, then the current pname:rasterizationSamples must: be the same as the sample count of the depth/stencil attachment endif::VK_NV_framebuffer_mixed_samples[] ifdef::VK_NV_fragment_coverage_to_color[] * [[VUID-{refpage}-coverageToColorEnable-07490]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to flink:vkCmdSetCoverageToColorEnableNV set the pname:coverageToColorEnable to ename:VK_TRUE, then the current subpass must: have a color attachment at the location selected by the last call to flink:vkCmdSetCoverageToColorLocationNV pname:coverageToColorLocation, with a elink:VkFormat of ename:VK_FORMAT_R8_UINT, ename:VK_FORMAT_R8_SINT, ename:VK_FORMAT_R16_UINT, ename:VK_FORMAT_R16_SINT, ename:VK_FORMAT_R32_UINT, or ename:VK_FORMAT_R32_SINT ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-rasterizerDiscardEnable-09420]] If the `apiext:VK_NV_fragment_coverage_to_color` extension is enabled, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the last call to flink:vkCmdSetCoverageToColorEnableNV set the pname:coverageToColorEnable to ename:VK_TRUE, then the current subpass must: have a color attachment at the location selected by the last call to flink:vkCmdSetCoverageToColorLocationNV pname:coverageToColorLocation, with a elink:VkFormat of ename:VK_FORMAT_R8_UINT, ename:VK_FORMAT_R8_SINT, ename:VK_FORMAT_R16_UINT, ename:VK_FORMAT_R16_SINT, ename:VK_FORMAT_R32_UINT, or ename:VK_FORMAT_R32_SINT endif::VK_EXT_shader_object[] ifdef::VK_NV_coverage_reduction_mode[] * [[VUID-{refpage}-coverageReductionMode-07491]] If this `apiext:VK_NV_coverage_reduction_mode` extension is enabled, the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode pname:coverageReductionMode, then the current pname:rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must: be a valid combination returned by flink:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV endif::VK_NV_coverage_reduction_mode[] endif::VK_NV_fragment_coverage_to_color[] ifdef::VK_NV_viewport_swizzle[] * [[VUID-{refpage}-viewportCount-07492]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must: have been created with slink:VkPipelineViewportSwizzleStateCreateInfoNV::pname:viewportCount greater or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount * [[VUID-{refpage}-viewportCount-07493]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportSwizzleNV must: be greater than or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount * [[VUID-{refpage}-viewportCount-09421]] If the `apiext:VK_NV_viewport_swizzle` extension is enabled, and a shader object is bound to any graphics stage, then the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportSwizzleNV must: be greater than or equal to the pname:viewportCount parameter in the last call to flink:vkCmdSetViewportWithCount endif::VK_NV_viewport_swizzle[] ifdef::VK_NV_framebuffer_mixed_samples[] * [[VUID-{refpage}-rasterizationSamples-07494]] If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled, and if the current subpass has any color attachments and pname:rasterizationSamples of the last call to flink:vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline pname:sampleShadingEnable must: be ename:VK_FALSE endif::VK_NV_framebuffer_mixed_samples[] ifdef::VK_EXT_line_rasterization[] * [[VUID-{refpage}-stippledLineEnable-07495]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current pname:stippledLineEnable state is ename:VK_TRUE and the current pname:lineRasterizationMode state is ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, then the <> feature must: be enabled * [[VUID-{refpage}-stippledLineEnable-07496]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current pname:stippledLineEnable state is ename:VK_TRUE and the current pname:lineRasterizationMode state is ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, then the <> feature must: be enabled * [[VUID-{refpage}-stippledLineEnable-07497]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current pname:stippledLineEnable state is ename:VK_TRUE and the current pname:lineRasterizationMode state is ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, then the <> feature must: be enabled * [[VUID-{refpage}-stippledLineEnable-07498]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current pname:stippledLineEnable state is ename:VK_TRUE and the current pname:lineRasterizationMode state is ename:VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the <> feature must: be enabled and slink:VkPhysicalDeviceLimits::pname:strictLines must: be ename:VK_TRUE endif::VK_EXT_line_rasterization[] ifdef::VK_EXT_conservative_rasterization[] * [[VUID-{refpage}-conservativePointAndLineRasterization-07499]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, <> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the pname:conservativeRasterizationMode set by the last call to flink:vkCmdSetConservativeRasterizationModeEXT must: be ename:VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT endif::VK_EXT_conservative_rasterization[] endif::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[] ifdef::VK_EXT_mesh_shader[] * [[VUID-{refpage}-stage-07073]] If the currently bound pipeline was created with the slink:VkPipelineShaderStageCreateInfo::pname:stage member of an element of slink:VkGraphicsPipelineCreateInfo::pname:pStages set to ename:VK_SHADER_STAGE_VERTEX_BIT, ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or ename:VK_SHADER_STAGE_GEOMETRY_BIT, then <> must: not be active endif::VK_EXT_mesh_shader[] ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] * [[VUID-{refpage}-None-08877]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT dynamic state flink:vkCmdSetAttachmentFeedbackLoopEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_attachment_feedback_loop_dynamic_state[] ifdef::VK_NV_inherited_viewport_scissor[] * [[VUID-{refpage}-None-07850]] If dynamic state was inherited from slink:VkCommandBufferInheritanceViewportScissorInfoNV, it must: be set in the current command buffer prior to this drawing command endif::VK_NV_inherited_viewport_scissor[] ifdef::VK_EXT_shader_object[] * [[VUID-{refpage}-None-08684]] If there is no bound graphics pipeline, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_VERTEX_BIT * [[VUID-{refpage}-None-08685]] If there is no bound graphics pipeline, and the <> feature is enabled, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT * [[VUID-{refpage}-None-08686]] If there is no bound graphics pipeline, and the <> feature is enabled, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT * [[VUID-{refpage}-None-08687]] If there is no bound graphics pipeline, and the <> feature is enabled, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_GEOMETRY_BIT * [[VUID-{refpage}-None-08688]] If there is no bound graphics pipeline, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_FRAGMENT_BIT ifdef::VK_EXT_mesh_shader[] * [[VUID-{refpage}-None-08689]] If there is no bound graphics pipeline, and the <> feature is enabled, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_TASK_BIT_EXT * [[VUID-{refpage}-None-08690]] If there is no bound graphics pipeline, and the <> feature is enabled, fname:vkCmdBindShadersEXT must: have been called in the current command buffer with pname:pStages with an element of ename:VK_SHADER_STAGE_MESH_BIT_EXT * [[VUID-{refpage}-None-08693]] If there is no bound graphics pipeline, and at least one of the <> and <> features is enabled, one of the ename:VK_SHADER_STAGE_VERTEX_BIT or ename:VK_SHADER_STAGE_MESH_BIT_EXT stages must: have a valid sname:VkShaderEXT bound, and the other must: have no sname:VkShaderEXT bound * [[VUID-{refpage}-None-08694]] If there is no bound graphics pipeline, and both the <> and <> features are enabled, and a valid sname:VkShaderEXT is bound the to the ename:VK_SHADER_STAGE_MESH_BIT_EXT stage, and that sname:VkShaderEXT was created without the ename:VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid sname:VkShaderEXT must: be bound to the ename:VK_SHADER_STAGE_TASK_BIT_EXT stage * [[VUID-{refpage}-None-08695]] If there is no bound graphics pipeline, and both the <> and <> features are enabled, and a valid sname:VkShaderEXT is bound the to the ename:VK_SHADER_STAGE_MESH_BIT_EXT stage, and that sname:VkShaderEXT was created with the ename:VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must: be no sname:VkShaderEXT bound to the ename:VK_SHADER_STAGE_TASK_BIT_EXT stage * [[VUID-{refpage}-None-08696]] If there is no bound graphics pipeline, and a valid sname:VkShaderEXT is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage, there must: be no sname:VkShaderEXT bound to either the ename:VK_SHADER_STAGE_TASK_BIT_EXT stage or the ename:VK_SHADER_STAGE_MESH_BIT_EXT stage endif::VK_EXT_mesh_shader[] * [[VUID-{refpage}-None-08698]] If any graphics shader is bound which was created with the ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same flink:vkCreateShadersEXT call must: also be bound * [[VUID-{refpage}-None-08699]] If any graphics shader is bound which was created with the ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same flink:vkCreateShadersEXT call must: not have any sname:VkShaderEXT bound * [[VUID-{refpage}-None-08878]] All bound graphics shader objects must: have been created with identical or identically defined push constant ranges * [[VUID-{refpage}-None-08879]] All bound graphics shader objects must: have been created with identical or identically defined arrays of descriptor set layouts ifdef::VK_ANDROID_external_format_resolve[] * [[VUID-{refpage}-colorAttachmentCount-09372]] If the current render pass instance was begun with flink:vkCmdBeginRendering and a slink:VkRenderingInfo::pname:colorAttachmentCount equal to `1`, a color attachment with a resolve mode of ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must: not declare the code:DepthReplacing or code:StencilRefReplacingEXT execution modes endif::VK_ANDROID_external_format_resolve[] endif::VK_EXT_shader_object[] ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] * [[VUID-{refpage}-None-08880]] If the <> feature is enabled on the device, and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then flink:vkCmdSetAttachmentFeedbackLoopEnableEXT must: have been called in the current command buffer prior to this drawing command endif::VK_EXT_attachment_feedback_loop_dynamic_state[] ifdef::VK_EXT_shader_tile_image[] * [[VUID-{refpage}-pDynamicStates-08715]] If the bound graphics pipeline state includes a fragment shader stage, was created with ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates, and the fragment shader declares the code:EarlyFragmentTests execution mode and uses code:OpDepthAttachmentReadEXT, the pname:depthWriteEnable parameter in the last call to flink:vkCmdSetDepthWriteEnable must: be ename:VK_FALSE * [[VUID-{refpage}-pDynamicStates-08716]] If the bound graphics pipeline state includes a fragment shader stage, was created with ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates, and the fragment shader declares the code:EarlyFragmentTests execution mode and uses code:OpStencilAttachmentReadEXT, the pname:writeMask parameter in the last call to flink:vkCmdSetStencilWriteMask must: be `0` endif::VK_EXT_shader_tile_image[] ifdef::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[] * [[VUID-{refpage}-None-09116]] If ifdef::VK_EXT_shader_object[] a shader object is bound to any graphics stage endif::VK_EXT_shader_object[] ifdef::VK_EXT_extended_dynamic_state3+VK_EXT_shader_object[or] ifdef::VK_EXT_extended_dynamic_state3[] the currently bound graphics pipeline was created with ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, endif::VK_EXT_extended_dynamic_state3[] and the format of any color attachment is ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, the corresponding element of the pname:pColorWriteMasks parameter of flink:vkCmdSetColorWriteMaskEXT must: either include all of ename:VK_COLOR_COMPONENT_R_BIT, ename:VK_COLOR_COMPONENT_G_BIT, and ename:VK_COLOR_COMPONENT_B_BIT, or none of them endif::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[] * [[VUID-{refpage}-maxFragmentDualSrcAttachments-09239]] If <> is enabled for any attachment where either the source or destination blend factors for that attachment <>, the maximum value of code:Location for any output attachment <> in the code:Fragment {ExecutionModel} executed by this command must: be less than <> // Common Valid Usage