// 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 * <> * <> * <> * <> === Version History * Revision 1, 2020-08-14 (Jason Ekstrand) - Internal revisions