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

// Common Valid Usage
// Common to drawing commands that consume vertex binding state
  * [[VUID-{refpage}-None-04007]]
    All vertex input bindings accessed via vertex input variables declared
    in the vertex shader entry point's interface must: have either valid or
    dlink:VK_NULL_HANDLE buffers bound
  * [[VUID-{refpage}-None-04008]]
    If the <<features-nullDescriptor,nullDescriptor>> feature is not
    enabled, all vertex input bindings accessed via vertex input variables
    declared in the vertex shader entry point's interface must: not be
    dlink:VK_NULL_HANDLE
  * [[VUID-{refpage}-None-02721]]
    For a given vertex buffer binding, any attribute data fetched must: be
    entirely contained within the corresponding vertex buffer binding, as
    described in <<fxvertex-input>>
// Common Valid Usage
