| // Copyright (c) 2018-2020 The Khronos Group Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_EXT_shader_atomic_float2.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2020-08-14 |
| *IP Status*:: |
| No known IP claims. |
| *Interactions and External Dependencies*:: |
| - This extension requires the VK_EXT_shader_atomic_float extension. |
| - This extension requires |
| {spirv}/EXT/SPV_EXT_shader_atomic_float_min_max.html[`SPV_EXT_shader_atomic_float_min_max`] |
| and |
| {spirv}/EXT/SPV_EXT_shader_atomic_float16_add.html[`SPV_EXT_shader_atomic_float16_add`] |
| - This extension provides API support for |
| https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_shader_atomic_float2.txt[`GLSL_EXT_shader_atomic_float2`] |
| *Contributors*:: |
| - Jason Ekstrand, Intel |
| |
| === Description |
| |
| This extension allows a shader to perform 16-bit floating-point atomic |
| operations on buffer and workgroup memory as well as floating-point atomic |
| minimum and maximum operations on buffer, workgroup, and image memory. |
| It advertises the SPIR-V code:AtomicFloat16AddEXT capability which allows |
| atomic add operations on 16-bit floating-point numbers and the SPIR-V |
| code:AtomicFloat16MinMaxEXT, code:AtomicFloat32MinMaxEXT and |
| code:AtomicFloat64MinMaxEXT capabilities which allow atomic minimum and |
| maximum operations on floating-point numbers. |
| The supported operations include code:OpAtomicFAddEXT, code:OpAtomicFMinEXT |
| and code:OpAtomicFMaxEXT. |
| |
| include::{generated}/interfaces/VK_EXT_shader_atomic_float2.txt[] |
| |
| === Issues |
| |
| 1) Should this extension add support for 16-bit image atomics? |
| |
| *RESOLVED*: No. |
| While Vulkan supports creating storage images with |
| ename:VK_FORMAT_R16_SFLOAT and doing load and store on them, the data in the |
| shader has a 32-bit representation. |
| Vulkan currently has no facility for even basic reading or writing such |
| images using 16-bit float values in the shader. |
| Adding such functionality would be required before 16-bit image atomics |
| would make sense and is outside the scope of this extension. |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-AtomicFloat16AddEXT, |
| code:AtomicFloat32MinMaxEXT>> |
| * <<spirvenv-capabilities-table-AtomicFloat16MinMaxEXT, |
| code:AtomicFloat32MinMaxEXT>> |
| * <<spirvenv-capabilities-table-AtomicFloat32MinMaxEXT, |
| code:AtomicFloat32MinMaxEXT>> |
| * <<spirvenv-capabilities-table-AtomicFloat64MinMaxEXT, |
| code:AtomicFloat64MinMaxEXT>> |
| |
| === Version History |
| |
| * Revision 1, 2020-08-14 (Jason Ekstrand) |
| - Internal revisions |