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