blob: 905db95f987158a3525367618c7a08fad539dd88 [file] [log] [blame]
// 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
* <<spirvenv-capabilities-table-AtomicFloat16AddEXT,
code:AtomicFloat32MinMaxEXT>>
* <<spirvenv-capabilities-table-AtomicFloat16MinMaxEXT,
code:AtomicFloat32MinMaxEXT>>
* <<spirvenv-capabilities-table-AtomicFloat32MinMaxEXT,
code:AtomicFloat32MinMaxEXT>>
* <<spirvenv-capabilities-table-AtomicFloat64MinMaxEXT,
code:AtomicFloat64MinMaxEXT>>
=== Version History
* Revision 1, 2020-08-14 (Jason Ekstrand)
- Internal revisions