vulkan-3.24.3: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_shader_atomic_float2

Description

Name

VK_EXT_shader_atomic_float2 - device extension

VK_EXT_shader_atomic_float2

Name String
VK_EXT_shader_atomic_float2
Extension Type
Device extension
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

Other Extension Metadata

Last Modified Date
2020-08-14
IP Status
No known IP claims.
Interactions and External Dependencies
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

New Enum Constants

Issues

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

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

Version History

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

    • Internal revisions

See Also

PhysicalDeviceShaderAtomicFloat2FeaturesEXT

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.

Synopsis

Documentation

data PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source #

VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT - Structure describing features supported by VK_EXT_shader_atomic_float2

Members

This structure describes the following features:

Description

If the PhysicalDeviceShaderAtomicFloat2FeaturesEXT structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceShaderAtomicFloat2FeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_shader_atomic_float2, Bool32, StructureType

Constructors

PhysicalDeviceShaderAtomicFloat2FeaturesEXT 

Fields

  • shaderBufferFloat16Atomics :: Bool

    shaderBufferFloat16Atomics indicates whether shaders can perform 16-bit floating-point load, store, and exchange atomic operations on storage buffers.

  • shaderBufferFloat16AtomicAdd :: Bool

    shaderBufferFloat16AtomicAdd indicates whether shaders can perform 16-bit floating-point add atomic operations on storage buffers.

  • shaderBufferFloat16AtomicMinMax :: Bool

    shaderBufferFloat16AtomicMinMax indicates whether shaders can perform 16-bit floating-point min and max atomic operations on storage buffers.

  • shaderBufferFloat32AtomicMinMax :: Bool

    shaderBufferFloat32AtomicMinMax indicates whether shaders can perform 32-bit floating-point min and max atomic operations on storage buffers.

  • shaderBufferFloat64AtomicMinMax :: Bool

    shaderBufferFloat64AtomicMinMax indicates whether shaders can perform 64-bit floating-point min and max atomic operations on storage buffers.

  • shaderSharedFloat16Atomics :: Bool

    shaderSharedFloat16Atomics indicates whether shaders can perform 16-bit floating-point load, store and exchange atomic operations on shared and payload memory.

  • shaderSharedFloat16AtomicAdd :: Bool

    shaderSharedFloat16AtomicAdd indicates whether shaders can perform 16-bit floating-point add atomic operations on shared and payload memory.

  • shaderSharedFloat16AtomicMinMax :: Bool

    shaderSharedFloat16AtomicMinMax indicates whether shaders can perform 16-bit floating-point min and max atomic operations on shared and payload memory.

  • shaderSharedFloat32AtomicMinMax :: Bool

    shaderSharedFloat32AtomicMinMax indicates whether shaders can perform 32-bit floating-point min and max atomic operations on shared and payload memory.

  • shaderSharedFloat64AtomicMinMax :: Bool

    shaderSharedFloat64AtomicMinMax indicates whether shaders can perform 64-bit floating-point min and max atomic operations on shared and payload memory.

  • shaderImageFloat32AtomicMinMax :: Bool

    shaderImageFloat32AtomicMinMax indicates whether shaders can perform 32-bit floating-point min and max atomic image operations.

  • sparseImageFloat32AtomicMinMax :: Bool

    sparseImageFloat32AtomicMinMax indicates whether 32-bit floating-point min and max atomic operations can be used on sparse images.

Instances

Instances details
Storable PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_atomic_float2

Show PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_atomic_float2

Eq PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_atomic_float2

FromCStruct PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_atomic_float2

ToCStruct PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_atomic_float2

Zero PhysicalDeviceShaderAtomicFloat2FeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_atomic_float2

type EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME = "VK_EXT_shader_atomic_float2" Source #