• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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