1// Copyright (c) 2018-2020 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5include::{generated}/meta/{refprefix}VK_EXT_shader_atomic_float2.txt[] 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 requires the VK_EXT_shader_atomic_float extension. 15 - This extension requires 16 {spirv}/EXT/SPV_EXT_shader_atomic_float_min_max.html[`SPV_EXT_shader_atomic_float_min_max`] 17 and 18 {spirv}/EXT/SPV_EXT_shader_atomic_float16_add.html[`SPV_EXT_shader_atomic_float16_add`] 19 - This extension provides API support for 20 https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_shader_atomic_float2.txt[`GLSL_EXT_shader_atomic_float2`] 21*Contributors*:: 22 - Jason Ekstrand, Intel 23 24=== Description 25 26This extension allows a shader to perform 16-bit floating-point atomic 27operations on buffer and workgroup memory as well as floating-point atomic 28minimum and maximum operations on buffer, workgroup, and image memory. 29It advertises the SPIR-V code:AtomicFloat16AddEXT capability which allows 30atomic add operations on 16-bit floating-point numbers and the SPIR-V 31code:AtomicFloat16MinMaxEXT, code:AtomicFloat32MinMaxEXT and 32code:AtomicFloat64MinMaxEXT capabilities which allow atomic minimum and 33maximum operations on floating-point numbers. 34The supported operations include code:OpAtomicFAddEXT, code:OpAtomicFMinEXT 35and code:OpAtomicFMaxEXT. 36 37include::{generated}/interfaces/VK_EXT_shader_atomic_float2.txt[] 38 39=== Issues 40 411) Should this extension add support for 16-bit image atomics? 42 43*RESOLVED*: No. 44While Vulkan supports creating storage images with 45ename:VK_FORMAT_R16_SFLOAT and doing load and store on them, the data in the 46shader has a 32-bit representation. 47Vulkan currently has no facility for even basic reading or writing such 48images using 16-bit float values in the shader. 49Adding such functionality would be required before 16-bit image atomics 50would make sense and is outside the scope of this extension. 51 52=== New SPIR-V Capabilities 53 54 * <<spirvenv-capabilities-table-AtomicFloat16AddEXT, 55 code:AtomicFloat32MinMaxEXT>> 56 * <<spirvenv-capabilities-table-AtomicFloat16MinMaxEXT, 57 code:AtomicFloat32MinMaxEXT>> 58 * <<spirvenv-capabilities-table-AtomicFloat32MinMaxEXT, 59 code:AtomicFloat32MinMaxEXT>> 60 * <<spirvenv-capabilities-table-AtomicFloat64MinMaxEXT, 61 code:AtomicFloat64MinMaxEXT>> 62 63=== Version History 64 65 * Revision 1, 2020-08-14 (Jason Ekstrand) 66 - Internal revisions 67