• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019-2022 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5// Common Valid Usage
6// Common to drawing commands that consume vertex binding state
7  * [[VUID-{refpage}-None-04007]]
8    All vertex input bindings accessed via vertex input variables declared
9    in the vertex shader entry point's interface must: have either valid or
10    dlink:VK_NULL_HANDLE buffers bound
11  * [[VUID-{refpage}-None-04008]]
12    If the <<features-nullDescriptor, pname:nullDescriptor>> feature is not
13    enabled, all vertex input bindings accessed via vertex input variables
14    declared in the vertex shader entry point's interface must: not be
15    dlink:VK_NULL_HANDLE
16  * [[VUID-{refpage}-None-02721]]
17    For a given vertex buffer binding, any attribute data fetched must: be
18    entirely contained within the corresponding vertex buffer binding, as
19    described in <<fxvertex-input>>
20ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
21ifndef::VK_EXT_extended_dynamic_state3[]
22  * [[VUID-{refpage}-primitiveTopology-03420]]
23    If the bound graphics pipeline state was created with the
24    ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then
25    flink:vkCmdSetPrimitiveTopology must: have been called in the current
26    command buffer prior to this drawing command, and the
27    pname:primitiveTopology parameter of fname:vkCmdSetPrimitiveTopology
28    must: be of the same <<drawing-primitive-topology-class, topology
29    class>> as the pipeline
30    slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology state
31endif::VK_EXT_extended_dynamic_state3[]
32ifdef::VK_EXT_extended_dynamic_state3[]
33  * [[VUID-{refpage}-dynamicPrimitiveTopologyUnrestricted-07500]]
34    If the bound graphics pipeline state was created with the
35    ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled and
36    the <<limits-dynamicPrimitiveTopologyUnrestricted,
37    pname:dynamicPrimitiveTopologyUnrestricted>> is ename:VK_FALSE, then the
38    pname:primitiveTopology parameter in the last call to
39    flink:vkCmdSetPrimitiveTopology must: be of the same
40    <<drawing-primitive-topology-class, topology class>> as the pipeline
41    slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology state
42endif::VK_EXT_extended_dynamic_state3[]
43ifdef::VK_EXT_vertex_input_dynamic_state[]
44  * [[VUID-{refpage}-None-04912]]
45    If the bound graphics pipeline was created with both the
46    ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT and
47    ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic states
48    enabled, then flink:vkCmdSetVertexInputEXT must: have been called in the
49    current command buffer prior to this draw command
50  * [[VUID-{refpage}-pStrides-04913]]
51    If the bound graphics pipeline was created with the
52    ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state
53    enabled, but not the ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic
54    state enabled, then flink:vkCmdBindVertexBuffers2EXT must: have been
55    called in the current command buffer prior to this draw command, and the
56    pname:pStrides parameter of flink:vkCmdBindVertexBuffers2EXT must: not
57    be `NULL`
58endif::VK_EXT_vertex_input_dynamic_state[]
59ifndef::VK_EXT_vertex_input_dynamic_state[]
60  * [[VUID-{refpage}-pStrides-04884]]
61    If the bound graphics pipeline was created with the
62    ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state
63    enabled, then flink:vkCmdBindVertexBuffers2EXT must: have been called in
64    the current command buffer prior to this drawing command, and the
65    pname:pStrides parameter of flink:vkCmdBindVertexBuffers2EXT must: not
66    be `NULL`
67endif::VK_EXT_vertex_input_dynamic_state[]
68endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
69ifdef::VK_EXT_vertex_input_dynamic_state[]
70  * [[VUID-{refpage}-None-04914]]
71    If the bound graphics pipeline state was created with the
72    ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then
73    flink:vkCmdSetVertexInputEXT must: have been called in the current
74    command buffer prior to this draw command
75endif::VK_EXT_vertex_input_dynamic_state[]
76ifdef::VK_EXT_extended_dynamic_state2[]
77  * [[VUID-{refpage}-None-04875]]
78    If the bound graphics pipeline state was created with the
79    ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled
80    then flink:vkCmdSetPatchControlPointsEXT must: have been called in the
81    current command buffer prior to this drawing command
82endif::VK_EXT_extended_dynamic_state2[]
83ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[]
84  * [[VUID-{refpage}-None-04879]]
85    If the bound graphics pipeline state was created with the
86    ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled
87    then flink:vkCmdSetPrimitiveRestartEnable must: have been called in the
88    current command buffer prior to this drawing command
89endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[]
90ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
91  * [[VUID-{refpage}-stage-06481]]
92    The bound graphics pipeline must: not have been created with the
93    slink:VkPipelineShaderStageCreateInfo::pname:stage member of an element
94    of slink:VkGraphicsPipelineCreateInfo::pname:pStages set to
95    ename:VK_SHADER_STAGE_TASK_BIT_EXT or ename:VK_SHADER_STAGE_MESH_BIT_EXT
96endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
97// Common Valid Usage
98