// Copyright (c) 2016-2020 Advanced Micro Devices, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_AMD_shader_explicit_vertex_parameter.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2016-05-10
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/AMD/SPV_AMD_shader_explicit_vertex_parameter.html[`SPV_AMD_shader_explicit_vertex_parameter`]
*Contributors*::
  - Matthaeus G. Chajdas, AMD
  - Qun Lin, AMD
  - Daniel Rakos, AMD
  - Graham Sellers, AMD
  - Rex Xu, AMD

=== Description

This extension adds support for the following SPIR-V extension in Vulkan:

  * {spirv}/AMD/SPV_AMD_shader_explicit_vertex_parameter.html[`SPV_AMD_shader_explicit_vertex_parameter`]

include::{generated}/interfaces/VK_AMD_shader_explicit_vertex_parameter.txt[]

=== Version History

 * Revision 1, 2016-05-10 (Daniel Rakos)
   - Initial draft
