• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019-2024 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5// Common Valid Usage
6// Common to all drawing commands
7include::{chapters}/commonvalidity/draw_dispatch_common.adoc[]
8  * [[VUID-{refpage}-renderPass-02684]]
9    The current render pass must: be <<renderpass-compatibility,compatible>>
10    with the pname:renderPass member of the
11    sname:VkGraphicsPipelineCreateInfo structure specified when creating the
12    sname:VkPipeline bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS
13  * [[VUID-{refpage}-subpass-02685]]
14    The subpass index of the current render pass must: be equal to the
15    pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
16    specified when creating the sname:VkPipeline bound to
17    ename:VK_PIPELINE_BIND_POINT_GRAPHICS
18  * [[VUID-{refpage}-None-07748]]
19    If any shader statically accesses an input attachment, a valid
20    descriptor must: be bound to the pipeline via a descriptor set
21  * [[VUID-{refpage}-OpTypeImage-07468]]
22    If any shader executed by this pipeline accesses an code:OpTypeImage
23    variable with a code:Dim operand of code:SubpassData, it must: be
24    decorated with an code:InputAttachmentIndex that corresponds to a valid
25    input attachment in the current subpass
26  * [[VUID-{refpage}-None-07469]]
27    Input attachment views accessed in a subpass must: be created with the
28    same elink:VkFormat as the corresponding subpass definition, and be
29    created with a slink:VkImageView that is compatible with the attachment
30    referenced by the subpass'
31    pname:pInputAttachments[code:InputAttachmentIndex] in the currently
32    bound slink:VkFramebuffer as specified by
33    <<compatibility-inputattachment,Fragment Input Attachment
34    Compatibility>>
35  * [[VUID-{refpage}-None-06537]]
36    Memory backing image subresources used as attachments in the current
37    render pass must: not be written in any way other than as an attachment
38    by this command
39  * [[VUID-{refpage}-None-09000]]
40    If a color attachment is written by any prior command in this subpass or
41    by the load, store, or resolve operations for this subpass,
42ifdef::VK_EXT_attachment_feedback_loop_layout[]
43    it is not in the
44    ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout,
45    and
46ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
47    either:
48  ** {empty}
49endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
50    the ename:VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT is
51    set on the currently bound pipeline
52ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
53    or
54  ** the last call to flink:vkCmdSetAttachmentFeedbackLoopEnableEXT included
55     ename:VK_IMAGE_ASPECT_COLOR_BIT and
56ifdef::VK_EXT_shader_object[]
57  *** there is no currently bound graphics pipeline or
58endif::VK_EXT_shader_object[]
59  *** the currently bound graphics pipeline was created with
60      ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
61endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
62endif::VK_EXT_attachment_feedback_loop_layout[]
63    it must: not be accessed in any way other than as an attachment by this
64    command
65  * [[VUID-{refpage}-None-09001]]
66    If a depth attachment is written by any prior command in this subpass or
67    by the load, store, or resolve operations for this subpass,
68ifdef::VK_EXT_attachment_feedback_loop_layout[]
69    it is not in the
70    ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout,
71    and
72ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
73    either:
74  ** {empty}
75endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
76    the
77    ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
78    is set on the currently bound pipeline
79ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
80    or
81  ** the last call to flink:vkCmdSetAttachmentFeedbackLoopEnableEXT included
82     ename:VK_IMAGE_ASPECT_DEPTH_BIT and
83ifdef::VK_EXT_shader_object[]
84  *** there is no currently bound graphics pipeline or
85endif::VK_EXT_shader_object[]
86  *** the currently bound graphics pipeline was created with
87      ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
88endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
89endif::VK_EXT_attachment_feedback_loop_layout[]
90    it must: not be accessed in any way other than as an attachment by this
91    command
92  * [[VUID-{refpage}-None-09002]]
93    If a stencil attachment is written by any prior command in this subpass
94    or by the load, store, or resolve operations for this subpass,
95ifdef::VK_EXT_attachment_feedback_loop_layout[]
96    it is not in the
97    ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout,
98    and
99ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
100    either:
101  ** {empty}
102endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
103    the
104    ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
105    is set on the currently bound pipeline
106ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
107    or
108  ** the last call to flink:vkCmdSetAttachmentFeedbackLoopEnableEXT included
109     ename:VK_IMAGE_ASPECT_STENCIL_BIT and
110ifdef::VK_EXT_shader_object[]
111  *** there is no currently bound graphics pipeline or
112endif::VK_EXT_shader_object[]
113  *** the currently bound graphics pipeline was created with
114      ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
115endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
116endif::VK_EXT_attachment_feedback_loop_layout[]
117    it must: not be accessed in any way other than as an attachment by this
118    command
119ifdef::VK_EXT_attachment_feedback_loop_layout[]
120  * [[VUID-{refpage}-None-09003]]
121    If an attachment is written by any prior command in this subpass or by
122    the load, store, or resolve operations for this subpass, it must: not be
123    accessed in any way other than as an attachment, storage image, or
124    sampled image by this command
125endif::VK_EXT_attachment_feedback_loop_layout[]
126  * [[VUID-{refpage}-None-06539]]
127    If any previously recorded command in the current subpass accessed an
128    image subresource used as an attachment in this subpass in any way other
129    than as an attachment, this command must: not write to that image
130    subresource as an attachment
131  * [[VUID-{refpage}-None-06886]]
132    If the current render pass instance uses a depth/stencil attachment with
133    a read-only layout for the depth aspect, <<fragops-depth-write, depth
134    writes>> must: be disabled
135  * [[VUID-{refpage}-None-06887]]
136    If the current render pass instance uses a depth/stencil attachment with
137    a read-only layout for the stencil aspect, both front and back
138    pname:writeMask are not zero, and stencil test is enabled,
139    <<fragops-stencil, all stencil ops>> must: be ename:VK_STENCIL_OP_KEEP
140  * [[VUID-{refpage}-None-07831]]
141    If the bound graphics pipeline state was created with the
142    ename:VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then
143    flink:vkCmdSetViewport must: have been called in the current command
144    buffer prior to this drawing command
145  * [[VUID-{refpage}-None-07832]]
146    If the bound graphics pipeline state was created with the
147    ename:VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then
148    flink:vkCmdSetScissor must: have been called in the current command
149    buffer prior to this drawing command
150  * [[VUID-{refpage}-None-07833]]
151    If the bound graphics pipeline state was created with the
152    ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then
153    flink:vkCmdSetLineWidth must: have been called in the current command
154    buffer prior to this drawing command
155ifdef::VK_EXT_shader_object[]
156  * [[VUID-{refpage}-None-08617]]
157    If a shader object is bound to any graphics stage, and the most recent
158    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
159    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
160    recent call to flink:vkCmdSetPolygonModeEXT in the current command
161    buffer set pname:polygonMode to ename:VK_POLYGON_MODE_LINE,
162    flink:vkCmdSetLineWidth must: have been called in the current command
163    buffer prior to this drawing command
164  * [[VUID-{refpage}-None-08618]]
165    If a shader object is bound to any graphics stage, and the most recent
166    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
167    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
168    recent call to flink:vkCmdSetPrimitiveTopology in the current command
169    buffer set pname:primitiveTopology to any line topology,
170    flink:vkCmdSetLineWidth must: have been called in the current command
171    buffer prior to this drawing command
172  * [[VUID-{refpage}-None-08619]]
173    If a shader object that outputs line primitives is bound to the
174    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or
175    ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to
176    flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set
177    pname:rasterizerDiscardEnable to ename:VK_FALSE, flink:vkCmdSetLineWidth
178    must: have been called in the current command buffer prior to this
179    drawing command
180endif::VK_EXT_shader_object[]
181  * [[VUID-{refpage}-None-07834]]
182    If the bound graphics pipeline state was created with the
183    ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then
184    flink:vkCmdSetDepthBias
185ifdef::VK_EXT_depth_bias_control[]
186    or flink:vkCmdSetDepthBias2EXT
187endif::VK_EXT_depth_bias_control[]
188    must: have been called in the current command buffer prior to this
189    drawing command
190ifdef::VK_EXT_shader_object[]
191  * [[VUID-{refpage}-None-08620]]
192    If a shader object is bound to any graphics stage, and the most recent
193    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
194    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
195    recent call to flink:vkCmdSetDepthBiasEnable in the current command
196    buffer set pname:depthBiasEnable to ename:VK_TRUE,
197    flink:vkCmdSetDepthBias
198ifdef::VK_EXT_depth_bias_control[]
199    or flink:vkCmdSetDepthBias2EXT
200endif::VK_EXT_depth_bias_control[]
201    must: have been called in the current command buffer prior to this
202    drawing command
203endif::VK_EXT_shader_object[]
204  * [[VUID-{refpage}-None-07835]]
205    If the bound graphics pipeline state was created with the
206    ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then
207    flink:vkCmdSetBlendConstants must: have been called in the current
208    command buffer prior to this drawing command
209ifdef::VK_EXT_shader_object[]
210  * [[VUID-{refpage}-None-08621]]
211    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
212    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
213    in the current command buffer set pname:rasterizerDiscardEnable to
214    ename:VK_FALSE, and the most recent call to
215    flink:vkCmdSetColorBlendEnableEXT in the current command buffer set any
216    element of pname:pColorBlendEnables to ename:VK_TRUE, and the most
217    recent call to flink:vkCmdSetColorBlendEquationEXT in the current
218    command buffer set the same element of pname:pColorBlendEquations to a
219    sname:VkColorBlendEquationEXT structure with any elink:VkBlendFactor
220    member with a value of ename:VK_BLEND_FACTOR_CONSTANT_COLOR,
221    ename:VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
222    ename:VK_BLEND_FACTOR_CONSTANT_ALPHA, or
223    ename:VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
224    flink:vkCmdSetBlendConstants must: have been called in the current
225    command buffer prior to this drawing command
226endif::VK_EXT_shader_object[]
227  * [[VUID-{refpage}-None-07836]]
228    If the bound graphics pipeline state was created with the
229    ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the
230    current pname:depthBoundsTestEnable state is ename:VK_TRUE, then
231    flink:vkCmdSetDepthBounds must: have been called in the current command
232    buffer prior to this drawing command
233ifdef::VK_EXT_shader_object[]
234  * [[VUID-{refpage}-None-08622]]
235    If a shader object is bound to any graphics stage, and the most recent
236    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
237    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
238    recent call to flink:vkCmdSetDepthBoundsTestEnable in the current
239    command buffer set pname:depthBoundsTestEnable to ename:VK_TRUE, then
240    flink:vkCmdSetDepthBounds must: have been called in the current command
241    buffer prior to this drawing command
242endif::VK_EXT_shader_object[]
243  * [[VUID-{refpage}-None-07837]]
244    If the bound graphics pipeline state was created with the
245    ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and
246    if the current pname:stencilTestEnable state is ename:VK_TRUE, then
247    flink:vkCmdSetStencilCompareMask must: have been called in the current
248    command buffer prior to this drawing command
249ifdef::VK_EXT_shader_object[]
250  * [[VUID-{refpage}-None-08623]]
251    If a shader object is bound to any graphics stage, and the most recent
252    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
253    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
254    recent call to flink:vkCmdSetStencilTestEnable in the current command
255    buffer set pname:stencilTestEnable to ename:VK_TRUE,
256    flink:vkCmdSetStencilCompareMask must: have been called in the current
257    command buffer prior to this drawing command
258endif::VK_EXT_shader_object[]
259  * [[VUID-{refpage}-None-07838]]
260    If the bound graphics pipeline state was created with the
261    ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if
262    the current pname:stencilTestEnable state is ename:VK_TRUE, then
263    flink:vkCmdSetStencilWriteMask must: have been called in the current
264    command buffer prior to this drawing command
265ifdef::VK_EXT_shader_object[]
266  * [[VUID-{refpage}-None-08624]]
267    If a shader object is bound to any graphics stage, and the most recent
268    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
269    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
270    recent call to flink:vkCmdSetStencilTestEnable in the current command
271    buffer set pname:stencilTestEnable to ename:VK_TRUE,
272    flink:vkCmdSetStencilWriteMask must: have been called in the current
273    command buffer prior to this drawing command
274endif::VK_EXT_shader_object[]
275  * [[VUID-{refpage}-None-07839]]
276    If the bound graphics pipeline state was created with the
277    ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if
278    the current pname:stencilTestEnable state is ename:VK_TRUE, then
279    flink:vkCmdSetStencilReference must: have been called in the current
280    command buffer prior to this drawing command
281ifdef::VK_EXT_shader_object[]
282  * [[VUID-{refpage}-None-08625]]
283    If a shader object is bound to any graphics stage, and the most recent
284    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
285    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
286    recent call to flink:vkCmdSetStencilTestEnable in the current command
287    buffer set pname:stencilTestEnable to ename:VK_TRUE,
288    flink:vkCmdSetStencilReference must: have been called in the current
289    command buffer prior to this drawing command
290endif::VK_EXT_shader_object[]
291ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
292  * [[VUID-{refpage}-maxMultiviewInstanceIndex-02688]]
293    If the draw is recorded in a render pass instance with multiview
294    enabled, the maximum instance index must: be less than or equal to
295    slink:VkPhysicalDeviceMultiviewProperties::pname:maxMultiviewInstanceIndex
296endif::VK_VERSION_1_1,VK_KHR_multiview[]
297ifdef::VK_EXT_sample_locations[]
298  * [[VUID-{refpage}-sampleLocationsEnable-02689]]
299    If the bound graphics pipeline was created with
300    slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
301    set to ename:VK_TRUE and the current subpass has a depth/stencil
302    attachment, then that attachment must: have been created with the
303    ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
304  * [[VUID-{refpage}-None-06666]]
305    If the bound graphics pipeline state was created with the
306    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then
307    flink:vkCmdSetSampleLocationsEXT must: have been called in the current
308    command buffer prior to this drawing command
309ifdef::VK_EXT_shader_object[]
310  * [[VUID-{refpage}-None-08626]]
311    If a shader object is bound to any graphics stage, and the most recent
312    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
313    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
314    recent call to flink:vkCmdSetSampleLocationsEnableEXT in the current
315    command buffer set pname:sampleLocationsEnable to ename:VK_TRUE, then
316    flink:vkCmdSetSampleLocationsEXT must: have been called in the current
317    command buffer prior to this drawing command
318endif::VK_EXT_shader_object[]
319endif::VK_EXT_sample_locations[]
320ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
321  * [[VUID-{refpage}-None-07840]]
322    If the bound graphics pipeline state was created with the
323    ename:VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then
324    flink:vkCmdSetCullMode must: have been called in the current command
325    buffer prior to this drawing command
326ifdef::VK_EXT_shader_object[]
327  * [[VUID-{refpage}-None-08627]]
328    If a shader object is bound to any graphics stage, and the most recent
329    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
330    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
331    flink:vkCmdSetCullMode must: have been called in the current command
332    buffer prior to this drawing command
333endif::VK_EXT_shader_object[]
334  * [[VUID-{refpage}-None-07841]]
335    If the bound graphics pipeline state was created with the
336    ename:VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then
337    flink:vkCmdSetFrontFace must: have been called in the current command
338    buffer prior to this drawing command
339ifdef::VK_EXT_shader_object[]
340  * [[VUID-{refpage}-None-08628]]
341    If a shader object is bound to any graphics stage, and the most recent
342    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
343    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
344    flink:vkCmdSetFrontFace must: have been called in the current command
345    buffer prior to this drawing command
346endif::VK_EXT_shader_object[]
347  * [[VUID-{refpage}-None-07843]]
348    If the bound graphics pipeline state was created with the
349    ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then
350    flink:vkCmdSetDepthTestEnable must: have been called in the current
351    command buffer prior to this drawing command
352ifdef::VK_EXT_shader_object[]
353  * [[VUID-{refpage}-None-08629]]
354    If a shader object is bound to any graphics stage, and the most recent
355    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
356    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
357    flink:vkCmdSetDepthTestEnable must: have been called in the current
358    command buffer prior to this drawing command
359endif::VK_EXT_shader_object[]
360  * [[VUID-{refpage}-None-07844]]
361    If the bound graphics pipeline state was created with the
362    ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then
363    flink:vkCmdSetDepthWriteEnable must: have been called in the current
364    command buffer prior to this drawing command
365ifdef::VK_EXT_shader_object[]
366  * [[VUID-{refpage}-None-08630]]
367    If a shader object is bound to any graphics stage, and the most recent
368    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
369    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
370    flink:vkCmdSetDepthWriteEnable must: have been called in the current
371    command buffer prior to this drawing command
372endif::VK_EXT_shader_object[]
373  * [[VUID-{refpage}-None-07845]]
374    If the bound graphics pipeline state was created with the
375    ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then
376    flink:vkCmdSetDepthCompareOp must: have been called in the current
377    command buffer prior to this drawing command
378ifdef::VK_EXT_shader_object[]
379  * [[VUID-{refpage}-None-08631]]
380    If a shader object is bound to any graphics stage, and the most recent
381    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
382    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
383    recent call to flink:vkCmdSetDepthTestEnable in the current command
384    buffer set pname:depthTestEnable to ename:VK_TRUE, then
385    flink:vkCmdSetDepthCompareOp must: have been called in the current
386    command buffer prior to this drawing command
387endif::VK_EXT_shader_object[]
388  * [[VUID-{refpage}-None-07846]]
389    If the bound graphics pipeline state was created with the
390    ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled
391    then flink:vkCmdSetDepthBoundsTestEnable must: have been called in the
392    current command buffer prior to this drawing command
393ifdef::VK_EXT_shader_object[]
394  * [[VUID-{refpage}-None-08632]]
395    If a shader object is bound to any graphics stage, and the
396    <<features-depthBounds, pname:depthBounds>> feature is enabled, and the
397    most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current
398    command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
399    the flink:vkCmdSetDepthBoundsTestEnable must: have been called in the
400    current command buffer prior to this drawing command
401endif::VK_EXT_shader_object[]
402  * [[VUID-{refpage}-None-07847]]
403    If the bound graphics pipeline state was created with the
404    ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then
405    flink:vkCmdSetStencilTestEnable must: have been called in the current
406    command buffer prior to this drawing command
407ifdef::VK_EXT_shader_object[]
408  * [[VUID-{refpage}-None-08633]]
409    If a shader object is bound to any graphics stage, and the most recent
410    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
411    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
412    flink:vkCmdSetStencilTestEnable must: have been called in the current
413    command buffer prior to this drawing command
414endif::VK_EXT_shader_object[]
415  * [[VUID-{refpage}-None-07848]]
416    If the bound graphics pipeline state was created with the
417    ename:VK_DYNAMIC_STATE_STENCIL_OP dynamic state enabled then
418    flink:vkCmdSetStencilOp must: have been called in the current command
419    buffer prior to this drawing command
420ifdef::VK_EXT_shader_object[]
421  * [[VUID-{refpage}-None-08634]]
422    If a shader object is bound to any graphics stage, and the most recent
423    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
424    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
425    recent call to flink:vkCmdSetStencilTestEnable in the current command
426    buffer set pname:stencilTestEnable to ename:VK_TRUE, then
427    flink:vkCmdSetStencilOp must: have been called in the current command
428    buffer prior to this drawing command
429endif::VK_EXT_shader_object[]
430  * [[VUID-{refpage}-viewportCount-03417]]
431    If the bound graphics pipeline state was created with the
432    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but
433    not the ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled,
434    then flink:vkCmdSetViewportWithCount must: have been called in the
435    current command buffer prior to this drawing command, and the
436    pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must:
437    match the sname:VkPipelineViewportStateCreateInfo::pname:scissorCount of
438    the pipeline
439  * [[VUID-{refpage}-scissorCount-03418]]
440    If the bound graphics pipeline state was created with the
441    ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not
442    the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled,
443    then flink:vkCmdSetScissorWithCount must: have been called in the
444    current command buffer prior to this drawing command, and the
445    pname:scissorCount parameter of fname:vkCmdSetScissorWithCount must:
446    match the sname:VkPipelineViewportStateCreateInfo::pname:viewportCount
447    of the pipeline
448  * [[VUID-{refpage}-viewportCount-03419]]
449    If the bound graphics pipeline state was created with both the
450    ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT and
451    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then
452    both flink:vkCmdSetViewportWithCount and flink:vkCmdSetScissorWithCount
453    must: have been called in the current command buffer prior to this
454    drawing command, and the pname:viewportCount parameter of
455    fname:vkCmdSetViewportWithCount must: match the pname:scissorCount
456    parameter of fname:vkCmdSetScissorWithCount
457ifdef::VK_EXT_shader_object[]
458  * [[VUID-{refpage}-None-08635]]
459    If a shader object is bound to any graphics stage, then both
460    flink:vkCmdSetViewportWithCount and flink:vkCmdSetScissorWithCount must:
461    have been called in the current command buffer prior to this drawing
462    command, and the pname:viewportCount parameter of
463    fname:vkCmdSetViewportWithCount must: match the pname:scissorCount
464    parameter of fname:vkCmdSetScissorWithCount
465endif::VK_EXT_shader_object[]
466ifdef::VK_NV_clip_space_w_scaling[]
467  * [[VUID-{refpage}-viewportCount-04137]]
468    If the bound graphics pipeline state was created with the
469    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but
470    not the ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state
471    enabled, then the bound graphics pipeline must: have been created with
472    slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:viewportCount
473    greater or equal to the pname:viewportCount parameter in the last call
474    to flink:vkCmdSetViewportWithCount
475  * [[VUID-{refpage}-viewportCount-04138]]
476    If the bound graphics pipeline state was created with the
477    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and
478    ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic states enabled then
479    the pname:viewportCount parameter in the last call to
480    flink:vkCmdSetViewportWScalingNV must: be greater than or equal to the
481    pname:viewportCount parameter in the last call to
482    flink:vkCmdSetViewportWithCount
483ifdef::VK_EXT_shader_object[]
484  * [[VUID-{refpage}-None-09232]]
485    If the `apiext:VK_NV_clip_space_w_scaling` extension is enabled, and a
486    shader object is bound to any graphics stage, and the most recent call
487    to flink:vkCmdSetViewportWScalingEnableNV in the current command buffer
488    set pname:viewportWScalingEnable to ename:VK_TRUE, then
489    flink:vkCmdSetViewportWScalingNV must: have been called in the current
490    command buffer prior to this drawing command
491  * [[VUID-{refpage}-None-08636]]
492    If the `apiext:VK_NV_clip_space_w_scaling` extension is enabled, and a
493    shader object is bound to any graphics stage, and the most recent call
494    to flink:vkCmdSetViewportWScalingEnableNV in the current command buffer
495    set pname:viewportWScalingEnable to ename:VK_TRUE, then the
496    pname:viewportCount parameter in the last call to
497    flink:vkCmdSetViewportWScalingNV must: be greater than or equal to the
498    pname:viewportCount parameter in the last call to
499    flink:vkCmdSetViewportWithCount
500endif::VK_EXT_shader_object[]
501endif::VK_NV_clip_space_w_scaling[]
502ifdef::VK_NV_shading_rate_image[]
503  * [[VUID-{refpage}-viewportCount-04139]]
504    If the bound graphics pipeline state was created with the
505    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but
506    not the ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic
507    state enabled, then the bound graphics pipeline must: have been created
508    with
509    slink:VkPipelineViewportShadingRateImageStateCreateInfoNV::pname:viewportCount
510    greater or equal to the pname:viewportCount parameter in the last call
511    to flink:vkCmdSetViewportWithCount
512  * [[VUID-{refpage}-viewportCount-04140]]
513    If the bound graphics pipeline state was created with the
514    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and
515    ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic states
516    enabled then the pname:viewportCount parameter in the last call to
517    flink:vkCmdSetViewportShadingRatePaletteNV must: be greater than or
518    equal to the pname:viewportCount parameter in the last call to
519    flink:vkCmdSetViewportWithCount
520ifdef::VK_EXT_shader_object[]
521  * [[VUID-{refpage}-shadingRateImage-09233]]
522    If the <<features-shadingRateImage, pname:shadingRateImage>> feature is
523    enabled, and a shader object is bound to any graphics stage, and the
524    most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current
525    command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
526    flink:vkCmdSetCoarseSampleOrderNV must: have been called in the current
527    command buffer prior to this drawing command
528  * [[VUID-{refpage}-shadingRateImage-09234]]
529    If the <<features-shadingRateImage, pname:shadingRateImage>> feature is
530    enabled, and a shader object is bound to any graphics stage, and the
531    most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current
532    command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and
533    the most recent call to flink:vkCmdSetShadingRateImageEnableNV in the
534    current command buffer set pname:shadingRateImageEnable to
535    ename:VK_TRUE, then flink:vkCmdSetViewportShadingRatePaletteNV must:
536    have been called in the current command buffer prior to this drawing
537    command
538  * [[VUID-{refpage}-None-08637]]
539    If the <<features-shadingRateImage, pname:shadingRateImage>> feature is
540    enabled, and a shader object is bound to any graphics stage, and the
541    most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current
542    command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and
543    the most recent call to flink:vkCmdSetShadingRateImageEnableNV in the
544    current command buffer set pname:shadingRateImageEnable to
545    ename:VK_TRUE, then the pname:viewportCount parameter in the last call
546    to flink:vkCmdSetViewportShadingRatePaletteNV must: be greater than or
547    equal to the pname:viewportCount parameter in the last call to
548    flink:vkCmdSetViewportWithCount
549endif::VK_EXT_shader_object[]
550endif::VK_NV_shading_rate_image[]
551ifdef::VK_NV_viewport_swizzle[]
552  * [[VUID-{refpage}-VkPipelineVieportCreateInfo-04141]]
553    If the bound graphics pipeline state was created with the
554    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a
555    slink:VkPipelineViewportSwizzleStateCreateInfoNV structure chained from
556    slink:VkPipelineViewportStateCreateInfo, then the bound graphics
557    pipeline must: have been created with
558    slink:VkPipelineViewportSwizzleStateCreateInfoNV::pname:viewportCount
559    greater or equal to the pname:viewportCount parameter in the last call
560    to flink:vkCmdSetViewportWithCount
561endif::VK_NV_viewport_swizzle[]
562ifdef::VK_NV_scissor_exclusive[]
563  * [[VUID-{refpage}-VkPipelineVieportCreateInfo-04142]]
564    If the bound graphics pipeline state was created with the
565    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a
566    slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure
567    chained from slink:VkPipelineViewportStateCreateInfo, then the bound
568    graphics pipeline must: have been created with
569    slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV::pname:exclusiveScissorCount
570    greater or equal to the pname:viewportCount parameter in the last call
571    to flink:vkCmdSetViewportWithCount
572  * [[VUID-{refpage}-None-07878]]
573    If the bound graphics pipeline state was created with the
574    ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV dynamic state enabled
575    then flink:vkCmdSetExclusiveScissorEnableNV must: have been called in
576    the current command buffer prior to this drawing command
577  * [[VUID-{refpage}-None-07879]]
578    If the bound graphics pipeline state was created with the
579    ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV dynamic state enabled then
580    flink:vkCmdSetExclusiveScissorNV must: have been called in the current
581    command buffer prior to this drawing command
582ifdef::VK_EXT_shader_object[]
583  * [[VUID-{refpage}-exclusiveScissor-09235]]
584    If the <<features-exclusiveScissor, pname:exclusiveScissor>> feature is
585    enabled, and a shader object is bound to any graphics stage, then
586    flink:vkCmdSetExclusiveScissorEnableNV must: have been called in the
587    current command buffer prior to this drawing command
588  * [[VUID-{refpage}-None-08638]]
589    If the <<features-exclusiveScissor, pname:exclusiveScissor>> feature is
590    enabled, and a shader object is bound to any graphics stage, and the
591    most recent call to flink:vkCmdSetExclusiveScissorEnableNV in the
592    current command buffer set any element of pname:pExclusiveScissorEnables
593    to ename:VK_TRUE, then flink:vkCmdSetExclusiveScissorNV must: have been
594    called in the current command buffer prior to this drawing command
595endif::VK_EXT_shader_object[]
596endif::VK_NV_scissor_exclusive[]
597endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
598ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[]
599  * [[VUID-{refpage}-None-04876]]
600    If the bound graphics pipeline state was created with the
601    ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled
602    then flink:vkCmdSetRasterizerDiscardEnable must: have been called in the
603    current command buffer prior to this drawing command
604ifdef::VK_EXT_shader_object[]
605  * [[VUID-{refpage}-None-08639]]
606    If a shader object is bound to any graphics stage, then
607    flink:vkCmdSetRasterizerDiscardEnable must: have been called in the
608    current command buffer prior to this drawing command
609endif::VK_EXT_shader_object[]
610  * [[VUID-{refpage}-None-04877]]
611    If the bound graphics pipeline state was created with the
612    ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled then
613    flink:vkCmdSetDepthBiasEnable must: have been called in the current
614    command buffer prior to this drawing command
615ifdef::VK_EXT_shader_object[]
616  * [[VUID-{refpage}-None-08640]]
617    If a shader object is bound to any graphics stage, and the most recent
618    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
619    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
620    flink:vkCmdSetDepthBiasEnable must: have been called in the current
621    command buffer prior to this drawing command
622endif::VK_EXT_shader_object[]
623ifdef::VK_EXT_extended_dynamic_state2[]
624  * [[VUID-{refpage}-logicOp-04878]]
625    If the bound graphics pipeline state was created with the
626    ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT dynamic state enabled then
627    flink:vkCmdSetLogicOpEXT must: have been called in the current command
628    buffer prior to this drawing command and the pname:logicOp must: be a
629    valid elink:VkLogicOp value
630ifdef::VK_EXT_shader_object[]
631  * [[VUID-{refpage}-None-08641]]
632    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
633    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
634    in the current command buffer set pname:rasterizerDiscardEnable to
635    ename:VK_FALSE, and the most recent call to
636    flink:vkCmdSetLogicOpEnableEXT set pname:logicOpEnable to ename:VK_TRUE,
637    then flink:vkCmdSetLogicOpEXT must: have been called in the current
638    command buffer prior to this drawing command and the pname:logicOp must:
639    be a valid elink:VkLogicOp value
640endif::VK_EXT_shader_object[]
641endif::VK_EXT_extended_dynamic_state2[]
642endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[]
643ifdef::VK_KHR_fragment_shading_rate[]
644ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
645  * [[VUID-{refpage}-primitiveFragmentShadingRateWithMultipleViewports-04552]]
646    If the <<limits-primitiveFragmentShadingRateWithMultipleViewports,
647    pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not
648    supported, the bound graphics pipeline was created with the
649    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, and
650    any of the shader stages of the bound graphics pipeline write to the
651    code:PrimitiveShadingRateKHR built-in, then
652    flink:vkCmdSetViewportWithCount must: have been called in the current
653    command buffer prior to this drawing command, and the
654    pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must:
655    be `1`
656ifdef::VK_EXT_shader_object[]
657  * [[VUID-{refpage}-primitiveFragmentShadingRateWithMultipleViewports-08642]]
658    If the <<limits-primitiveFragmentShadingRateWithMultipleViewports,
659    pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not
660    supported, and any shader object bound to a graphics stage writes to the
661    code:PrimitiveShadingRateKHR built-in, then
662    flink:vkCmdSetViewportWithCount must: have been called in the current
663    command buffer prior to this drawing command, and the
664    pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must:
665    be `1`
666endif::VK_EXT_shader_object[]
667endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
668endif::VK_KHR_fragment_shading_rate[]
669  * [[VUID-{refpage}-blendEnable-04727]]
670    If rasterization is not disabled in the bound graphics pipeline, then
671    for each color attachment in the subpass, if the corresponding image
672    view's <<resources-image-view-format-features,format features>> do not
673    contain ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the
674    pname:blendEnable member of the corresponding element of the
675    pname:pAttachments member of pname:pColorBlendState must: be
676    ename:VK_FALSE
677ifdef::VK_EXT_shader_object[]
678  * [[VUID-{refpage}-None-08643]]
679    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
680    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
681    in the current command buffer set pname:rasterizerDiscardEnable to
682    ename:VK_FALSE, then for each color attachment in the render pass, if
683    the corresponding image view's
684    <<resources-image-view-format-features,format features>> do not contain
685    ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the
686    corresponding member of pname:pColorBlendEnables in the most recent call
687    to fname:vkCmdSetColorBlendEnableEXT in the current command buffer that
688    affected that attachment index must: have been ename:VK_FALSE
689endif::VK_EXT_shader_object[]
690  * [[VUID-{refpage}-multisampledRenderToSingleSampled-07284]]
691    If rasterization is not disabled in the bound graphics pipeline,
692ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
693    and none of the following is enabled:
694ifdef::VK_AMD_mixed_attachment_samples[]
695  ** the `apiext:VK_AMD_mixed_attachment_samples` extension
696endif::VK_AMD_mixed_attachment_samples[]
697ifdef::VK_NV_framebuffer_mixed_samples[]
698  ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
699endif::VK_NV_framebuffer_mixed_samples[]
700ifdef::VK_EXT_multisampled_render_to_single_sampled[]
701  ** the <<features-multisampledRenderToSingleSampled,
702     pname:multisampledRenderToSingleSampled>> feature
703endif::VK_EXT_multisampled_render_to_single_sampled[]
704endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
705
706+
707then pname:rasterizationSamples for the currently bound graphics pipeline
708must: be the same as the current subpass color and/or depth/stencil
709attachments
710ifdef::VK_EXT_shader_object[]
711  * [[VUID-{refpage}-None-08644]]
712    If a shader object is bound to any graphics stage, and the most recent
713    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
714    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE,
715ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
716    and none of the following is enabled:
717ifdef::VK_AMD_mixed_attachment_samples[]
718  ** the `apiext:VK_AMD_mixed_attachment_samples` extension
719endif::VK_AMD_mixed_attachment_samples[]
720ifdef::VK_NV_framebuffer_mixed_samples[]
721  ** the `apiext:VK_NV_framebuffer_mixed_samples` extension
722endif::VK_NV_framebuffer_mixed_samples[]
723ifdef::VK_EXT_multisampled_render_to_single_sampled[]
724  ** the <<features-multisampledRenderToSingleSampled,
725     pname:multisampledRenderToSingleSampled>> feature
726endif::VK_EXT_multisampled_render_to_single_sampled[]
727endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples,VK_EXT_multisampled_render_to_single_sampled[]
728
729+
730then the most recent call to flink:vkCmdSetRasterizationSamplesEXT in the
731current command buffer must: have set pname:rasterizationSamples to be the
732same as the number of samples for the current render pass color and/or
733depth/stencil attachments
734endif::VK_EXT_shader_object[]
735ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
736ifdef::VK_EXT_shader_object[]
737  * [[VUID-{refpage}-None-08876]]
738    If a shader object is bound to any graphics stage, the current render
739    pass instance must: have been begun with flink:vkCmdBeginRendering
740endif::VK_EXT_shader_object[]
741  * [[VUID-{refpage}-imageView-06172]]
742    If the current render pass instance was begun with
743    flink:vkCmdBeginRendering, the pname:imageView member of
744    pname:pDepthAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout
745    member of pname:pDepthAttachment is
746    ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command
747    must: not write any values to the depth attachment
748  * [[VUID-{refpage}-imageView-06173]]
749    If the current render pass instance was begun with
750    flink:vkCmdBeginRendering, the pname:imageView member of
751    pname:pStencilAttachment is not dlink:VK_NULL_HANDLE, and the
752    pname:layout member of pname:pStencilAttachment is
753    ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command
754    must: not write any values to the stencil attachment
755ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
756  * [[VUID-{refpage}-imageView-06174]]
757    If the current render pass instance was begun with
758    flink:vkCmdBeginRendering, the pname:imageView member of
759    pname:pDepthAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout
760    member of pname:pDepthAttachment is
761    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this
762    command must: not write any values to the depth attachment
763  * [[VUID-{refpage}-imageView-06175]]
764    If the current render pass instance was begun with
765    flink:vkCmdBeginRendering, the pname:imageView member of
766    pname:pStencilAttachment is not dlink:VK_NULL_HANDLE, and the
767    pname:layout member of pname:pStencilAttachment is
768    ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, this
769    command must: not write any values to the stencil attachment
770endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
771ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
772  * [[VUID-{refpage}-imageView-06176]]
773    If the current render pass instance was begun with
774    flink:vkCmdBeginRendering, the pname:imageView member of
775    pname:pDepthAttachment is not dlink:VK_NULL_HANDLE, and the pname:layout
776    member of pname:pDepthAttachment is
777    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, this command must: not
778    write any values to the depth attachment
779  * [[VUID-{refpage}-imageView-06177]]
780    If the current render pass instance was begun with
781    flink:vkCmdBeginRendering, the pname:imageView member of
782    pname:pStencilAttachment is not dlink:VK_NULL_HANDLE, and the
783    pname:layout member of pname:pStencilAttachment is
784    ename:VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, this command must: not
785    write any values to the stencil attachment
786endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
787  * [[VUID-{refpage}-viewMask-06178]]
788    If the current render pass instance was begun with
789    flink:vkCmdBeginRendering, the currently bound graphics pipeline must:
790    have been created with a
791    slink:VkPipelineRenderingCreateInfo::pname:viewMask equal to
792    slink:VkRenderingInfo::pname:viewMask
793  * [[VUID-{refpage}-colorAttachmentCount-06179]]
794    If
795ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
796    the <<features-dynamicRenderingUnusedAttachments,
797    pname:dynamicRenderingUnusedAttachments>> feature is not enabled and
798endif::VK_EXT_dynamic_rendering_unused_attachments[]
799    the current render pass instance was begun with
800    flink:vkCmdBeginRendering, the currently bound graphics pipeline must:
801    have been created with a
802    slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount equal to
803    slink:VkRenderingInfo::pname:colorAttachmentCount
804  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08910]]
805    If
806ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
807    the <<features-dynamicRenderingUnusedAttachments,
808    pname:dynamicRenderingUnusedAttachments>> feature is not enabled, and
809endif::VK_EXT_dynamic_rendering_unused_attachments[]
810    the current render pass instance was begun with
811    flink:vkCmdBeginRendering and
812    slink:VkRenderingInfo::pname:colorAttachmentCount greater than `0`, then
813    each element of the slink:VkRenderingInfo::pname:pColorAttachments array
814    with a pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been
815    created with a elink:VkFormat equal to the corresponding element of
816    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used
817    to create the currently bound graphics pipeline
818  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08912]]
819    If
820ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
821    the <<features-dynamicRenderingUnusedAttachments,
822    pname:dynamicRenderingUnusedAttachments>> feature is not enabled, and
823endif::VK_EXT_dynamic_rendering_unused_attachments[]
824    the current render pass instance was begun with
825    flink:vkCmdBeginRendering and
826    slink:VkRenderingInfo::pname:colorAttachmentCount greater than `0`, then
827    each element of the slink:VkRenderingInfo::pname:pColorAttachments array
828    with a pname:imageView equal to dlink:VK_NULL_HANDLE must: have the
829    corresponding element of
830    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used
831    to create the currently bound pipeline equal to
832    ename:VK_FORMAT_UNDEFINED
833ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
834  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08911]]
835    If the <<features-dynamicRenderingUnusedAttachments,
836    pname:dynamicRenderingUnusedAttachments>> feature is enabled, and the
837    current render pass instance was begun with flink:vkCmdBeginRendering
838    and slink:VkRenderingInfo::pname:colorAttachmentCount greater than `0`,
839    then each element of the slink:VkRenderingInfo::pname:pColorAttachments
840    array with a pname:imageView not equal to dlink:VK_NULL_HANDLE must:
841    have been created with a elink:VkFormat equal to the corresponding
842    element of
843    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used
844    to create the currently bound graphics pipeline, or the corresponding
845    element of
846    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats, if
847    it exists, must: be ename:VK_FORMAT_UNDEFINED
848endif::VK_EXT_dynamic_rendering_unused_attachments[]
849ifdef::VK_ANDROID_external_format_resolve[]
850  * [[VUID-{refpage}-colorAttachmentCount-09362]]
851    If the current render pass instance was begun with
852    flink:vkCmdBeginRendering, with a
853    slink:VkRenderingInfo::pname:colorAttachmentCount equal to `1`,
854ifdef::VK_EXT_shader_object[]
855    there is no shader object bound to any graphics stage,
856endif::VK_EXT_shader_object[]
857    and a color attachment with a resolve mode of
858    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element
859    of the slink:VkRenderingInfo::pname:pColorAttachments array with a
860    pname:resolveImageView not equal to dlink:VK_NULL_HANDLE must: have been
861    created with an image created with a
862    slink:VkExternalFormatANDROID::pname:externalFormat value equal to the
863    slink:VkExternalFormatANDROID::pname:externalFormat value used to create
864    the currently bound graphics pipeline
865  * [[VUID-{refpage}-None-09363]]
866    If
867ifdef::VK_EXT_shader_object[]
868    there is no shader object bound to any graphics stage,
869endif::VK_EXT_shader_object[]
870    the current render pass instance was begun with
871    flink:vkCmdBeginRendering and a
872    slink:VkRenderingInfo::pname:colorAttachmentCount equal to `1`, and a
873    color attachment with a resolve mode of
874    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element
875    of the slink:VkRenderingInfo::pname:pColorAttachments array with a
876    pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been
877    created with an image created with a
878    slink:VkExternalFormatANDROID::pname:externalFormat value equal to the
879    slink:VkExternalFormatANDROID::pname:externalFormat value used to create
880    the currently bound graphics pipeline
881ifdef::VK_EXT_extended_dynamic_state3[]
882  * [[VUID-{refpage}-None-09364]]
883    If the current render pass instance was begun with
884    flink:vkCmdBeginRendering,
885ifdef::VK_EXT_shader_object[]
886    there is no shader object bound to any graphics stage,
887endif::VK_EXT_shader_object[]
888    and the currently bound graphics pipeline was created with a non-zero
889    slink:VkExternalFormatANDROID::pname:externalFormat value and with the
890    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled,
891    then flink:vkCmdSetColorBlendEnableEXT must: have set the blend enable
892    to ename:VK_FALSE prior to this drawing command
893  * [[VUID-{refpage}-None-09365]]
894    If the current render pass instance was begun with
895    flink:vkCmdBeginRendering,
896ifdef::VK_EXT_shader_object[]
897    there is no shader object bound to any graphics stage,
898endif::VK_EXT_shader_object[]
899    and the currently bound graphics pipeline was created with a non-zero
900    slink:VkExternalFormatANDROID::pname:externalFormat value and with the
901    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled,
902    then flink:vkCmdSetRasterizationSamplesEXT must: have set
903    pname:rasterizationSamples to ename:VK_SAMPLE_COUNT_1_BIT prior to this
904    drawing command
905ifdef::VK_EXT_shader_object[]
906  * [[VUID-{refpage}-None-09366]]
907    If there is a shader object bound to any graphics stage, and the current
908    render pass includes a color attachment that uses the
909    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode,
910    then flink:vkCmdSetColorBlendEnableEXT must: have set blend enable to
911    ename:VK_FALSE prior to this drawing command
912  * [[VUID-{refpage}-rasterizationSamples-09367]]
913    If there is a shader object bound to any graphics stage, and the current
914    render pass includes a color attachment that uses the
915    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode,
916    then flink:vkCmdSetRasterizationSamplesEXT must: have set
917    pname:rasterizationSamples to ename:VK_SAMPLE_COUNT_1_BIT prior to this
918    drawing command
919endif::VK_EXT_shader_object[]
920endif::VK_EXT_extended_dynamic_state3[]
921ifdef::VK_KHR_fragment_shading_rate[]
922  * [[VUID-{refpage}-None-09368]]
923    If the current render pass instance was begun with
924    flink:vkCmdBeginRendering,
925ifdef::VK_EXT_shader_object[]
926    there is no shader object bound to any graphics stage,
927endif::VK_EXT_shader_object[]
928    and the currently bound graphics pipeline was created with a non-zero
929    slink:VkExternalFormatANDROID::pname:externalFormat value and with the
930    ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled,
931    then flink:vkCmdSetFragmentShadingRateKHR must: have set
932    pname:pFragmentSize->width to `1` prior to this drawing command
933  * [[VUID-{refpage}-None-09369]]
934    If the current render pass instance was begun with
935    flink:vkCmdBeginRendering,
936ifdef::VK_EXT_shader_object[]
937    there is no shader object bound to any graphics stage,
938endif::VK_EXT_shader_object[]
939    and the currently bound graphics pipeline was created with a non-zero
940    slink:VkExternalFormatANDROID::pname:externalFormat value and with the
941    ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled,
942    then flink:vkCmdSetFragmentShadingRateKHR must: have set
943    pname:pFragmentSize->height to `1` prior to this drawing command
944ifdef::VK_EXT_shader_object[]
945  * [[VUID-{refpage}-pFragmentSize-09370]]
946    If there is a shader object bound to any graphics stage, and the current
947    render pass includes a color attachment that uses the
948    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode,
949    then flink:vkCmdSetFragmentShadingRateKHR must: have set
950    pname:pFragmentSize->width to `1` prior to this drawing command
951  * [[VUID-{refpage}-pFragmentSize-09371]]
952    If there is a shader object bound to any graphics stage, and the current
953    render pass includes a color attachment that uses the
954    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode,
955    then flink:vkCmdSetFragmentShadingRateKHR must: have set
956    pname:pFragmentSize->height to `1` prior to this drawing command
957endif::VK_EXT_shader_object[]
958endif::VK_KHR_fragment_shading_rate[]
959endif::VK_ANDROID_external_format_resolve[]
960ifdef::VK_EXT_color_write_enable[]
961  * [[VUID-{refpage}-None-07749]]
962    If the bound graphics pipeline state was created with the
963    ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then
964    flink:vkCmdSetColorWriteEnableEXT must: have been called in the current
965    command buffer prior to this drawing command
966ifdef::VK_EXT_shader_object[]
967  * [[VUID-{refpage}-None-08646]]
968    If the <<features-colorWriteEnable, pname:colorWriteEnable>> feature is
969    enabled on the device, and a shader object is bound to the
970    ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to
971    flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set
972    pname:rasterizerDiscardEnable to ename:VK_FALSE, then
973    flink:vkCmdSetColorWriteEnableEXT must: have been called in the current
974    command buffer prior to this drawing command
975endif::VK_EXT_shader_object[]
976  * [[VUID-{refpage}-attachmentCount-07750]]
977    If the bound graphics pipeline state was created with the
978    ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then
979    the pname:attachmentCount parameter of fname:vkCmdSetColorWriteEnableEXT
980    must: be greater than or equal to the
981    sname:VkPipelineColorBlendStateCreateInfo::pname:attachmentCount of the
982    currently bound graphics pipeline
983ifdef::VK_EXT_shader_object[]
984  * [[VUID-{refpage}-None-08647]]
985    If the <<features-colorWriteEnable, pname:colorWriteEnable>> feature is
986    enabled on the device, and a shader object is bound to the
987    ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to
988    flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set
989    pname:rasterizerDiscardEnable to ename:VK_FALSE, then the
990    pname:attachmentCount parameter of most recent call to
991    fname:vkCmdSetColorWriteEnableEXT in the current command buffer must: be
992    greater than or equal to the number of color attachments in the current
993    render pass instance
994endif::VK_EXT_shader_object[]
995endif::VK_EXT_color_write_enable[]
996ifdef::VK_EXT_discard_rectangles[]
997  * [[VUID-{refpage}-None-07751]]
998    If the bound graphics pipeline state was created with the
999    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then
1000    flink:vkCmdSetDiscardRectangleEXT must: have been called in the current
1001    command buffer prior to this drawing command for each discard rectangle
1002    in
1003    slink:VkPipelineDiscardRectangleStateCreateInfoEXT::pname:discardRectangleCount
1004  * [[VUID-{refpage}-None-07880]]
1005    If the bound graphics pipeline state was created with the
1006    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT dynamic state
1007    enabled then flink:vkCmdSetDiscardRectangleEnableEXT must: have been
1008    called in the current command buffer prior to this drawing command
1009ifdef::VK_EXT_shader_object[]
1010  * [[VUID-{refpage}-rasterizerDiscardEnable-09236]]
1011    If the `apiext:VK_EXT_discard_rectangles` extension is enabled, and a
1012    shader object is bound to any graphics stage, and the most recent call
1013    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1014    set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent
1015    call to flink:vkCmdSetDiscardRectangleEnableEXT in the current command
1016    buffer set pname:discardRectangleEnable to ename:VK_TRUE, then
1017    flink:vkCmdSetDiscardRectangleEXT must: have been called in the current
1018    command buffer prior to this drawing command
1019  * [[VUID-{refpage}-None-08648]]
1020    If the `apiext:VK_EXT_discard_rectangles` extension is enabled, and a
1021    shader object is bound to any graphics stage, and the most recent call
1022    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1023    set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1024    flink:vkCmdSetDiscardRectangleEnableEXT must: have been called in the
1025    current command buffer prior to this drawing command
1026endif::VK_EXT_shader_object[]
1027  * [[VUID-{refpage}-None-07881]]
1028    If the bound graphics pipeline state was created with the
1029    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT dynamic state enabled
1030    then flink:vkCmdSetDiscardRectangleModeEXT must: have been called in the
1031    current command buffer prior to this drawing command
1032ifdef::VK_EXT_shader_object[]
1033  * [[VUID-{refpage}-None-08649]]
1034    If the `apiext:VK_EXT_discard_rectangles` extension is enabled, and a
1035    shader object is bound to any graphics stage, and the most recent call
1036    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1037    set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent
1038    call to flink:vkCmdSetDiscardRectangleEnableEXT in the current command
1039    buffer set pname:discardRectangleEnable to ename:VK_TRUE, then
1040    flink:vkCmdSetDiscardRectangleModeEXT must: have been called in the
1041    current command buffer prior to this drawing command
1042endif::VK_EXT_shader_object[]
1043endif::VK_EXT_discard_rectangles[]
1044  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08913]]
1045    If the current render pass instance was begun with
1046    flink:vkCmdBeginRendering,
1047ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
1048    the
1049    <<features-dynamicRenderingUnusedAttachments,pname:dynamicRenderingUnusedAttachments>>
1050    feature is not enabled,
1051endif::VK_EXT_dynamic_rendering_unused_attachments[]
1052    and slink:VkRenderingInfo::pname:pDepthAttachment->imageView was
1053    dlink:VK_NULL_HANDLE, the value of
1054    slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to
1055    create the currently bound graphics pipeline must: be equal to
1056    ename:VK_FORMAT_UNDEFINED
1057  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08914]]
1058    If current render pass instance was begun with
1059    flink:vkCmdBeginRendering,
1060ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
1061    the
1062    <<features-dynamicRenderingUnusedAttachments,pname:dynamicRenderingUnusedAttachments>>
1063    feature is not enabled,
1064endif::VK_EXT_dynamic_rendering_unused_attachments[]
1065    and slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not
1066    dlink:VK_NULL_HANDLE, the value of
1067    slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to
1068    create the currently bound graphics pipeline must: be equal to the
1069    elink:VkFormat used to create
1070    slink:VkRenderingInfo::pname:pDepthAttachment->imageView
1071ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
1072  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08915]]
1073    If the current render pass instance was begun with
1074    flink:vkCmdBeginRendering, the
1075    <<features-dynamicRenderingUnusedAttachments,
1076    pname:dynamicRenderingUnusedAttachments>> feature is enabled,
1077    slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not
1078    dlink:VK_NULL_HANDLE, and the value of
1079    slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to
1080    create the currently bound graphics pipeline was not equal to the
1081    elink:VkFormat used to create
1082    slink:VkRenderingInfo::pname:pDepthAttachment->imageView, the value of
1083    the format must: be ename:VK_FORMAT_UNDEFINED
1084endif::VK_EXT_dynamic_rendering_unused_attachments[]
1085  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08916]]
1086    If the current render pass instance was begun with
1087    flink:vkCmdBeginRendering,
1088ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
1089    the
1090    <<features-dynamicRenderingUnusedAttachments,pname:dynamicRenderingUnusedAttachments>>
1091    feature is not enabled,
1092endif::VK_EXT_dynamic_rendering_unused_attachments[]
1093    and slink:VkRenderingInfo::pname:pStencilAttachment->imageView was
1094    dlink:VK_NULL_HANDLE, the value of
1095    slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used
1096    to create the currently bound graphics pipeline must: be equal to
1097    ename:VK_FORMAT_UNDEFINED
1098  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08917]]
1099    If current render pass instance was begun with
1100    flink:vkCmdBeginRendering,
1101ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
1102    the
1103    <<features-dynamicRenderingUnusedAttachments,pname:dynamicRenderingUnusedAttachments>>
1104    feature is not enabled,
1105endif::VK_EXT_dynamic_rendering_unused_attachments[]
1106    and slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not
1107    dlink:VK_NULL_HANDLE, the value of
1108    slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used
1109    to create the currently bound graphics pipeline must: be equal to the
1110    elink:VkFormat used to create
1111    slink:VkRenderingInfo::pname:pStencilAttachment->imageView
1112ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
1113  * [[VUID-{refpage}-dynamicRenderingUnusedAttachments-08918]]
1114    If the current render pass instance was begun with
1115    flink:vkCmdBeginRendering, the
1116    <<features-dynamicRenderingUnusedAttachments,
1117    pname:dynamicRenderingUnusedAttachments>> feature is enabled,
1118    slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not
1119    dlink:VK_NULL_HANDLE, and the value of
1120    slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used
1121    to create the currently bound graphics pipeline was not equal to the
1122    elink:VkFormat used to create
1123    slink:VkRenderingInfo::pname:pStencilAttachment->imageView, the value of
1124    the format must: be ename:VK_FORMAT_UNDEFINED
1125endif::VK_EXT_dynamic_rendering_unused_attachments[]
1126ifdef::VK_KHR_fragment_shading_rate[]
1127  * [[VUID-{refpage}-imageView-06183]]
1128    If the current render pass instance was begun with
1129    flink:vkCmdBeginRendering and
1130    slink:VkRenderingFragmentShadingRateAttachmentInfoKHR::pname:imageView
1131    was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline
1132    must: have been created with
1133    ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
1134endif::VK_KHR_fragment_shading_rate[]
1135ifdef::VK_EXT_fragment_density_map[]
1136  * [[VUID-{refpage}-imageView-06184]]
1137    If the current render pass instance was begun with
1138    flink:vkCmdBeginRendering and
1139    slink:VkRenderingFragmentDensityMapAttachmentInfoEXT::pname:imageView
1140    was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline
1141    must: have been created with
1142    ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
1143endif::VK_EXT_fragment_density_map[]
1144ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1145  * [[VUID-{refpage}-colorAttachmentCount-06185]]
1146    If the currently bound pipeline was created with a
1147    slink:VkAttachmentSampleCountInfoAMD or
1148    slink:VkAttachmentSampleCountInfoNV structure, and the current render
1149    pass instance was begun with flink:vkCmdBeginRendering with a
1150    slink:VkRenderingInfo::pname:colorAttachmentCount parameter greater than
1151    `0`, then each element of the
1152    slink:VkRenderingInfo::pname:pColorAttachments array with a
1153    pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been
1154    created with a sample count equal to the corresponding element of the
1155    pname:pColorAttachmentSamples member of
1156    slink:VkAttachmentSampleCountInfoAMD or
1157    slink:VkAttachmentSampleCountInfoNV used to create the currently bound
1158    graphics pipeline
1159  * [[VUID-{refpage}-pDepthAttachment-06186]]
1160    If the current render pass instance was begun with
1161    flink:vkCmdBeginRendering, the currently bound pipeline was created with
1162    a slink:VkAttachmentSampleCountInfoAMD or
1163    slink:VkAttachmentSampleCountInfoNV structure, and
1164    slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not
1165    dlink:VK_NULL_HANDLE, the value of the
1166    pname:depthStencilAttachmentSamples member of
1167    slink:VkAttachmentSampleCountInfoAMD or
1168    slink:VkAttachmentSampleCountInfoNV used to create the currently bound
1169    graphics pipeline must: be equal to the sample count used to create
1170    slink:VkRenderingInfo::pname:pDepthAttachment->imageView
1171  * [[VUID-{refpage}-pStencilAttachment-06187]]
1172    If the current render pass instance was begun with
1173    flink:vkCmdBeginRendering, the currently bound pipeline was created with
1174    a slink:VkAttachmentSampleCountInfoAMD or
1175    slink:VkAttachmentSampleCountInfoNV structure, and
1176    slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not
1177    dlink:VK_NULL_HANDLE, the value of the
1178    pname:depthStencilAttachmentSamples member of
1179    slink:VkAttachmentSampleCountInfoAMD or
1180    slink:VkAttachmentSampleCountInfoNV used to create the currently bound
1181    graphics pipeline must: be equal to the sample count used to create
1182    slink:VkRenderingInfo::pname:pStencilAttachment->imageView
1183endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1184  * [[VUID-{refpage}-multisampledRenderToSingleSampled-07285]]
1185    If
1186ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1187    the currently bound pipeline was created without a
1188ifdef::VK_AMD_mixed_attachment_samples[]
1189    slink:VkAttachmentSampleCountInfoAMD
1190endif::VK_AMD_mixed_attachment_samples[]
1191ifdef::VK_AMD_mixed_attachment_samples+VK_NV_framebuffer_mixed_samples[or]
1192ifdef::VK_NV_framebuffer_mixed_samples[]
1193    slink:VkAttachmentSampleCountInfoNV
1194endif::VK_NV_framebuffer_mixed_samples[]
1195    structure, and
1196endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1197ifdef::VK_EXT_multisampled_render_to_single_sampled[]
1198    the <<features-multisampledRenderToSingleSampled,
1199    pname:multisampledRenderToSingleSampled>> feature is not enabled, and
1200endif::VK_EXT_multisampled_render_to_single_sampled[]
1201    the current render pass instance was begun with
1202    flink:vkCmdBeginRendering with a
1203    slink:VkRenderingInfo::pname:colorAttachmentCount parameter greater than
1204    `0`, then each element of the
1205    slink:VkRenderingInfo::pname:pColorAttachments array with a
1206    pname:imageView not equal to dlink:VK_NULL_HANDLE must: have been
1207    created with a sample count equal to the value of
1208    pname:rasterizationSamples for the currently bound graphics pipeline
1209  * [[VUID-{refpage}-multisampledRenderToSingleSampled-07286]]
1210    If
1211ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1212    the currently bound pipeline was created without a
1213ifdef::VK_AMD_mixed_attachment_samples[]
1214    slink:VkAttachmentSampleCountInfoAMD
1215endif::VK_AMD_mixed_attachment_samples[]
1216ifdef::VK_AMD_mixed_attachment_samples+VK_NV_framebuffer_mixed_samples[or]
1217ifdef::VK_NV_framebuffer_mixed_samples[]
1218    slink:VkAttachmentSampleCountInfoNV
1219endif::VK_NV_framebuffer_mixed_samples[]
1220    structure, and
1221endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1222ifdef::VK_EXT_multisampled_render_to_single_sampled[]
1223    the <<features-multisampledRenderToSingleSampled,
1224    pname:multisampledRenderToSingleSampled>> feature is not enabled, and
1225endif::VK_EXT_multisampled_render_to_single_sampled[]
1226    slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not
1227    dlink:VK_NULL_HANDLE, the value of pname:rasterizationSamples for the
1228    currently bound graphics pipeline must: be equal to the sample count
1229    used to create slink:VkRenderingInfo::pname:pDepthAttachment->imageView
1230  * [[VUID-{refpage}-multisampledRenderToSingleSampled-07287]]
1231    If
1232ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1233    the currently bound pipeline was created without a
1234ifdef::VK_AMD_mixed_attachment_samples[]
1235    slink:VkAttachmentSampleCountInfoAMD
1236endif::VK_AMD_mixed_attachment_samples[]
1237ifdef::VK_AMD_mixed_attachment_samples+VK_NV_framebuffer_mixed_samples[or]
1238ifdef::VK_NV_framebuffer_mixed_samples[]
1239    slink:VkAttachmentSampleCountInfoNV
1240endif::VK_NV_framebuffer_mixed_samples[]
1241    structure, and
1242endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
1243ifdef::VK_EXT_multisampled_render_to_single_sampled[]
1244    the <<features-multisampledRenderToSingleSampled,
1245    pname:multisampledRenderToSingleSampled>> feature is not enabled, and
1246endif::VK_EXT_multisampled_render_to_single_sampled[]
1247    slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not
1248    dlink:VK_NULL_HANDLE, the value of pname:rasterizationSamples for the
1249    currently bound graphics pipeline must: be equal to the sample count
1250    used to create
1251    slink:VkRenderingInfo::pname:pStencilAttachment->imageView
1252ifdef::VK_EXT_multisampled_render_to_single_sampled[]
1253  * [[VUID-{refpage}-pNext-07935]]
1254    If this command has been called inside a render pass instance started
1255    with flink:vkCmdBeginRendering, and the pname:pNext chain of
1256    slink:VkRenderingInfo includes a
1257    slink:VkMultisampledRenderToSingleSampledInfoEXT structure with
1258    pname:multisampledRenderToSingleSampledEnable equal to ename:VK_TRUE,
1259    then the value of pname:rasterizationSamples for the currently bound
1260    graphics pipeline must: be equal to
1261    slink:VkMultisampledRenderToSingleSampledInfoEXT::pname:rasterizationSamples
1262endif::VK_EXT_multisampled_render_to_single_sampled[]
1263  * [[VUID-{refpage}-renderPass-06198]]
1264    If the current render pass instance was begun with
1265    flink:vkCmdBeginRendering, the currently bound pipeline must: have been
1266    created with a slink:VkGraphicsPipelineCreateInfo::pname:renderPass
1267    equal to dlink:VK_NULL_HANDLE
1268  * [[VUID-{refpage}-pColorAttachments-08963]]
1269    If the current render pass instance was begun with
1270    flink:vkCmdBeginRendering, there is a graphics pipeline bound with a
1271    fragment shader that statically writes to a color attachment, the color
1272    write mask is not zero, color writes are enabled, and the corresponding
1273    element of the slink:VkRenderingInfo::pname:pColorAttachments->imageView
1274    was not dlink:VK_NULL_HANDLE, then the corresponding element of
1275    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats used
1276    to create the pipeline must: not be ename:VK_FORMAT_UNDEFINED
1277  * [[VUID-{refpage}-pDepthAttachment-08964]]
1278    If the current render pass instance was begun with
1279    flink:vkCmdBeginRendering, there is a graphics pipeline bound, depth
1280    test is enabled, depth write is enabled, and the
1281    slink:VkRenderingInfo::pname:pDepthAttachment->imageView was not
1282    dlink:VK_NULL_HANDLE, then the
1283    slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat used to
1284    create the pipeline must: not be ename:VK_FORMAT_UNDEFINED
1285  * [[VUID-{refpage}-pStencilAttachment-08965]]
1286    If the current render pass instance was begun with
1287    flink:vkCmdBeginRendering, there is a graphics pipeline bound, stencil
1288    test is enabled and the
1289    slink:VkRenderingInfo::pname:pStencilAttachment->imageView was not
1290    dlink:VK_NULL_HANDLE, then the
1291    slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used
1292    to create the pipeline must: not be ename:VK_FORMAT_UNDEFINED
1293endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
1294ifdef::VK_EXT_primitives_generated_query[]
1295  * [[VUID-{refpage}-primitivesGeneratedQueryWithRasterizerDiscard-06708]]
1296    If the <<features-primitivesGeneratedQueryWithRasterizerDiscard,
1297    pname:primitivesGeneratedQueryWithRasterizerDiscard>> feature is not
1298    enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is
1299    active, <<primsrast-discard,rasterization discard>> must: not be enabled
1300ifdef::VK_EXT_transform_feedback[]
1301  * [[VUID-{refpage}-primitivesGeneratedQueryWithNonZeroStreams-06709]]
1302    If the <<features-primitivesGeneratedQueryWithNonZeroStreams,
1303    pname:primitivesGeneratedQueryWithNonZeroStreams>> feature is not
1304    enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is
1305    active, the bound graphics pipeline must: not have been created with a
1306    non-zero value in
1307    sname:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream
1308endif::VK_EXT_transform_feedback[]
1309endif::VK_EXT_primitives_generated_query[]
1310ifdef::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[]
1311ifdef::VK_EXT_extended_dynamic_state3[]
1312  * [[VUID-{refpage}-None-07619]]
1313    If the bound graphics pipeline state was created with the
1314    ename:VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state
1315    enabled then flink:vkCmdSetTessellationDomainOriginEXT must: have been
1316    called in the current command buffer prior to this drawing command
1317  * [[VUID-{refpage}-None-07620]]
1318    If the bound graphics pipeline state was created with the
1319    ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then
1320    flink:vkCmdSetDepthClampEnableEXT must: have been called in the current
1321    command buffer prior to this drawing command
1322endif::VK_EXT_extended_dynamic_state3[]
1323ifdef::VK_EXT_shader_object[]
1324  * [[VUID-{refpage}-None-09237]]
1325    If a shader object is bound to the
1326    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then
1327    flink:vkCmdSetTessellationDomainOriginEXT must: have been called in the
1328    current command buffer prior to this drawing command
1329  * [[VUID-{refpage}-None-08650]]
1330    If the <<features-depthClamp, pname:depthClamp>> feature is enabled, and
1331    a shader object is bound to any graphics stage, and the most recent call
1332    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1333    set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1334    flink:vkCmdSetDepthClampEnableEXT must: have been called in the current
1335    command buffer prior to this drawing command
1336endif::VK_EXT_shader_object[]
1337ifdef::VK_EXT_extended_dynamic_state3[]
1338  * [[VUID-{refpage}-None-07621]]
1339    If the bound graphics pipeline state was created with the
1340    ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then
1341    flink:vkCmdSetPolygonModeEXT must: have been called in the current
1342    command buffer prior to this drawing command
1343endif::VK_EXT_extended_dynamic_state3[]
1344ifdef::VK_EXT_shader_object[]
1345  * [[VUID-{refpage}-None-08651]]
1346    If a shader object is bound to any graphics stage, and the most recent
1347    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1348    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1349    flink:vkCmdSetPolygonModeEXT must: have been called in the current
1350    command buffer prior to this drawing command
1351endif::VK_EXT_shader_object[]
1352ifdef::VK_EXT_extended_dynamic_state3[]
1353  * [[VUID-{refpage}-None-07622]]
1354    If the bound graphics pipeline state was created with the
1355    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled
1356    then flink:vkCmdSetRasterizationSamplesEXT must: have been called in the
1357    current command buffer prior to this drawing command
1358endif::VK_EXT_extended_dynamic_state3[]
1359ifdef::VK_EXT_shader_object[]
1360  * [[VUID-{refpage}-None-08652]]
1361    If a shader object is bound to any graphics stage, and the most recent
1362    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1363    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1364    flink:vkCmdSetRasterizationSamplesEXT must: have been called in the
1365    current command buffer prior to this drawing command
1366endif::VK_EXT_shader_object[]
1367ifdef::VK_EXT_extended_dynamic_state3[]
1368  * [[VUID-{refpage}-None-07623]]
1369    If the bound graphics pipeline state was created with the
1370    ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then
1371    flink:vkCmdSetSampleMaskEXT must: have been called in the current
1372    command buffer prior to this drawing command
1373endif::VK_EXT_extended_dynamic_state3[]
1374ifdef::VK_EXT_shader_object[]
1375  * [[VUID-{refpage}-None-08653]]
1376    If a shader object is bound to any graphics stage, and the most recent
1377    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1378    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1379    flink:vkCmdSetSampleMaskEXT must: have been called in the current
1380    command buffer prior to this drawing command
1381endif::VK_EXT_shader_object[]
1382ifdef::VK_EXT_extended_dynamic_state3[]
1383  * [[VUID-{refpage}-None-07624]]
1384    If the bound graphics pipeline state was created with the
1385    ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state
1386    enabled then flink:vkCmdSetAlphaToCoverageEnableEXT must: have been
1387    called in the current command buffer prior to this drawing command
1388  * [[VUID-{refpage}-alphaToCoverageEnable-08919]]
1389    If the bound graphics pipeline state was created with the
1390    ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state
1391    enabled, and pname:alphaToCoverageEnable was ename:VK_TRUE in the last
1392    call to flink:vkCmdSetAlphaToCoverageEnableEXT, then the
1393    <<interfaces-fragmentoutput, Fragment Output Interface>> must: contain a
1394    variable for the alpha code:Component word in code:Location 0 at
1395    code:Index 0
1396endif::VK_EXT_extended_dynamic_state3[]
1397ifdef::VK_EXT_shader_object[]
1398  * [[VUID-{refpage}-None-08654]]
1399    If a shader object is bound to any graphics stage, and the most recent
1400    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1401    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1402    flink:vkCmdSetAlphaToCoverageEnableEXT must: have been called in the
1403    current command buffer prior to this drawing command
1404  * [[VUID-{refpage}-alphaToCoverageEnable-08920]]
1405    If a shader object is bound to any graphics stage, and the most recent
1406    call to flink:vkCmdSetAlphaToCoverageEnableEXT in the current command
1407    buffer set pname:alphaToCoverageEnable to ename:VK_TRUE, then the
1408    <<interfaces-fragmentoutput, Fragment Output Interface>> must: contain a
1409    variable for the alpha code:Component word in code:Location 0 at
1410    code:Index 0
1411endif::VK_EXT_shader_object[]
1412ifdef::VK_EXT_extended_dynamic_state3[]
1413  * [[VUID-{refpage}-None-07625]]
1414    If the bound graphics pipeline state was created with the
1415    ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled
1416    then flink:vkCmdSetAlphaToOneEnableEXT must: have been called in the
1417    current command buffer prior to this drawing command
1418endif::VK_EXT_extended_dynamic_state3[]
1419ifdef::VK_EXT_shader_object[]
1420  * [[VUID-{refpage}-None-08655]]
1421    If the <<features-alphaToOne, pname:alphaToOne>> feature is enabled, and
1422    a shader object is bound to any graphics stage, and the most recent call
1423    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1424    set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1425    flink:vkCmdSetAlphaToOneEnableEXT must: have been called in the current
1426    command buffer prior to this drawing command
1427endif::VK_EXT_shader_object[]
1428ifdef::VK_EXT_extended_dynamic_state3[]
1429  * [[VUID-{refpage}-None-07626]]
1430    If the bound graphics pipeline state was created with the
1431    ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then
1432    flink:vkCmdSetLogicOpEnableEXT must: have been called in the current
1433    command buffer prior to this drawing command
1434endif::VK_EXT_extended_dynamic_state3[]
1435ifdef::VK_EXT_shader_object[]
1436  * [[VUID-{refpage}-None-08656]]
1437    If the <<features-logicOp, pname:logicOp>> feature is enabled, and a
1438    shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage,
1439    and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the
1440    current command buffer set pname:rasterizerDiscardEnable to
1441    ename:VK_FALSE, then flink:vkCmdSetLogicOpEnableEXT must: have been
1442    called in the current command buffer prior to this drawing command
1443endif::VK_EXT_shader_object[]
1444ifdef::VK_EXT_extended_dynamic_state3[]
1445  * [[VUID-{refpage}-None-07627]]
1446    If the bound graphics pipeline state was created with the
1447    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then
1448    flink:vkCmdSetColorBlendEnableEXT must: have been called in the current
1449    command buffer prior to this drawing command
1450endif::VK_EXT_extended_dynamic_state3[]
1451ifdef::VK_EXT_shader_object[]
1452  * [[VUID-{refpage}-None-08657]]
1453    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1454    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1455    in the current command buffer set pname:rasterizerDiscardEnable to
1456    ename:VK_FALSE, then flink:vkCmdSetColorBlendEnableEXT must: have been
1457    called in the current command buffer prior to this drawing command
1458endif::VK_EXT_shader_object[]
1459ifdef::VK_EXT_extended_dynamic_state3[]
1460  * [[VUID-{refpage}-None-07628]]
1461    If the bound graphics pipeline state was created with the
1462    ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled
1463    then flink:vkCmdSetColorBlendEquationEXT must: have been called in the
1464    current command buffer prior to this drawing command
1465endif::VK_EXT_extended_dynamic_state3[]
1466ifdef::VK_EXT_shader_object[]
1467  * [[VUID-{refpage}-None-08658]]
1468    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1469    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1470    in the current command buffer set pname:rasterizerDiscardEnable to
1471    ename:VK_FALSE, and the most recent call to
1472    flink:vkCmdSetColorBlendEnableEXT for any attachment set that
1473    attachment's value in pname:pColorBlendEnables to ename:VK_TRUE, then
1474    flink:vkCmdSetColorBlendEquationEXT must: have been called in the
1475    current command buffer prior to this drawing command
1476endif::VK_EXT_shader_object[]
1477ifdef::VK_EXT_extended_dynamic_state3[]
1478  * [[VUID-{refpage}-None-07629]]
1479    If the bound graphics pipeline state was created with the
1480    ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then
1481    flink:vkCmdSetColorWriteMaskEXT must: have been called in the current
1482    command buffer prior to this drawing command
1483endif::VK_EXT_extended_dynamic_state3[]
1484ifdef::VK_EXT_shader_object[]
1485  * [[VUID-{refpage}-None-08659]]
1486    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1487    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1488    in the current command buffer set pname:rasterizerDiscardEnable to
1489    ename:VK_FALSE, then flink:vkCmdSetColorWriteMaskEXT must: have been
1490    called in the current command buffer prior to this drawing command
1491endif::VK_EXT_shader_object[]
1492ifdef::VK_EXT_transform_feedback[]
1493ifdef::VK_EXT_extended_dynamic_state3[]
1494  * [[VUID-{refpage}-None-07630]]
1495    If the bound graphics pipeline state was created with the
1496    ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled
1497    then flink:vkCmdSetRasterizationStreamEXT must: have been called in the
1498    current command buffer prior to this drawing command
1499endif::VK_EXT_extended_dynamic_state3[]
1500ifdef::VK_EXT_shader_object[]
1501  * [[VUID-{refpage}-None-08660]]
1502    If the <<features-geometryStreams, pname:geometryStreams>> feature is
1503    enabled, and a shader object is bound to the
1504    ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, then
1505    flink:vkCmdSetRasterizationStreamEXT must: have been called in the
1506    current command buffer prior to this drawing command
1507endif::VK_EXT_shader_object[]
1508endif::VK_EXT_transform_feedback[]
1509ifdef::VK_EXT_conservative_rasterization[]
1510ifdef::VK_EXT_extended_dynamic_state3[]
1511  * [[VUID-{refpage}-None-07631]]
1512    If the bound graphics pipeline state was created with the
1513    ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state
1514    enabled then flink:vkCmdSetConservativeRasterizationModeEXT must: have
1515    been called in the current command buffer prior to this drawing command
1516endif::VK_EXT_extended_dynamic_state3[]
1517ifdef::VK_EXT_shader_object[]
1518  * [[VUID-{refpage}-None-08661]]
1519    If the `apiext:VK_EXT_conservative_rasterization` extension is enabled,
1520    and a shader object is bound to any graphics stage, and the most recent
1521    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1522    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1523    flink:vkCmdSetConservativeRasterizationModeEXT must: have been called in
1524    the current command buffer prior to this drawing command
1525endif::VK_EXT_shader_object[]
1526ifdef::VK_EXT_extended_dynamic_state3[]
1527  * [[VUID-{refpage}-None-07632]]
1528    If the bound graphics pipeline state was created with the
1529    ename:VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic
1530    state enabled then flink:vkCmdSetExtraPrimitiveOverestimationSizeEXT
1531    must: have been called in the current command buffer prior to this
1532    drawing command
1533endif::VK_EXT_extended_dynamic_state3[]
1534ifdef::VK_EXT_shader_object[]
1535  * [[VUID-{refpage}-None-08662]]
1536    If the `apiext:VK_EXT_conservative_rasterization` extension is enabled,
1537    and a shader object is bound to any graphics stage, and the most recent
1538    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1539    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
1540    recent call to flink:vkCmdSetConservativeRasterizationModeEXT in the
1541    current command buffer set pname:conservativeRasterizationMode to
1542    ename:VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then
1543    flink:vkCmdSetExtraPrimitiveOverestimationSizeEXT must: have been called
1544    in the current command buffer prior to this drawing command
1545endif::VK_EXT_shader_object[]
1546endif::VK_EXT_conservative_rasterization[]
1547ifdef::VK_EXT_depth_clip_enable[]
1548ifdef::VK_EXT_extended_dynamic_state3[]
1549  * [[VUID-{refpage}-None-07633]]
1550    If the bound graphics pipeline state was created with the
1551    ename:VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then
1552    flink:vkCmdSetDepthClipEnableEXT must: have been called in the current
1553    command buffer prior to this drawing command
1554endif::VK_EXT_extended_dynamic_state3[]
1555ifdef::VK_EXT_shader_object[]
1556  * [[VUID-{refpage}-None-08663]]
1557    If the <<features-depthClipEnable, pname:depthClipEnable>> feature is
1558    enabled, and a shader object is bound to any graphics stage, then
1559    flink:vkCmdSetDepthClipEnableEXT must: have been called in the current
1560    command buffer prior to this drawing command
1561endif::VK_EXT_shader_object[]
1562endif::VK_EXT_depth_clip_enable[]
1563ifdef::VK_EXT_sample_locations[]
1564ifdef::VK_EXT_extended_dynamic_state3[]
1565  * [[VUID-{refpage}-None-07634]]
1566    If the bound graphics pipeline state was created with the
1567    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled
1568    then flink:vkCmdSetSampleLocationsEnableEXT must: have been called in
1569    the current command buffer prior to this drawing command
1570endif::VK_EXT_extended_dynamic_state3[]
1571ifdef::VK_EXT_shader_object[]
1572  * [[VUID-{refpage}-None-08664]]
1573    If the `apiext:VK_EXT_sample_locations` extension is enabled, and a
1574    shader object is bound to any graphics stage, and the most recent call
1575    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1576    set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1577    flink:vkCmdSetSampleLocationsEnableEXT must: have been called in the
1578    current command buffer prior to this drawing command
1579endif::VK_EXT_shader_object[]
1580endif::VK_EXT_sample_locations[]
1581ifdef::VK_EXT_blend_operation_advanced[]
1582  * [[VUID-{refpage}-None-07635]]
1583    If the bound graphics pipeline state was created with the
1584    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled
1585    then flink:vkCmdSetColorBlendAdvancedEXT must: have been called in the
1586    current command buffer prior to this drawing command
1587ifdef::VK_EXT_shader_object[]
1588  * [[VUID-{refpage}-rasterizerDiscardEnable-09416]]
1589    If the `apiext:VK_EXT_blend_operation_advanced` extension is enabled,
1590    and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1591    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1592    in the current command buffer set pname:rasterizerDiscardEnable to
1593    ename:VK_FALSE, then at least one of flink:vkCmdSetColorBlendEquationEXT
1594    and flink:vkCmdSetColorBlendAdvancedEXT must: have been called in the
1595    current command buffer prior to this drawing command
1596endif::VK_EXT_shader_object[]
1597endif::VK_EXT_blend_operation_advanced[]
1598ifdef::VK_EXT_provoking_vertex[]
1599ifdef::VK_EXT_extended_dynamic_state3[]
1600  * [[VUID-{refpage}-None-07636]]
1601    If the bound graphics pipeline state was created with the
1602    ename:VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled
1603    then flink:vkCmdSetProvokingVertexModeEXT must: have been called in the
1604    current command buffer prior to this drawing command
1605endif::VK_EXT_extended_dynamic_state3[]
1606ifdef::VK_EXT_shader_object[]
1607  * [[VUID-{refpage}-None-08665]]
1608    If the `apiext:VK_EXT_provoking_vertex` extension is enabled, and a
1609    shader object is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage,
1610    and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the
1611    current command buffer set pname:rasterizerDiscardEnable to
1612    ename:VK_FALSE, then flink:vkCmdSetProvokingVertexModeEXT must: have
1613    been called in the current command buffer prior to this drawing command
1614endif::VK_EXT_shader_object[]
1615endif::VK_EXT_provoking_vertex[]
1616ifdef::VK_EXT_line_rasterization[]
1617ifdef::VK_EXT_extended_dynamic_state3[]
1618  * [[VUID-{refpage}-None-07637]]
1619    If the bound graphics pipeline state was created with the
1620    ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled
1621    then flink:vkCmdSetLineRasterizationModeEXT must: have been called in
1622    the current command buffer prior to this drawing command
1623endif::VK_EXT_extended_dynamic_state3[]
1624ifdef::VK_EXT_shader_object[]
1625  * [[VUID-{refpage}-None-08666]]
1626    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1627    shader object is bound to any graphics stage, and the most recent call
1628    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1629    set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent
1630    call to flink:vkCmdSetPolygonModeEXT in the current command buffer set
1631    pname:polygonMode to ename:VK_POLYGON_MODE_LINE, then
1632    flink:vkCmdSetLineRasterizationModeEXT must: have been called in the
1633    current command buffer prior to this drawing command
1634  * [[VUID-{refpage}-None-08667]]
1635    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1636    shader object is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage,
1637    and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the
1638    current command buffer set pname:rasterizerDiscardEnable to
1639    ename:VK_FALSE, and the most recent call to
1640    flink:vkCmdSetPrimitiveTopology in the current command buffer set
1641    pname:primitiveTopology to any line topology, then
1642    flink:vkCmdSetLineRasterizationModeEXT must: have been called in the
1643    current command buffer prior to this drawing command
1644  * [[VUID-{refpage}-None-08668]]
1645    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1646    shader object that outputs line primitives is bound to the
1647    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or
1648    ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to
1649    flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set
1650    pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1651    flink:vkCmdSetLineRasterizationModeEXT must: have been called in the
1652    current command buffer prior to this drawing command
1653endif::VK_EXT_shader_object[]
1654ifdef::VK_EXT_extended_dynamic_state3[]
1655  * [[VUID-{refpage}-None-07638]]
1656    If the bound graphics pipeline state was created with the
1657    ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled
1658    then flink:vkCmdSetLineStippleEnableEXT must: have been called in the
1659    current command buffer prior to this drawing command
1660endif::VK_EXT_extended_dynamic_state3[]
1661ifdef::VK_EXT_shader_object[]
1662  * [[VUID-{refpage}-None-08669]]
1663    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1664    shader object is bound to any graphics stage, and the most recent call
1665    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1666    set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent
1667    call to flink:vkCmdSetPolygonModeEXT in the current command buffer set
1668    pname:polygonMode to ename:VK_POLYGON_MODE_LINE, then
1669    flink:vkCmdSetLineStippleEnableEXT must: have been called in the current
1670    command buffer prior to this drawing command
1671  * [[VUID-{refpage}-None-08670]]
1672    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1673    shader object is bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage,
1674    and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the
1675    current command buffer set pname:rasterizerDiscardEnable to
1676    ename:VK_FALSE, and the most recent call to
1677    flink:vkCmdSetPrimitiveTopology in the current command buffer set
1678    pname:primitiveTopology to any line topology, then
1679    flink:vkCmdSetLineStippleEnableEXT must: have been called in the current
1680    command buffer prior to this drawing command
1681  * [[VUID-{refpage}-None-08671]]
1682    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1683    shader object that outputs line primitives is bound to the
1684    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or
1685    ename:VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to
1686    flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set
1687    pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1688    flink:vkCmdSetLineStippleEnableEXT must: have been called in the current
1689    command buffer prior to this drawing command
1690endif::VK_EXT_shader_object[]
1691ifdef::VK_EXT_extended_dynamic_state3[]
1692  * [[VUID-{refpage}-None-07849]]
1693    If the bound graphics pipeline state was created with the
1694    ename:VK_DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then
1695    flink:vkCmdSetLineStippleEXT must: have been called in the current
1696    command buffer prior to this drawing command
1697endif::VK_EXT_extended_dynamic_state3[]
1698ifdef::VK_EXT_shader_object[]
1699  * [[VUID-{refpage}-None-08672]]
1700    If the `apiext:VK_EXT_line_rasterization` extension is enabled, and a
1701    shader object is bound to any graphics stage, and the most recent call
1702    to flink:vkCmdSetRasterizerDiscardEnable in the current command buffer
1703    set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most recent
1704    call to flink:vkCmdSetLineStippleEnableEXT in the current command buffer
1705    set pname:stippledLineEnable to ename:VK_TRUE, then
1706    flink:vkCmdSetLineStippleEXT must: have been called in the current
1707    command buffer prior to this drawing command
1708endif::VK_EXT_shader_object[]
1709endif::VK_EXT_line_rasterization[]
1710ifdef::VK_EXT_depth_clip_control[]
1711ifdef::VK_EXT_extended_dynamic_state3[]
1712  * [[VUID-{refpage}-None-07639]]
1713    If the bound graphics pipeline state was created with the
1714    ename:VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state
1715    enabled then flink:vkCmdSetDepthClipNegativeOneToOneEXT must: have been
1716    called in the current command buffer prior to this drawing command
1717endif::VK_EXT_extended_dynamic_state3[]
1718ifdef::VK_EXT_shader_object[]
1719  * [[VUID-{refpage}-None-08673]]
1720    If the <<features-depthClipControl, pname:depthClipControl>> feature is
1721    enabled, and a shader object is bound to any graphics stage, then
1722    flink:vkCmdSetDepthClipNegativeOneToOneEXT must: have been called in the
1723    current command buffer prior to this drawing command
1724endif::VK_EXT_shader_object[]
1725endif::VK_EXT_depth_clip_control[]
1726ifdef::VK_NV_clip_space_w_scaling[]
1727ifdef::VK_EXT_extended_dynamic_state3[]
1728  * [[VUID-{refpage}-None-07640]]
1729    If the bound graphics pipeline state was created with the
1730    ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state
1731    enabled then flink:vkCmdSetViewportWScalingEnableNV must: have been
1732    called in the current command buffer prior to this drawing command
1733endif::VK_EXT_extended_dynamic_state3[]
1734ifdef::VK_EXT_shader_object[]
1735  * [[VUID-{refpage}-None-08674]]
1736    If the `apiext:VK_NV_clip_space_w_scaling` extension is enabled, and a
1737    shader object is bound to any graphics stage, then
1738    flink:vkCmdSetViewportWScalingEnableNV must: have been called in the
1739    current command buffer prior to this drawing command
1740endif::VK_EXT_shader_object[]
1741endif::VK_NV_clip_space_w_scaling[]
1742ifdef::VK_NV_viewport_swizzle[]
1743ifdef::VK_EXT_extended_dynamic_state3[]
1744  * [[VUID-{refpage}-None-07641]]
1745    If the bound graphics pipeline state was created with the
1746    ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then
1747    flink:vkCmdSetViewportSwizzleNV must: have been called in the current
1748    command buffer prior to this drawing command
1749endif::VK_EXT_extended_dynamic_state3[]
1750ifdef::VK_EXT_shader_object[]
1751  * [[VUID-{refpage}-None-08675]]
1752    If the `apiext:VK_NV_viewport_swizzle` extension is enabled, and a
1753    shader object is bound to any graphics stage, then
1754    flink:vkCmdSetViewportSwizzleNV must: have been called in the current
1755    command buffer prior to this drawing command
1756endif::VK_EXT_shader_object[]
1757endif::VK_NV_viewport_swizzle[]
1758ifdef::VK_NV_fragment_coverage_to_color[]
1759ifdef::VK_EXT_extended_dynamic_state3[]
1760  * [[VUID-{refpage}-None-07642]]
1761    If the bound graphics pipeline state was created with the
1762    ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled
1763    then flink:vkCmdSetCoverageToColorEnableNV must: have been called in the
1764    current command buffer prior to this drawing command
1765endif::VK_EXT_extended_dynamic_state3[]
1766ifdef::VK_EXT_shader_object[]
1767  * [[VUID-{refpage}-None-08676]]
1768    If the `apiext:VK_NV_fragment_coverage_to_color` extension is enabled,
1769    and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1770    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1771    in the current command buffer set pname:rasterizerDiscardEnable to
1772    ename:VK_FALSE, then flink:vkCmdSetCoverageToColorEnableNV must: have
1773    been called in the current command buffer prior to this drawing command
1774endif::VK_EXT_shader_object[]
1775ifdef::VK_EXT_extended_dynamic_state3[]
1776  * [[VUID-{refpage}-None-07643]]
1777    If the bound graphics pipeline state was created with the
1778    ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state
1779    enabled then flink:vkCmdSetCoverageToColorLocationNV must: have been
1780    called in the current command buffer prior to this drawing command
1781endif::VK_EXT_extended_dynamic_state3[]
1782ifdef::VK_EXT_shader_object[]
1783  * [[VUID-{refpage}-None-08677]]
1784    If the `apiext:VK_NV_fragment_coverage_to_color` extension is enabled,
1785    and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1786    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1787    in the current command buffer set pname:rasterizerDiscardEnable to
1788    ename:VK_FALSE, and the most recent call to
1789    flink:vkCmdSetCoverageToColorEnableNV in the current command buffer set
1790    pname:coverageToColorEnable to ename:VK_TRUE, then
1791    flink:vkCmdSetCoverageToColorLocationNV must: have been called in the
1792    current command buffer prior to this drawing command
1793endif::VK_EXT_shader_object[]
1794endif::VK_NV_fragment_coverage_to_color[]
1795ifdef::VK_NV_framebuffer_mixed_samples[]
1796ifdef::VK_EXT_extended_dynamic_state3[]
1797  * [[VUID-{refpage}-None-07644]]
1798    If the bound graphics pipeline state was created with the
1799    ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled
1800    then flink:vkCmdSetCoverageModulationModeNV must: have been called in
1801    the current command buffer prior to this drawing command
1802endif::VK_EXT_extended_dynamic_state3[]
1803ifdef::VK_EXT_shader_object[]
1804  * [[VUID-{refpage}-None-08678]]
1805    If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled,
1806    and a shader object is bound to any graphics stage, and the most recent
1807    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1808    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1809    flink:vkCmdSetCoverageModulationModeNV must: have been called in the
1810    current command buffer prior to this drawing command
1811endif::VK_EXT_shader_object[]
1812ifdef::VK_EXT_extended_dynamic_state3[]
1813  * [[VUID-{refpage}-None-07645]]
1814    If the bound graphics pipeline state was created with the
1815    ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state
1816    enabled then flink:vkCmdSetCoverageModulationTableEnableNV must: have
1817    been called in the current command buffer prior to this drawing command
1818endif::VK_EXT_extended_dynamic_state3[]
1819ifdef::VK_EXT_shader_object[]
1820  * [[VUID-{refpage}-None-08679]]
1821    If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled,
1822    and a shader object is bound to any graphics stage, and the most recent
1823    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1824    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
1825    recent call to flink:vkCmdSetCoverageModulationModeNV in the current
1826    command buffer set coverageModulationMode to any value other than
1827    ename:VK_COVERAGE_MODULATION_MODE_NONE_NV, then
1828    flink:vkCmdSetCoverageModulationTableEnableNV must: have been called in
1829    the current command buffer prior to this drawing command
1830endif::VK_EXT_shader_object[]
1831ifdef::VK_EXT_extended_dynamic_state3[]
1832  * [[VUID-{refpage}-None-07646]]
1833    If the bound graphics pipeline state was created with the
1834    ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state
1835    enabled then flink:vkCmdSetCoverageModulationTableNV must: have been
1836    called in the current command buffer prior to this drawing command
1837endif::VK_EXT_extended_dynamic_state3[]
1838ifdef::VK_EXT_shader_object[]
1839  * [[VUID-{refpage}-None-08680]]
1840    If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled,
1841    and a shader object is bound to any graphics stage, and the most recent
1842    call to flink:vkCmdSetRasterizerDiscardEnable in the current command
1843    buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, and the most
1844    recent call to flink:vkCmdSetCoverageModulationTableEnableNV in the
1845    current command buffer set pname:coverageModulationTableEnable to
1846    ename:VK_TRUE, then flink:vkCmdSetCoverageModulationTableNV must: have
1847    been called in the current command buffer prior to this drawing command
1848endif::VK_EXT_shader_object[]
1849endif::VK_NV_framebuffer_mixed_samples[]
1850ifdef::VK_NV_shading_rate_image[]
1851ifdef::VK_EXT_extended_dynamic_state3[]
1852  * [[VUID-{refpage}-None-07647]]
1853    If the bound graphics pipeline state was created with the
1854    ename:VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state
1855    enabled then flink:vkCmdSetShadingRateImageEnableNV must: have been
1856    called in the current command buffer prior to this drawing command
1857endif::VK_EXT_extended_dynamic_state3[]
1858ifdef::VK_EXT_shader_object[]
1859  * [[VUID-{refpage}-pipelineFragmentShadingRate-09238]]
1860    If the <<features-pipelineFragmentShadingRate,
1861    pname:pipelineFragmentShadingRate>> feature is enabled, and a shader
1862    object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT stage, and the
1863    most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current
1864    command buffer set rasterizerDiscardEnable to ename:VK_FALSE, then
1865    flink:vkCmdSetFragmentShadingRateKHR must: have been called in the
1866    current command buffer prior to this drawing command
1867  * [[VUID-{refpage}-None-08681]]
1868    If the <<features-shadingRateImage, pname:shadingRateImage>> feature is
1869    enabled, and a shader object is bound to any graphics stage, and the
1870    most recent call to flink:vkCmdSetRasterizerDiscardEnable in the current
1871    command buffer set pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1872    flink:vkCmdSetShadingRateImageEnableNV must: have been called in the
1873    current command buffer prior to this drawing command
1874endif::VK_EXT_shader_object[]
1875endif::VK_NV_shading_rate_image[]
1876ifdef::VK_NV_representative_fragment_test[]
1877ifdef::VK_EXT_extended_dynamic_state3[]
1878  * [[VUID-{refpage}-None-07648]]
1879    If the bound graphics pipeline state was created with the
1880    ename:VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic
1881    state enabled then flink:vkCmdSetRepresentativeFragmentTestEnableNV
1882    must: have been called in the current command buffer prior to this
1883    drawing command
1884endif::VK_EXT_extended_dynamic_state3[]
1885ifdef::VK_EXT_shader_object[]
1886  * [[VUID-{refpage}-None-08682]]
1887    If the <<features-representativeFragmentTest,
1888    pname:representativeFragmentTest>> feature is enabled, and a shader
1889    object is bound to any graphics stage, and the most recent call to
1890    flink:vkCmdSetRasterizerDiscardEnable in the current command buffer set
1891    pname:rasterizerDiscardEnable to ename:VK_FALSE, then
1892    flink:vkCmdSetRepresentativeFragmentTestEnableNV must: have been called
1893    in the current command buffer prior to this drawing command
1894endif::VK_EXT_shader_object[]
1895endif::VK_NV_representative_fragment_test[]
1896ifdef::VK_NV_coverage_reduction_mode[]
1897ifdef::VK_EXT_extended_dynamic_state3[]
1898  * [[VUID-{refpage}-None-07649]]
1899    If the bound graphics pipeline state was created with the
1900    ename:VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled
1901    then flink:vkCmdSetCoverageReductionModeNV must: have been called in the
1902    current command buffer prior to this drawing command
1903endif::VK_EXT_extended_dynamic_state3[]
1904ifdef::VK_EXT_shader_object[]
1905  * [[VUID-{refpage}-None-08683]]
1906    If the <<features-coverageReductionMode, pname:coverageReductionMode>>
1907    feature is enabled, and a shader object is bound to any graphics stage,
1908    and the most recent call to flink:vkCmdSetRasterizerDiscardEnable in the
1909    current command buffer set pname:rasterizerDiscardEnable to
1910    ename:VK_FALSE, then flink:vkCmdSetCoverageReductionModeNV must: have
1911    been called in the current command buffer prior to this drawing command
1912endif::VK_EXT_shader_object[]
1913endif::VK_NV_coverage_reduction_mode[]
1914  * [[VUID-{refpage}-pColorBlendEnables-07470]]
1915    If the bound graphics pipeline state was created with the
1916    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last
1917    call to flink:vkCmdSetColorBlendEnableEXT set pname:pColorBlendEnables
1918    for any attachment to ename:VK_TRUE, then for those attachments in the
1919    subpass the corresponding image view's
1920    <<resources-image-view-format-features,format features>> must: contain
1921    ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
1922  * [[VUID-{refpage}-rasterizationSamples-07471]]
1923    If the bound graphics pipeline state was created with the
1924    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the
1925    current subpass does not use any color and/or depth/stencil attachments,
1926    then the pname:rasterizationSamples in the last call to
1927    flink:vkCmdSetRasterizationSamplesEXT must: follow the rules for a
1928    <<renderpass-noattachments, zero-attachment subpass>>
1929  * [[VUID-{refpage}-samples-07472]]
1930    If the bound graphics pipeline state was created with the
1931    ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the
1932    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then
1933    the pname:samples parameter in the last call to
1934    flink:vkCmdSetSampleMaskEXT must: be greater or equal to the
1935    slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples
1936    parameter used to create the bound graphics pipeline
1937  * [[VUID-{refpage}-samples-07473]]
1938    If the bound graphics pipeline state was created with the
1939    ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT state and
1940    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, then
1941    the pname:samples parameter in the last call to
1942    flink:vkCmdSetSampleMaskEXT must: be greater or equal to the
1943    pname:rasterizationSamples parameter in the last call to
1944    flink:vkCmdSetRasterizationSamplesEXT
1945  * [[VUID-{refpage}-rasterizationSamples-07474]]
1946    If the bound graphics pipeline state was created with the
1947    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and
1948    neither the `apiext:VK_AMD_mixed_attachment_samples` nor the
1949    `apiext:VK_NV_framebuffer_mixed_samples` extensions are enabled, then
1950    the pname:rasterizationSamples in the last call to
1951    flink:vkCmdSetRasterizationSamplesEXT must: be the same as the current
1952    subpass color and/or depth/stencil attachments
1953ifdef::VK_EXT_multisampled_render_to_single_sampled[]
1954  * [[VUID-{refpage}-None-09211]]
1955    If the bound graphics pipeline state was created with the
1956    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled,
1957ifdef::VK_EXT_shader_object[]
1958    or a shader object is bound to any graphics stage,
1959endif::VK_EXT_shader_object[]
1960    and the current render pass instance includes a
1961    slink:VkMultisampledRenderToSingleSampledInfoEXT structure with
1962    pname:multisampledRenderToSingleSampledEnable equal to ename:VK_TRUE,
1963    then the pname:rasterizationSamples in the last call to
1964    flink:vkCmdSetRasterizationSamplesEXT must: be the same as the
1965    pname:rasterizationSamples member of that structure
1966endif::VK_EXT_multisampled_render_to_single_sampled[]
1967  * [[VUID-{refpage}-firstAttachment-07476]]
1968    If the bound graphics pipeline state was created with the
1969    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then
1970    flink:vkCmdSetColorBlendEnableEXT must: have been called in the current
1971    command buffer prior to this drawing command, and the attachments
1972    specified by the pname:firstAttachment and pname:attachmentCount
1973    parameters of fname:vkCmdSetColorBlendEnableEXT calls must: specify an
1974    enable for all active color attachments in the current subpass
1975ifdef::VK_EXT_shader_object[]
1976  * [[VUID-{refpage}-rasterizerDiscardEnable-09417]]
1977    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1978    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
1979    in the current command buffer set pname:rasterizerDiscardEnable to
1980    ename:VK_FALSE, then flink:vkCmdSetColorBlendEnableEXT must: have been
1981    called in the current command buffer prior to this drawing command, and
1982    the attachments specified by the pname:firstAttachment and
1983    pname:attachmentCount parameters of fname:vkCmdSetColorBlendEnableEXT
1984    calls must: specify an enable for all active color attachments in the
1985    current subpass
1986endif::VK_EXT_shader_object[]
1987  * [[VUID-{refpage}-firstAttachment-07477]]
1988    If the bound graphics pipeline state was created with the
1989    ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled
1990    then flink:vkCmdSetColorBlendEquationEXT must: have been called in the
1991    current command buffer prior to this drawing command, and the
1992    attachments specified by the pname:firstAttachment and
1993    pname:attachmentCount parameters of fname:vkCmdSetColorBlendEquationEXT
1994    calls must: specify the blend equations for all active color attachments
1995    in the current subpass where blending is enabled
1996ifdef::VK_EXT_shader_object[]
1997  * [[VUID-{refpage}-rasterizerDiscardEnable-09418]]
1998    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
1999    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
2000    in the current command buffer set pname:rasterizerDiscardEnable to
2001    ename:VK_FALSE, then flink:vkCmdSetColorBlendEquationEXT must: have been
2002    called in the current command buffer prior to this drawing command, and
2003    the attachments specified by the pname:firstAttachment and
2004    pname:attachmentCount parameters of fname:vkCmdSetColorBlendEquationEXT
2005    calls must: specify the blend equations for all active color attachments
2006    in the current subpass where blending is enabled
2007endif::VK_EXT_shader_object[]
2008  * [[VUID-{refpage}-firstAttachment-07478]]
2009    If the bound graphics pipeline state was created with the
2010    ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then
2011    flink:vkCmdSetColorWriteMaskEXT must: have been called in the current
2012    command buffer prior to this drawing command, and the attachments
2013    specified by the pname:firstAttachment and pname:attachmentCount
2014    parameters of fname:vkCmdSetColorWriteMaskEXT calls must: specify the
2015    color write mask for all active color attachments in the current subpass
2016ifdef::VK_EXT_shader_object[]
2017  * [[VUID-{refpage}-rasterizerDiscardEnable-09419]]
2018    If a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2019    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
2020    in the current command buffer set pname:rasterizerDiscardEnable to
2021    ename:VK_FALSE, then flink:vkCmdSetColorWriteMaskEXT must: have been
2022    called in the current command buffer prior to this drawing command, and
2023    the attachments specified by the pname:firstAttachment and
2024    pname:attachmentCount parameters of fname:vkCmdSetColorWriteMaskEXT
2025    calls must: specify the color write mask for all active color
2026    attachments in the current subpass
2027endif::VK_EXT_shader_object[]
2028ifdef::VK_EXT_blend_operation_advanced[]
2029  * [[VUID-{refpage}-firstAttachment-07479]]
2030    If the bound graphics pipeline state was created with the
2031    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled
2032    then flink:vkCmdSetColorBlendAdvancedEXT must: have been called in the
2033    current command buffer prior to this drawing command, and the
2034    attachments specified by the pname:firstAttachment and
2035    pname:attachmentCount parameters of fname:vkCmdSetColorBlendAdvancedEXT
2036    calls must: specify the advanced blend equations for all active color
2037    attachments in the current subpass where blending is enabled
2038  * [[VUID-{refpage}-advancedBlendMaxColorAttachments-07480]]
2039    If the bound graphics pipeline state was created with the
2040    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT and
2041    ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic states enabled and
2042    the last calls to flink:vkCmdSetColorBlendEnableEXT and
2043    flink:vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then
2044    the number of active color attachments in the current subpass must: not
2045    exceed <<limits-advancedBlendMaxColorAttachments,
2046    pname:advancedBlendMaxColorAttachments>>
2047endif::VK_EXT_blend_operation_advanced[]
2048ifdef::VK_EXT_transform_feedback[]
2049  * [[VUID-{refpage}-primitivesGeneratedQueryWithNonZeroStreams-07481]]
2050    If the <<features-primitivesGeneratedQueryWithNonZeroStreams,
2051    pname:primitivesGeneratedQueryWithNonZeroStreams>> feature is not
2052    enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is
2053    active, and the bound graphics pipeline was created with
2054    ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT state enabled, the last
2055    call to flink:vkCmdSetRasterizationStreamEXT must: have set the
2056    pname:rasterizationStream to zero
2057endif::VK_EXT_transform_feedback[]
2058ifdef::VK_EXT_sample_locations[]
2059  * [[VUID-{refpage}-sampleLocationsPerPixel-07482]]
2060    If the bound graphics pipeline state was created with the
2061    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the
2062    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then
2063    the pname:sampleLocationsPerPixel member of pname:pSampleLocationsInfo
2064    in the last call to flink:vkCmdSetSampleLocationsEXT must: equal the
2065    pname:rasterizationSamples member of the
2066    slink:VkPipelineMultisampleStateCreateInfo structure the bound graphics
2067    pipeline has been created with
2068  * [[VUID-{refpage}-sampleLocationsPerPixel-07483]]
2069    If the bound graphics pipeline state was created with the
2070    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the
2071    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, then the
2072    pname:sampleLocationsPerPixel member of pname:pSampleLocationsInfo in
2073    the last call to flink:vkCmdSetSampleLocationsEXT must: equal the
2074    pname:rasterizationSamples parameter of the last call to
2075    flink:vkCmdSetRasterizationSamplesEXT
2076  * [[VUID-{refpage}-sampleLocationsEnable-07484]]
2077    If
2078ifdef::VK_EXT_shader_object[]
2079    a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2080    stage, or
2081endif::VK_EXT_shader_object[]
2082    the bound graphics pipeline was created with the
2083    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and
2084    pname:sampleLocationsEnable was ename:VK_TRUE in the last call to
2085    flink:vkCmdSetSampleLocationsEnableEXT, and the current subpass has a
2086    depth/stencil attachment, then that attachment must: have been created
2087    with the ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
2088    bit set
2089  * [[VUID-{refpage}-sampleLocationsEnable-07485]]
2090    If
2091ifdef::VK_EXT_shader_object[]
2092    a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2093    stage, or
2094endif::VK_EXT_shader_object[]
2095    the bound graphics pipeline state was created with the
2096    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the
2097    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if
2098    pname:sampleLocationsEnable was ename:VK_TRUE in the last call to
2099    flink:vkCmdSetSampleLocationsEnableEXT, then the
2100    pname:sampleLocationsInfo.sampleLocationGridSize.width in the last call
2101    to flink:vkCmdSetSampleLocationsEXT must: evenly divide
2102    slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.width as
2103    returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a
2104    pname:samples parameter equaling pname:rasterizationSamples
2105  * [[VUID-{refpage}-sampleLocationsEnable-07486]]
2106    If
2107ifdef::VK_EXT_shader_object[]
2108    a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2109    stage, or
2110endif::VK_EXT_shader_object[]
2111    the bound graphics pipeline state was created with the
2112    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the
2113    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if
2114    pname:sampleLocationsEnable was ename:VK_TRUE in the last call to
2115    flink:vkCmdSetSampleLocationsEnableEXT, then the
2116    pname:sampleLocationsInfo.sampleLocationGridSize.height in the last call
2117    to flink:vkCmdSetSampleLocationsEXT must: evenly divide
2118    slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.height as
2119    returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a
2120    pname:samples parameter equaling pname:rasterizationSamples
2121  * [[VUID-{refpage}-sampleLocationsEnable-07487]]
2122    If
2123ifdef::VK_EXT_shader_object[]
2124    a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2125    stage, or
2126endif::VK_EXT_shader_object[]
2127    the bound graphics pipeline state was created with the
2128    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if
2129    pname:sampleLocationsEnable was ename:VK_TRUE in the last call to
2130    flink:vkCmdSetSampleLocationsEnableEXT, the fragment shader code must:
2131    not statically use the extended instruction code:InterpolateAtSample
2132  * [[VUID-{refpage}-sampleLocationsEnable-07936]]
2133    If the bound graphics pipeline state was created with the
2134    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the
2135    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, the
2136    pname:sampleLocationsEnable member of a
2137    slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
2138    in the bound graphics pipeline is ename:VK_TRUE or
2139    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, then,
2140    pname:sampleLocationsInfo.sampleLocationGridSize.width must: evenly
2141    divide
2142    slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.width as
2143    returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a
2144    pname:samples parameter equaling the value of pname:rasterizationSamples
2145    in the last call to flink:vkCmdSetRasterizationSamplesEXT
2146  * [[VUID-{refpage}-sampleLocationsEnable-07937]]
2147    If the bound graphics pipeline state was created with the
2148    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the
2149    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, the
2150    pname:sampleLocationsEnable member of a
2151    slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
2152    in the bound graphics pipeline is ename:VK_TRUE or
2153    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, then,
2154    pname:sampleLocationsInfo.sampleLocationGridSize.height must: evenly
2155    divide
2156    slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.height as
2157    returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a
2158    pname:samples parameter equaling the value of pname:rasterizationSamples
2159    in the last call to flink:vkCmdSetRasterizationSamplesEXT
2160  * [[VUID-{refpage}-sampleLocationsEnable-07938]]
2161    If the bound graphics pipeline state was created with the
2162    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state disabled and the
2163    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, the
2164    pname:sampleLocationsEnable member of a
2165    slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable
2166    in the bound graphics pipeline is ename:VK_TRUE or
2167    ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, then,
2168    pname:sampleLocationsInfo.sampleLocationsPerPixel must: equal
2169    pname:rasterizationSamples in the last call to
2170    flink:vkCmdSetRasterizationSamplesEXT
2171endif::VK_EXT_sample_locations[]
2172ifdef::VK_NV_framebuffer_mixed_samples[]
2173  * [[VUID-{refpage}-coverageModulationTableEnable-07488]]
2174    If
2175ifdef::VK_EXT_shader_object[]
2176    a shader object is bound to any graphics stage or
2177endif::VK_EXT_shader_object[]
2178    the bound graphics pipeline state was created with the
2179    ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state
2180    enabled, and the last call to
2181    flink:vkCmdSetCoverageModulationTableEnableNV set
2182    pname:coverageModulationTableEnable to ename:VK_TRUE, then the
2183    pname:coverageModulationTableCount parameter in the last call to
2184    flink:vkCmdSetCoverageModulationTableNV must: equal the current
2185    pname:rasterizationSamples divided by the number of color samples in the
2186    current subpass
2187  * [[VUID-{refpage}-rasterizationSamples-07489]]
2188    If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled,
2189    and if current subpass has a depth/stencil attachment and depth test,
2190    stencil test, or depth bounds test are enabled in the currently bound
2191    pipeline state, then the current pname:rasterizationSamples must: be the
2192    same as the sample count of the depth/stencil attachment
2193endif::VK_NV_framebuffer_mixed_samples[]
2194ifdef::VK_NV_fragment_coverage_to_color[]
2195  * [[VUID-{refpage}-coverageToColorEnable-07490]]
2196    If the bound graphics pipeline state was created with the
2197    ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the
2198    last call to flink:vkCmdSetCoverageToColorEnableNV set the
2199    pname:coverageToColorEnable to ename:VK_TRUE, then the current subpass
2200    must: have a color attachment at the location selected by the last call
2201    to flink:vkCmdSetCoverageToColorLocationNV
2202    pname:coverageToColorLocation, with a elink:VkFormat of
2203    ename:VK_FORMAT_R8_UINT, ename:VK_FORMAT_R8_SINT,
2204    ename:VK_FORMAT_R16_UINT, ename:VK_FORMAT_R16_SINT,
2205    ename:VK_FORMAT_R32_UINT, or ename:VK_FORMAT_R32_SINT
2206ifdef::VK_EXT_shader_object[]
2207  * [[VUID-{refpage}-rasterizerDiscardEnable-09420]]
2208    If the `apiext:VK_NV_fragment_coverage_to_color` extension is enabled,
2209    and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2210    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
2211    in the current command buffer set pname:rasterizerDiscardEnable to
2212    ename:VK_FALSE, and the last call to
2213    flink:vkCmdSetCoverageToColorEnableNV set the
2214    pname:coverageToColorEnable to ename:VK_TRUE, then the current subpass
2215    must: have a color attachment at the location selected by the last call
2216    to flink:vkCmdSetCoverageToColorLocationNV
2217    pname:coverageToColorLocation, with a elink:VkFormat of
2218    ename:VK_FORMAT_R8_UINT, ename:VK_FORMAT_R8_SINT,
2219    ename:VK_FORMAT_R16_UINT, ename:VK_FORMAT_R16_SINT,
2220    ename:VK_FORMAT_R32_UINT, or ename:VK_FORMAT_R32_SINT
2221endif::VK_EXT_shader_object[]
2222ifdef::VK_NV_coverage_reduction_mode[]
2223  * [[VUID-{refpage}-coverageReductionMode-07491]]
2224    If this `apiext:VK_NV_coverage_reduction_mode` extension is enabled, the
2225    bound graphics pipeline state was created with the
2226    ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and
2227    ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the
2228    current coverage reduction mode pname:coverageReductionMode, then the
2229    current pname:rasterizationSamples, and the sample counts for the color
2230    and depth/stencil attachments (if the subpass has them) must: be a valid
2231    combination returned by
2232    flink:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
2233endif::VK_NV_coverage_reduction_mode[]
2234endif::VK_NV_fragment_coverage_to_color[]
2235ifdef::VK_NV_viewport_swizzle[]
2236  * [[VUID-{refpage}-viewportCount-07492]]
2237    If the bound graphics pipeline state was created with the
2238    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but
2239    not the ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state
2240    enabled, then the bound graphics pipeline must: have been created with
2241    slink:VkPipelineViewportSwizzleStateCreateInfoNV::pname:viewportCount
2242    greater or equal to the pname:viewportCount parameter in the last call
2243    to flink:vkCmdSetViewportWithCount
2244  * [[VUID-{refpage}-viewportCount-07493]]
2245    If the bound graphics pipeline state was created with the
2246    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and
2247    ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then
2248    the pname:viewportCount parameter in the last call to
2249    flink:vkCmdSetViewportSwizzleNV must: be greater than or equal to the
2250    pname:viewportCount parameter in the last call to
2251    flink:vkCmdSetViewportWithCount
2252  * [[VUID-{refpage}-viewportCount-09421]]
2253    If the `apiext:VK_NV_viewport_swizzle` extension is enabled, and a
2254    shader object is bound to any graphics stage, then the
2255    pname:viewportCount parameter in the last call to
2256    flink:vkCmdSetViewportSwizzleNV must: be greater than or equal to the
2257    pname:viewportCount parameter in the last call to
2258    flink:vkCmdSetViewportWithCount
2259endif::VK_NV_viewport_swizzle[]
2260ifdef::VK_NV_framebuffer_mixed_samples[]
2261  * [[VUID-{refpage}-rasterizationSamples-07494]]
2262    If the `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled,
2263    and if the current subpass has any color attachments and
2264    pname:rasterizationSamples of the last call to
2265    flink:vkCmdSetRasterizationSamplesEXT is greater than the number of
2266    color samples, then the pipeline pname:sampleShadingEnable must: be
2267    ename:VK_FALSE
2268endif::VK_NV_framebuffer_mixed_samples[]
2269ifdef::VK_EXT_line_rasterization[]
2270  * [[VUID-{refpage}-stippledLineEnable-07495]]
2271    If the bound graphics pipeline state was created with the
2272    ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or
2273    ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states
2274    enabled, and if the current pname:stippledLineEnable state is
2275    ename:VK_TRUE and the current pname:lineRasterizationMode state is
2276    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, then the
2277    <<features-stippledRectangularLines, pname:stippledRectangularLines>>
2278    feature must: be enabled
2279  * [[VUID-{refpage}-stippledLineEnable-07496]]
2280    If the bound graphics pipeline state was created with the
2281    ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or
2282    ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states
2283    enabled, and if the current pname:stippledLineEnable state is
2284    ename:VK_TRUE and the current pname:lineRasterizationMode state is
2285    ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, then the
2286    <<features-stippledBresenhamLines, pname:stippledBresenhamLines>>
2287    feature must: be enabled
2288  * [[VUID-{refpage}-stippledLineEnable-07497]]
2289    If the bound graphics pipeline state was created with the
2290    ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or
2291    ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states
2292    enabled, and if the current pname:stippledLineEnable state is
2293    ename:VK_TRUE and the current pname:lineRasterizationMode state is
2294    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, then the
2295    <<features-stippledSmoothLines, pname:stippledSmoothLines>> feature
2296    must: be enabled
2297  * [[VUID-{refpage}-stippledLineEnable-07498]]
2298    If the bound graphics pipeline state was created with the
2299    ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or
2300    ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states
2301    enabled, and if the current pname:stippledLineEnable state is
2302    ename:VK_TRUE and the current pname:lineRasterizationMode state is
2303    ename:VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the
2304    <<features-stippledRectangularLines, pname:stippledRectangularLines>>
2305    feature must: be enabled and
2306    slink:VkPhysicalDeviceLimits::pname:strictLines must: be ename:VK_TRUE
2307endif::VK_EXT_line_rasterization[]
2308ifdef::VK_EXT_conservative_rasterization[]
2309  * [[VUID-{refpage}-conservativePointAndLineRasterization-07499]]
2310    If the bound graphics pipeline state was created with the
2311    ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state
2312    enabled, <<limits-conservativePointAndLineRasterization,
2313    pname:conservativePointAndLineRasterization>> is not supported, and the
2314    effective primitive topology output by the last pre-rasterization shader
2315    stage is a line or point, then the pname:conservativeRasterizationMode
2316    set by the last call to flink:vkCmdSetConservativeRasterizationModeEXT
2317    must: be ename:VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
2318endif::VK_EXT_conservative_rasterization[]
2319endif::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[]
2320ifdef::VK_EXT_mesh_shader[]
2321  * [[VUID-{refpage}-stage-07073]]
2322    If the currently bound pipeline was created with the
2323    slink:VkPipelineShaderStageCreateInfo::pname:stage member of an element
2324    of slink:VkGraphicsPipelineCreateInfo::pname:pStages set to
2325    ename:VK_SHADER_STAGE_VERTEX_BIT,
2326    ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
2327    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or
2328    ename:VK_SHADER_STAGE_GEOMETRY_BIT, then <<queries-mesh-shader, Mesh
2329    Shader Queries>> must: not be active
2330endif::VK_EXT_mesh_shader[]
2331ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
2332  * [[VUID-{refpage}-None-08877]]
2333    If the bound graphics pipeline state was created with the
2334    ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT dynamic state
2335    flink:vkCmdSetAttachmentFeedbackLoopEnableEXT must: have been called in
2336    the current command buffer prior to this drawing command
2337endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
2338ifdef::VK_NV_inherited_viewport_scissor[]
2339  * [[VUID-{refpage}-None-07850]]
2340    If dynamic state was inherited from
2341    slink:VkCommandBufferInheritanceViewportScissorInfoNV, it must: be set
2342    in the current command buffer prior to this drawing command
2343endif::VK_NV_inherited_viewport_scissor[]
2344ifdef::VK_EXT_shader_object[]
2345  * [[VUID-{refpage}-None-08684]]
2346    If there is no bound graphics pipeline, fname:vkCmdBindShadersEXT must:
2347    have been called in the current command buffer with pname:pStages with
2348    an element of ename:VK_SHADER_STAGE_VERTEX_BIT
2349  * [[VUID-{refpage}-None-08685]]
2350    If there is no bound graphics pipeline, and the
2351    <<features-tessellationShader, pname:tessellationShader>> feature is
2352    enabled, fname:vkCmdBindShadersEXT must: have been called in the current
2353    command buffer with pname:pStages with an element of
2354    ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
2355  * [[VUID-{refpage}-None-08686]]
2356    If there is no bound graphics pipeline, and the
2357    <<features-tessellationShader, pname:tessellationShader>> feature is
2358    enabled, fname:vkCmdBindShadersEXT must: have been called in the current
2359    command buffer with pname:pStages with an element of
2360    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
2361  * [[VUID-{refpage}-None-08687]]
2362    If there is no bound graphics pipeline, and the
2363    <<features-geometryShader, pname:geometryShader>> feature is enabled,
2364    fname:vkCmdBindShadersEXT must: have been called in the current command
2365    buffer with pname:pStages with an element of
2366    ename:VK_SHADER_STAGE_GEOMETRY_BIT
2367  * [[VUID-{refpage}-None-08688]]
2368    If there is no bound graphics pipeline, fname:vkCmdBindShadersEXT must:
2369    have been called in the current command buffer with pname:pStages with
2370    an element of ename:VK_SHADER_STAGE_FRAGMENT_BIT
2371ifdef::VK_EXT_mesh_shader[]
2372  * [[VUID-{refpage}-None-08689]]
2373    If there is no bound graphics pipeline, and the <<features-taskShader,
2374    pname:taskShader>> feature is enabled, fname:vkCmdBindShadersEXT must:
2375    have been called in the current command buffer with pname:pStages with
2376    an element of ename:VK_SHADER_STAGE_TASK_BIT_EXT
2377  * [[VUID-{refpage}-None-08690]]
2378    If there is no bound graphics pipeline, and the <<features-meshShader,
2379    pname:meshShader>> feature is enabled, fname:vkCmdBindShadersEXT must:
2380    have been called in the current command buffer with pname:pStages with
2381    an element of ename:VK_SHADER_STAGE_MESH_BIT_EXT
2382  * [[VUID-{refpage}-None-08693]]
2383    If there is no bound graphics pipeline, and at least one of the
2384    <<features-taskShader, pname:taskShader>> and <<features-meshShader,
2385    pname:meshShader>> features is enabled, one of the
2386    ename:VK_SHADER_STAGE_VERTEX_BIT or ename:VK_SHADER_STAGE_MESH_BIT_EXT
2387    stages must: have a valid sname:VkShaderEXT bound, and the other must:
2388    have no sname:VkShaderEXT bound
2389  * [[VUID-{refpage}-None-08694]]
2390    If there is no bound graphics pipeline, and both the
2391    <<features-taskShader, pname:taskShader>> and <<features-meshShader,
2392    pname:meshShader>> features are enabled, and a valid sname:VkShaderEXT
2393    is bound the to the ename:VK_SHADER_STAGE_MESH_BIT_EXT stage, and that
2394    sname:VkShaderEXT was created without the
2395    ename:VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid
2396    sname:VkShaderEXT must: be bound to the
2397    ename:VK_SHADER_STAGE_TASK_BIT_EXT stage
2398  * [[VUID-{refpage}-None-08695]]
2399    If there is no bound graphics pipeline, and both the
2400    <<features-taskShader, pname:taskShader>> and <<features-meshShader,
2401    pname:meshShader>> features are enabled, and a valid sname:VkShaderEXT
2402    is bound the to the ename:VK_SHADER_STAGE_MESH_BIT_EXT stage, and that
2403    sname:VkShaderEXT was created with the
2404    ename:VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must: be no
2405    sname:VkShaderEXT bound to the ename:VK_SHADER_STAGE_TASK_BIT_EXT stage
2406  * [[VUID-{refpage}-None-08696]]
2407    If there is no bound graphics pipeline, and a valid sname:VkShaderEXT is
2408    bound to the ename:VK_SHADER_STAGE_VERTEX_BIT stage, there must: be no
2409    sname:VkShaderEXT bound to either the ename:VK_SHADER_STAGE_TASK_BIT_EXT
2410    stage or the ename:VK_SHADER_STAGE_MESH_BIT_EXT stage
2411endif::VK_EXT_mesh_shader[]
2412  * [[VUID-{refpage}-None-08698]]
2413    If any graphics shader is bound which was created with the
2414    ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created
2415    with the ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same
2416    flink:vkCreateShadersEXT call must: also be bound
2417  * [[VUID-{refpage}-None-08699]]
2418    If any graphics shader is bound which was created with the
2419    ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between
2420    stages whose shaders which did not create a shader with the
2421    ename:VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same
2422    flink:vkCreateShadersEXT call must: not have any sname:VkShaderEXT bound
2423  * [[VUID-{refpage}-None-08878]]
2424    All bound graphics shader objects must: have been created with identical
2425    or identically defined push constant ranges
2426  * [[VUID-{refpage}-None-08879]]
2427    All bound graphics shader objects must: have been created with identical
2428    or identically defined arrays of descriptor set layouts
2429ifdef::VK_ANDROID_external_format_resolve[]
2430  * [[VUID-{refpage}-colorAttachmentCount-09372]]
2431    If the current render pass instance was begun with
2432    flink:vkCmdBeginRendering and a
2433    slink:VkRenderingInfo::pname:colorAttachmentCount equal to `1`, a color
2434    attachment with a resolve mode of
2435    ename:VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment
2436    shader is bound, it must: not declare the code:DepthReplacing or
2437    code:StencilRefReplacingEXT execution modes
2438endif::VK_ANDROID_external_format_resolve[]
2439endif::VK_EXT_shader_object[]
2440ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
2441  * [[VUID-{refpage}-None-08880]]
2442    If the <<features-attachmentFeedbackLoopDynamicState,
2443    attachmentFeedbackLoopDynamicState>> feature is enabled on the device,
2444    and a shader object is bound to the ename:VK_SHADER_STAGE_FRAGMENT_BIT
2445    stage, and the most recent call to flink:vkCmdSetRasterizerDiscardEnable
2446    in the current command buffer set pname:rasterizerDiscardEnable to
2447    ename:VK_FALSE, then flink:vkCmdSetAttachmentFeedbackLoopEnableEXT must:
2448    have been called in the current command buffer prior to this drawing
2449    command
2450endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
2451ifdef::VK_EXT_shader_tile_image[]
2452  * [[VUID-{refpage}-pDynamicStates-08715]]
2453    If the bound graphics pipeline state includes a fragment shader stage,
2454    was created with ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in
2455    slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates, and the
2456    fragment shader declares the code:EarlyFragmentTests execution mode and
2457    uses code:OpDepthAttachmentReadEXT, the pname:depthWriteEnable parameter
2458    in the last call to flink:vkCmdSetDepthWriteEnable must: be
2459    ename:VK_FALSE
2460  * [[VUID-{refpage}-pDynamicStates-08716]]
2461    If the bound graphics pipeline state includes a fragment shader stage,
2462    was created with ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in
2463    slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates, and the
2464    fragment shader declares the code:EarlyFragmentTests execution mode and
2465    uses code:OpStencilAttachmentReadEXT, the pname:writeMask parameter in
2466    the last call to flink:vkCmdSetStencilWriteMask must: be `0`
2467endif::VK_EXT_shader_tile_image[]
2468ifdef::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[]
2469  * [[VUID-{refpage}-None-09116]]
2470    If
2471ifdef::VK_EXT_shader_object[]
2472    a shader object is bound to any graphics stage
2473endif::VK_EXT_shader_object[]
2474ifdef::VK_EXT_extended_dynamic_state3+VK_EXT_shader_object[or]
2475ifdef::VK_EXT_extended_dynamic_state3[]
2476    the currently bound graphics pipeline was created with
2477    ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT,
2478endif::VK_EXT_extended_dynamic_state3[]
2479    and the format of any color attachment is
2480    ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, the corresponding element of the
2481    pname:pColorWriteMasks parameter of flink:vkCmdSetColorWriteMaskEXT
2482    must: either include all of ename:VK_COLOR_COMPONENT_R_BIT,
2483    ename:VK_COLOR_COMPONENT_G_BIT, and ename:VK_COLOR_COMPONENT_B_BIT, or
2484    none of them
2485endif::VK_EXT_extended_dynamic_state3,VK_EXT_shader_object[]
2486  * [[VUID-{refpage}-maxFragmentDualSrcAttachments-09239]]
2487    If <<framebuffer-blending,blending>> is enabled for any attachment where
2488    either the source or destination blend factors for that attachment
2489    <<framebuffer-dsb, use the secondary color input>>, the maximum value of
2490    code:Location for any output attachment <<shaders-staticuse, statically
2491    used>> in the code:Fragment {ExecutionModel} executed by this command
2492    must: be less than <<limits-maxFragmentDualSrcAttachments,
2493    pname:maxFragmentDualSrcAttachments>>
2494// Common Valid Usage
2495