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