1// Copyright 2018-2024 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5include::{generated}/meta/{refprefix}VK_EXT_shader_atomic_float2.adoc[] 6 7=== Other Extension Metadata 8 9*Last Modified Date*:: 10 2020-08-14 11*IP Status*:: 12 No known IP claims. 13*Interactions and External Dependencies*:: 14 - This extension provides API support for 15 {GLSLregistry}/ext/GLSL_EXT_shader_atomic_float2.txt[`GLSL_EXT_shader_atomic_float2`] 16*Contributors*:: 17 - Faith Ekstrand, Intel 18 19=== Description 20 21This extension allows a shader to perform 16-bit floating-point atomic 22operations on buffer and workgroup memory as well as floating-point atomic 23minimum and maximum operations on buffer, workgroup, and image memory. 24It advertises the SPIR-V code:AtomicFloat16AddEXT capability which allows 25atomic add operations on 16-bit floating-point numbers and the SPIR-V 26code:AtomicFloat16MinMaxEXT, code:AtomicFloat32MinMaxEXT and 27code:AtomicFloat64MinMaxEXT capabilities which allow atomic minimum and 28maximum operations on floating-point numbers. 29The supported operations include code:OpAtomicFAddEXT, code:OpAtomicFMinEXT 30and code:OpAtomicFMaxEXT. 31 32include::{generated}/interfaces/VK_EXT_shader_atomic_float2.adoc[] 33 34=== Issues 35 361) Should this extension add support for 16-bit image atomics? 37 38*RESOLVED*: No. 39While Vulkan supports creating storage images with 40ename:VK_FORMAT_R16_SFLOAT and doing load and store on them, the data in the 41shader has a 32-bit representation. 42Vulkan currently has no facility for even basic reading or writing such 43images using 16-bit float values in the shader. 44Adding such functionality would be required before 16-bit image atomics 45would make sense and is outside the scope of this extension. 46 47=== New SPIR-V Capabilities 48 49 * <<spirvenv-capabilities-table-AtomicFloat16AddEXT, 50 code:AtomicFloat32MinMaxEXT>> 51 * <<spirvenv-capabilities-table-AtomicFloat16MinMaxEXT, 52 code:AtomicFloat32MinMaxEXT>> 53 * <<spirvenv-capabilities-table-AtomicFloat32MinMaxEXT, 54 code:AtomicFloat32MinMaxEXT>> 55 * <<spirvenv-capabilities-table-AtomicFloat64MinMaxEXT, 56 code:AtomicFloat64MinMaxEXT>> 57 58=== Version History 59 60 * Revision 1, 2020-08-14 (Faith Ekstrand) 61 ** Internal revisions 62