| // Copyright 2019-2021 The Khronos Group Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| // Common Valid Usage |
| // Common to all drawing commands |
| include::draw_dispatch_common.txt[] |
| * [[VUID-{refpage}-renderPass-02684]] |
| The current render pass must: be <<renderpass-compatibility,compatible>> |
| 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-02686]] |
| Every input attachment used by the current subpass must: be bound to the |
| pipeline via a descriptor set |
| * [[VUID-{refpage}-None-04584]] |
| Image subresources used as attachments in the current render pass must: |
| not be accessed in any way other than as an attachment by this command, |
| except for cases involving read-only access to depth/stencil attachments |
| as described in the <<renderpass-attachment-nonattachment, Render Pass>> |
| chapter |
| 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 |
| endif::VK_EXT_sample_locations[] |
| ifdef::VK_EXT_extended_dynamic_state[] |
| * [[VUID-{refpage}-viewportCount-03417]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT dynamic state enabled, |
| but not the ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT dynamic state |
| enabled, then flink:vkCmdSetViewportWithCountEXT must: have been called |
| in the current command buffer prior to this drawing command, and the |
| pname:viewportCount parameter of fname:vkCmdSetViewportWithCountEXT |
| 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_EXT dynamic state enabled, but |
| not the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT dynamic state |
| enabled, then flink:vkCmdSetScissorWithCountEXT must: have been called |
| in the current command buffer prior to this drawing command, and the |
| pname:scissorCount parameter of fname:vkCmdSetScissorWithCountEXT 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_EXT and |
| ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT dynamic states enabled |
| then both flink:vkCmdSetViewportWithCountEXT and |
| flink:vkCmdSetScissorWithCountEXT must: have been called in the current |
| command buffer prior to this drawing command, and the |
| pname:viewportCount parameter of fname:vkCmdSetViewportWithCountEXT |
| must: match the pname:scissorCount parameter of |
| fname:vkCmdSetScissorWithCountEXT |
| 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_EXT 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:vkCmdSetViewportWithCountEXT |
| * [[VUID-{refpage}-viewportCount-04138]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT 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:vkCmdSetViewportWithCountEXT |
| 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_EXT 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:vkCmdSetViewportWithCountEXT |
| * [[VUID-{refpage}-viewportCount-04140]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT 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:vkCmdSetViewportWithCountEXT |
| 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_EXT dynamic state enabled and |
| a slink:VkPipelineViewportSwizzleStateCreateInfoNV structure chained |
| from pname:VkPipelineVieportCreateInfo, 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:vkCmdSetViewportWithCountEXT |
| 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_EXT dynamic state enabled and |
| a slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure |
| chained from pname:VkPipelineVieportCreateInfo, 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:vkCmdSetViewportWithCountEXT |
| endif::VK_NV_scissor_exclusive[] |
| * [[VUID-{refpage}-primitiveTopology-03420]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then |
| flink:vkCmdSetPrimitiveTopologyEXT must: have been called in the current |
| command buffer prior to this drawing command, and the |
| pname:primitiveTopology parameter of fname:vkCmdSetPrimitiveTopologyEXT |
| must: be of the same <<drawing-primitive-topology-class, topology |
| class>> as the pipeline |
| slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology state |
| endif::VK_EXT_extended_dynamic_state[] |
| ifdef::VK_EXT_extended_dynamic_state2[] |
| * [[VUID-{refpage}-None-04875]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled |
| then flink:vkCmdSetPatchControlPointsEXT must: have been called in the |
| current command buffer prior to this drawing command |
| * [[VUID-{refpage}-None-04876]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT dynamic state |
| enabled then flink:vkCmdSetRasterizerDiscardEnableEXT must: have been |
| called in the current command buffer prior to this drawing command |
| * [[VUID-{refpage}-None-04877]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT dynamic state enabled then |
| flink:vkCmdSetDepthBiasEnableEXT must: have been called in the current |
| command buffer prior to this drawing command |
| * [[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 |
| * [[VUID-{refpage}-None-04879]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT dynamic state |
| enabled then flink:vkCmdSetPrimitiveRestartEnableEXT must: have been |
| called in the current command buffer prior to this drawing command |
| endif::VK_EXT_extended_dynamic_state2[] |
| ifdef::VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state[] |
| * [[VUID-{refpage}-primitiveFragmentShadingRateWithMultipleViewports-04552]] |
| If the <<limits-primitiveFragmentShadingRateWithMultipleViewports, |
| pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not |
| supported, the bound graphics pipeline was created with the |
| ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT dynamic state enabled, |
| and any of the shader stages of the bound graphics pipeline write to the |
| code:PrimitiveShadingRateKHR built-in, then |
| flink:vkCmdSetViewportWithCountEXT must: have been called in the current |
| command buffer prior to this drawing command, and the |
| pname:viewportCount parameter of fname:vkCmdSetViewportWithCountEXT |
| must: be `1` |
| endif::VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state[] |
| * [[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 <<resources-image-view-format-features,format features>> 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 |
| * [[VUID-{refpage}-rasterizationSamples-04740]] |
| If rasterization is not disabled in the bound graphics pipeline, and |
| neither the `apiext:VK_AMD_mixed_attachment_samples` nor the |
| `apiext:VK_NV_framebuffer_mixed_samples` extensions are enabled, then |
| slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples |
| must: be the same as the current subpass color and/or depth/stencil |
| attachments |
| ifdef::VK_EXT_extended_dynamic_state[] |
| ifdef::VK_EXT_vertex_input_dynamic_state[] |
| * [[VUID-{refpage}-None-04912]] |
| If the bound graphics pipeline was created with both the |
| ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT and |
| ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic states |
| enabled, then flink:vkCmdSetVertexInputEXT must: have been called in the |
| current command buffer prior to this draw command |
| * [[VUID-{refpage}-pStrides-04913]] |
| If the bound graphics pipeline was created with the |
| ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state |
| enabled, but not the ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic |
| state enabled, then flink:vkCmdBindVertexBuffers2EXT must: have been |
| called in the current command buffer prior to this draw command, and the |
| pname:pStrides parameter of flink:vkCmdBindVertexBuffers2EXT must: not |
| be `NULL` |
| endif::VK_EXT_vertex_input_dynamic_state[] |
| ifndef::VK_EXT_vertex_input_dynamic_state[] |
| * [[VUID-{refpage}-pStrides-04884]] |
| If the bound graphics pipeline was created with the |
| ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state |
| enabled, then flink:vkCmdBindVertexBuffers2EXT must: have been called in |
| the current command buffer prior to this drawing command, and the |
| pname:pStrides parameter of flink:vkCmdBindVertexBuffers2EXT must: not |
| be `NULL` |
| endif::VK_EXT_vertex_input_dynamic_state[] |
| endif::VK_EXT_extended_dynamic_state[] |
| ifdef::VK_EXT_vertex_input_dynamic_state[] |
| * [[VUID-{refpage}-None-04914]] |
| If the bound graphics pipeline state was created with the |
| ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then |
| flink:vkCmdSetVertexInputEXT must: have been called in the current |
| command buffer prior to this draw command |
| endif::VK_EXT_vertex_input_dynamic_state[] |
| ifdef::VK_KHR_dynamic_rendering[] |
| * [[VUID-{refpage}-imageView-06172]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR, 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:vkCmdBeginRenderingKHR, 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:vkCmdBeginRenderingKHR, 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:vkCmdBeginRenderingKHR, 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:vkCmdBeginRenderingKHR, 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:vkCmdBeginRenderingKHR, 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:vkCmdBeginRenderingKHR, the currently bound graphics pipeline |
| must: have been created with a |
| slink:VkPipelineRenderingCreateInfoKHR::pname:viewMask equal to |
| slink:VkRenderingInfoKHR::pname:viewMask |
| * [[VUID-{refpage}-colorAttachmentCount-06179]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR, the currently bound graphics pipeline |
| must: have been created with a |
| slink:VkPipelineRenderingCreateInfoKHR::pname:colorAttachmentCount equal |
| to slink:VkRenderingInfoKHR::pname:colorAttachmentCount |
| * [[VUID-{refpage}-colorAttachmentCount-06180]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR and |
| slink:VkRenderingInfoKHR::pname:colorAttachmentCount greater than `0`, |
| then each element of the |
| slink:VkRenderingInfoKHR::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:VkPipelineRenderingCreateInfoKHR::pname:pColorAttachmentFormats |
| used to create the currently bound graphics pipeline |
| * [[VUID-{refpage}-pDepthAttachment-06181]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR and |
| slink:VkRenderingInfoKHR::pname:pDepthAttachment->pname:imageView was |
| not dlink:VK_NULL_HANDLE, the value of |
| slink:VkPipelineRenderingCreateInfoKHR::pname:depthAttachmentFormat used |
| to create the currently bound graphics pipeline must: be equal to the |
| elink:VkFormat used to create |
| slink:VkRenderingInfoKHR::pname:pDepthAttachment->pname:imageView |
| * [[VUID-{refpage}-pStencilAttachment-06182]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR and |
| slink:VkRenderingInfoKHR::pname:pStencilAttachment->pname:imageView was |
| not dlink:VK_NULL_HANDLE, the value of |
| slink:VkPipelineRenderingCreateInfoKHR::pname:stencilAttachmentFormat |
| used to create the currently bound graphics pipeline must: be equal to |
| the elink:VkFormat used to create |
| slink:VkRenderingInfoKHR::pname:pStencilAttachment->pname:imageView |
| ifdef::VK_KHR_fragment_shading_rate[] |
| * [[VUID-{refpage}-imageView-06183]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR and |
| slink:VkRenderingFragmentShadingRateAttachmentInfoKHR::pname:imageView |
| was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline |
| must: have been created with |
| ename:VK_PIPELINE_RASTERIZATION_STATE_CREATE_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:vkCmdBeginRenderingKHR and |
| slink:VkRenderingFragmentDensityMapAttachmentInfoEXT::pname:imageView |
| was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline |
| must: have been created with |
| ename:VK_PIPELINE_RASTERIZATION_STATE_CREATE_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:vkCmdBeginRenderingKHR with a |
| slink:VkRenderingInfoKHR::pname:colorAttachmentCount parameter greater |
| than `0`, then each element of the |
| slink:VkRenderingInfoKHR::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:vkCmdBeginRenderingKHR, the currently bound pipeline was created |
| with a slink:VkAttachmentSampleCountInfoAMD or |
| slink:VkAttachmentSampleCountInfoNV structure, and |
| slink:VkRenderingInfoKHR::pname:pDepthAttachment->pname: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:VkRenderingInfoKHR::pname:pDepthAttachment->pname:imageView |
| * [[VUID-{refpage}-pStencilAttachment-06187]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR, the currently bound pipeline was created |
| with a slink:VkAttachmentSampleCountInfoAMD or |
| slink:VkAttachmentSampleCountInfoNV structure, and |
| slink:VkRenderingInfoKHR::pname:pStencilAttachment->pname: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:VkRenderingInfoKHR::pname:pStencilAttachment->pname:imageView |
| * [[VUID-{refpage}-colorAttachmentCount-06188]] |
| If the currently bound pipeline was created without a |
| slink:VkAttachmentSampleCountInfoAMD or |
| slink:VkAttachmentSampleCountInfoNV structure, and the current render |
| pass instance was begun with flink:vkCmdBeginRenderingKHR with a |
| slink:VkRenderingInfoKHR::pname:colorAttachmentCount parameter greater |
| than `0`, then each element of the |
| slink:VkRenderingInfoKHR::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 |
| slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples |
| used to create the currently bound graphics pipeline |
| * [[VUID-{refpage}-pDepthAttachment-06189]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR, the currently bound pipeline was created |
| without a slink:VkAttachmentSampleCountInfoAMD or |
| slink:VkAttachmentSampleCountInfoNV structure, and |
| slink:VkRenderingInfoKHR::pname:pDepthAttachment->pname:imageView was |
| not dlink:VK_NULL_HANDLE, the value of |
| slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples |
| used to create the currently bound graphics pipeline must: be equal to |
| the sample count used to create |
| slink:VkRenderingInfoKHR::pname:pDepthAttachment->pname:imageView |
| * [[VUID-{refpage}-pStencilAttachment-06190]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR, the currently bound pipeline was created |
| without a slink:VkAttachmentSampleCountInfoAMD or |
| slink:VkAttachmentSampleCountInfoNV structure, and |
| slink:VkRenderingInfoKHR::pname:pStencilAttachment->pname:imageView was |
| not dlink:VK_NULL_HANDLE, the value of |
| slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples |
| used to create the currently bound graphics pipeline must: be equal to |
| the sample count used to create |
| slink:VkRenderingInfoKHR::pname:pStencilAttachment->pname:imageView |
| * [[VUID-{refpage}-renderPass-06198]] |
| If the current render pass instance was begun with |
| flink:vkCmdBeginRenderingKHR, the currently bound pipeline must: have |
| been created with a slink:VkGraphicsPipelineCreateInfo::pname:renderPass |
| equal to dlink:VK_NULL_HANDLE |
| endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] |
| endif::VK_KHR_dynamic_rendering[] |
| // Common Valid Usage |