packages feed

vulkan-3.13: src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs-boot

{-# language CPP #-}
-- | = 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 Vulkan 1.0
--
--     -   Requires @VK_EXT_shader_atomic_float@
--
-- [__Contact__]
--
--     -   Jason Ekstrand
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_atomic_float2] @jekstrand%0A<<Here describe the issue or question you have about the VK_EXT_shader_atomic_float2 extension>> >
--
-- == 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
--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_atomic_float_min_max.html SPV_EXT_shader_atomic_float_min_max>
--         and
--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/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 @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
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceShaderAtomicFloat2FeaturesEXT'
--
-- == New Enum Constants
--
-- -   'EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME'
--
-- -   'EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.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
-- 'Vulkan.Core10.Enums.Format.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
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
--
-- == Version History
--
-- -   Revision 1, 2020-08-14 (Jason Ekstrand)
--
--     -   Internal revisions
--
-- = See Also
--
-- 'PhysicalDeviceShaderAtomicFloat2FeaturesEXT'
--
-- = Document Notes
--
-- For more information, see the
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_EXT_shader_atomic_float2  (PhysicalDeviceShaderAtomicFloat2FeaturesEXT) where

import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (ToCStruct)
import Data.Kind (Type)

data PhysicalDeviceShaderAtomicFloat2FeaturesEXT

instance ToCStruct PhysicalDeviceShaderAtomicFloat2FeaturesEXT
instance Show PhysicalDeviceShaderAtomicFloat2FeaturesEXT

instance FromCStruct PhysicalDeviceShaderAtomicFloat2FeaturesEXT