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

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

=== Other Extension Metadata

*Last Modified Date*::
    2019-04-11
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/AMD/SPV_AMD_gpu_shader_int16.html[`SPV_AMD_gpu_shader_int16`]
*Contributors*::
  - Daniel Rakos, AMD
  - Dominik Witczak, AMD
  - Matthaeus G. Chajdas, AMD
  - Rex Xu, AMD
  - Timothy Lottes, AMD
  - Zhi Cai, AMD
*External Dependencies*::
  - {spirv}/AMD/SPV_AMD_gpu_shader_int16.html[`SPV_AMD_gpu_shader_int16`]

=== Description

This extension adds support for using 16-bit integer variables in shaders.

=== Deprecation by `VK_KHR_shader_float16_int8`

Functionality in this extension was included in
`apiext:VK_KHR_shader_float16_int8` extension, when
slink:VkPhysicalDeviceFeatures::pname:shaderInt16 and
slink:VkPhysicalDeviceShaderFloat16Int8FeaturesKHR::pname:shaderFloat16 are
enabled.

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

=== Version History

 * Revision 2, 2019-04-11 (Tobias Hector)
   - Marked as deprecated
 * Revision 1, 2017-06-18 (Dominik Witczak)
   - First version
