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

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

=== Other Extension Metadata

*Last Modified Date*::
    2018-03-07
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
  - This extension interacts with `apiext:VK_KHR_8bit_storage`
  - This extension interacts with `apiext:VK_KHR_16bit_storage`
  - This extension interacts with `apiext:VK_KHR_shader_float_controls`
  - This extension provides API support for
    https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_explicit_arithmetic_types.txt[`GL_EXT_shader_explicit_arithmetic_types`]
*IP Status*::
    No known IP claims.
*Contributors*::
    - Alexander Galazin, Arm
    - Jan-Harald Fredriksen, Arm
    - Jeff Bolz, NVIDIA
    - Graeme Leese, Broadcom
    - Daniel Rakos, AMD

=== Description

The `VK_KHR_shader_float16_int8` extension allows use of 16-bit
floating-point types and 8-bit integer types in shaders for arithmetic
operations.

It introduces two new optional features pname:shaderFloat16 and
pname:shaderInt8 which directly map to the code:Float16 and the code:Int8
SPIR-V capabilities.
The `VK_KHR_shader_float16_int8` extension also specifies precision
requirements for half-precision floating-point SPIR-V operations.
This extension does not enable use of 8-bit integer types or 16-bit
floating-point types in any <<interfaces-iointerfaces, shader input and
output interfaces>> and therefore does not supersede the
`apiext:VK_KHR_8bit_storage` or `apiext:VK_KHR_16bit_storage` extensions.

=== Promotion to Vulkan 1.2

All functionality in this extension is included in core Vulkan 1.2, with the
KHR suffix omitted.
However, if Vulkan 1.2 is supported and this extension is not, both the
code:shaderFloat16 and code:shaderInt8 capabilities are optional.
The original type, enum and command names are still available as aliases of
the core functionality.

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

=== Version History
  * Revision 1, 2018-03-07 (Alexander Galazin)
    - Initial draft
