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

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

=== Other Extension Metadata

*Last Modified Date*::
    2018-02-05
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
  - This extension requires
    {spirv}/KHR/SPV_KHR_8bit_storage.html[`SPV_KHR_8bit_storage`]
  - This extension provides API support for
    https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt[`GL_EXT_shader_16bit_storage`]
*IP Status*::
    No known IP claims.
*Contributors*::
  - Alexander Galazin, Arm

=== Description

The `VK_KHR_8bit_storage` extension allows use of 8-bit types in uniform and
storage buffers, and push constant blocks.
This extension introduces several new optional features which map to SPIR-V
capabilities and allow access to 8-bit data in code:Block-decorated objects
in the code:Uniform and the code:StorageBuffer storage classes, and objects
in the code:PushConstant storage class.

The code:StorageBuffer8BitAccess capability must: be supported by all
implementations of this extension.
The other capabilities are optional.

=== Promotion to Vulkan 1.2

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, the
code:StorageBuffer8BitAccess capability is optional.
The original type, enum and command names are still available as aliases of
the core functionality.

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

=== New SPIR-V Capabilities

  * <<spirvenv-capabilities-table-StorageBuffer8BitAccess,
    code:StorageBuffer8BitAccess>>
  * <<spirvenv-capabilities-table-UniformAndStorageBuffer8BitAccess,
    code:UniformAndStorageBuffer8BitAccess>>
  * <<spirvenv-capabilities-table-StoragePushConstant8,
    code:StoragePushConstant8>>

=== Version History

  * Revision 1, 2018-02-05 (Alexander Galazin)
    - Initial draft
