// Copyright 2019-2024 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// Common Valid Usage
// Common to all drawing commands that have a firstInstance parameter.  For
// indirect commands, these VUs pertain to VkDrawIndirectCommand.

ifdef::VK_KHR_vertex_attribute_divisor[]
  * [[VUID-{refpage}-pNext-09461]]
    If the bound graphics pipeline state was created with
    slink:VkPipelineVertexInputDivisorStateCreateInfoKHR in the pname:pNext
    chain of slink:VkGraphicsPipelineCreateInfo::pname:pVertexInputState,
    any member of
    slink:VkPipelineVertexInputDivisorStateCreateInfoKHR::pname:pVertexBindingDivisors
    has a value other than `1` in pname:divisor, and
    slink:VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR::pname:supportsNonZeroFirstInstance
    is ename:VK_FALSE, then pname:firstInstance must: be `0`
  * [[VUID-{refpage}-None-09462]]
    If
ifdef::VK_EXT_shader_object[]
    <<shaders-objects, shader objects>> are used for drawing or
endif::VK_EXT_shader_object[]
    the bound graphics pipeline state was created with the
    ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any
    member of the pname:pVertexBindingDescriptions parameter to the
    flink:vkCmdSetVertexInputEXT call that sets this dynamic state has a
    value other than `1` in pname:divisor, and
    slink:VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR::pname:supportsNonZeroFirstInstance
    is ename:VK_FALSE, then pname:firstInstance must: be `0`
endif::VK_KHR_vertex_attribute_divisor[]

// Common Valid Usage
