VK_EXT_shader_atomic_float2(3)

# VK_EXT_shader_atomic_float2(3) Manual Page

## Name

VK_EXT_shader_atomic_float2 - device extension

Loading… please wait.

## Registered Extension Number

274

## Revision

1

## Extension and Version Dependencies

- Requires support for Vulkan 1.0

- Requires `VK_EXT_shader_atomic_float` to be enabled for any device-level functionality

## Contact

- Jason Ekstrand jekstrand

## 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 `SPV_EXT_shader_atomic_float_min_max` and `SPV_EXT_shader_atomic_float16_add`

  - This extension provides API support for `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 `AtomicFloat16AddEXT` capability which allows atomic add operations on 16-bit floating-point numbers and the SPIR-V `AtomicFloat16MinMaxEXT`, `AtomicFloat32MinMaxEXT` and `AtomicFloat64MinMaxEXT` capabilities which allow atomic minimum and maximum operations on floating-point numbers. The supported operations include `OpAtomicFAddEXT`, `OpAtomicFMinEXT` and `OpAtomicFMaxEXT`.

## New Structures

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT

## New Enum Constants

- `VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME`

- `VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT`

## Issues

1) Should this extension add support for 16-bit image atomics?

RESOLVED: No. While Vulkan supports creating storage images with `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

- `AtomicFloat32MinMaxEXT`

- `AtomicFloat32MinMaxEXT`

- `AtomicFloat32MinMaxEXT`

- `AtomicFloat64MinMaxEXT`

## Version History

- Revision 1, 2020-08-14 (Jason Ekstrand)

  - Internal revisions

## See Also

VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2022 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0