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