{-# language CPP #-}
-- | = Name
--
-- VK_NV_ray_tracing_linear_swept_spheres - device extension
--
-- = VK_NV_ray_tracing_linear_swept_spheres
--
-- [__Name String__]
--     @VK_NV_ray_tracing_linear_swept_spheres@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     430
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Not ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
--
-- [__SPIR-V Dependencies__]
--
--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_linear_swept_spheres.html SPV_NV_linear_swept_spheres>
--
-- [__Contact__]
--
--     -   Vikram Kushwaha
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_ray_tracing_linear_swept_spheres] @vkushwaha%0A*Here describe the issue or question you have about the VK_NV_ray_tracing_linear_swept_spheres extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_NV_ray_tracing_linear_swept_spheres.adoc VK_NV_ray_tracing_linear_swept_spheres>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2025-01-03
--
-- [__Interactions and External Dependencies__]
--
--     -   This extension requires
--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_linear_swept_spheres.html SPV_NV_linear_swept_spheres>
--
--     -   This extension provides API support for
--         <https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_linear_swept_spheres.txt GL_NV_linear_swept_spheres>
--
-- [__Contributors__]
--
--     -   Vikram Kushwaha, NVIDIA
--
--     -   Eric Werness, NVIDIA
--
--     -   Daniel Koch, NVIDIA
--
--     -   Ashwin Lele, NVIDIA
--
--     -   Nathan Morrical, NVIDIA
--
-- == Description
--
-- This extension adds two new primitives for ray tracing: a sphere
-- primitive and a linear swept sphere (LSS) primitive. The purpose of the
-- LSS primitive is to enable rendering of high quality hair and fur using
-- a compact primitive representation encoded in the acceleration
-- structure. Sphere primitives are defined by a position and a radius and
-- are a subset of LSS, but are useful in their own right, for example for
-- particle systems.
--
-- This extension adds support for the following SPIR-V extension in
-- Vulkan:
--
-- -   @SPV_NV_linear_swept_spheres@
--
-- == New Structures
--
-- -   Extending
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR':
--
--     -   'AccelerationStructureGeometryLinearSweptSpheresDataNV'
--
--     -   'AccelerationStructureGeometrySpheresDataNV'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV'
--
-- == New Enums
--
-- -   'RayTracingLssIndexingModeNV'
--
-- -   'RayTracingLssPrimitiveEndCapsModeNV'
--
-- == New Enum Constants
--
-- -   'NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME'
--
-- -   'NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
--
--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
--
-- -   Extending
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':
--
--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV'
--
--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_SPHERES_NV'
--
-- -   Extending
--     'Vulkan.Core14.Enums.PipelineCreateFlags2.PipelineCreateFlagBits2':
--
--     -   'Vulkan.Core14.Enums.PipelineCreateFlags2.PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV'
--
-- == New or Modified Built-In Variables
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitissphere HitIsSphereNV>
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitislss HitIsLSSNV>
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitsphereposition HitSpherePositionNV>
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitsphereradius HitSphereRadiusNV>
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitlsspositions HitLSSPositionsNV>
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables-hitlssradii HitLSSRadiiNV>
--
-- == New SPIR-V Capabilities
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingSpheresGeometryNV RayTracingSpheresGeometryNV>
--
-- -   <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-capabilities-table-RayTracingLinearSweptSpheresGeometryNV RayTracingLinearSweptSpheresGeometryNV>
--
-- == Version History
--
-- -   Revision 1, 2025-01-03 (Vikram Kushwaha)
--
--     -   Initial draft
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_NV_ray_tracing_linear_swept_spheres  ( AccelerationStructureGeometryLinearSweptSpheresDataNV(..)
                                                                 , AccelerationStructureGeometrySpheresDataNV(..)
                                                                 , PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV(..)
                                                                 , RayTracingLssIndexingModeNV( RAY_TRACING_LSS_INDEXING_MODE_LIST_NV
                                                                                              , RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV
                                                                                              , ..
                                                                                              )
                                                                 , RayTracingLssPrimitiveEndCapsModeNV( RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV
                                                                                                      , RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV
                                                                                                      , ..
                                                                                                      )
                                                                 , NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION
                                                                 , pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION
                                                                 , NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME
                                                                 , pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME
                                                                 , DeviceOrHostAddressConstKHR(..)
                                                                 , GeometryTypeKHR(..)
                                                                 ) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showsPrec)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Data.Int (Int32)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR)
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.Core10.Enums.IndexType (IndexType)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV))
import Vulkan.Extensions.VK_KHR_acceleration_structure (DeviceOrHostAddressConstKHR(..))
import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))
-- | VkAccelerationStructureGeometryLinearSweptSpheresDataNV - Structure
-- specifying a LSS geometry in a bottom-level acceleration structure
--
-- = Description
--
-- If an index buffer is not specified in @indexData@, LSS primitives are
-- rendered individually using subsequent pairs of vertices similar to
-- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST'.
--
-- == Valid Usage
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-None-10419#
--     The
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-linearSweptSpheres linearSweptSpheres>
--     feature /must/ be enabled
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexStride-10421#
--     @vertexStride@ /must/ be a multiple of:
--
--     -   the
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats size of the format>
--         specified in @vertexFormat@ if that format is a
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
--
--     -   the
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats component size>
--         specified in @vertexFormat@ if that format is not a
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexStride-10422#
--     @vertexStride@ and @radiusStride@ /must/ be less than or equal to
--     232-1
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexFormat-10423#
--     The
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
--     of @vertexFormat@ /must/ contain
--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusFormat-10424#
--     The
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
--     of @radiusFormat@ /must/ contain
--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusData-10426#
--     All values referenced in @radiusData@ /must/ be greater than or
--     equal to @0@
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexingMode-10427#
--     If @indexingMode@ is 'RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV',
--     @indexData@ /must/ not be @NULL@
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexData-10428#
--     @indexType@ /must/ be
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-sType-sType#
--     @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV'
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexFormat-parameter#
--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
--     value
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-vertexData-parameter#
--     @vertexData@ /must/ be a valid
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
--     union
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusFormat-parameter#
--     @radiusFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
--     value
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-radiusData-parameter#
--     @radiusData@ /must/ be a valid
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
--     union
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexType-parameter#
--     @indexType@ /must/ be a valid
--     'Vulkan.Core10.Enums.IndexType.IndexType' value
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexData-parameter#
--     @indexData@ /must/ be a valid
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
--     union
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-indexingMode-parameter#
--     @indexingMode@ /must/ be a valid 'RayTracingLssIndexingModeNV' value
--
-- -   #VUID-VkAccelerationStructureGeometryLinearSweptSpheresDataNV-endCapsMode-parameter#
--     @endCapsMode@ /must/ be a valid
--     'RayTracingLssPrimitiveEndCapsModeNV' value
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
-- 'Vulkan.Core10.Enums.Format.Format',
-- 'Vulkan.Core10.Enums.IndexType.IndexType',
-- 'RayTracingLssIndexingModeNV', 'RayTracingLssPrimitiveEndCapsModeNV',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data AccelerationStructureGeometryLinearSweptSpheresDataNV = AccelerationStructureGeometryLinearSweptSpheresDataNV
  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each LSS
    -- vertex element.
    AccelerationStructureGeometryLinearSweptSpheresDataNV -> Format
vertexFormat :: Format
  , -- | @vertexData@ is a device or host address of memory containing vertex
    -- data for this geometry.
    AccelerationStructureGeometryLinearSweptSpheresDataNV
-> DeviceOrHostAddressConstKHR
vertexData :: DeviceOrHostAddressConstKHR
  , -- | @vertexStride@ is the stride in bytes between each vertex element.
    AccelerationStructureGeometryLinearSweptSpheresDataNV -> DeviceSize
vertexStride :: DeviceSize
  , -- | @radiusFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each LSS
    -- radius.
    AccelerationStructureGeometryLinearSweptSpheresDataNV -> Format
radiusFormat :: Format
  , -- | @radiusData@ is a device or host address of memory containing LSS radius
    -- data value.
    AccelerationStructureGeometryLinearSweptSpheresDataNV
-> DeviceOrHostAddressConstKHR
radiusData :: DeviceOrHostAddressConstKHR
  , -- | @radiusStride@ is the stride in bytes between each radius value.
    AccelerationStructureGeometryLinearSweptSpheresDataNV -> DeviceSize
radiusStride :: DeviceSize
  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each
    -- index element.
    AccelerationStructureGeometryLinearSweptSpheresDataNV -> IndexType
indexType :: IndexType
  , -- | @indexData@ is a device or host address of memory containing index data
    -- for vertex and radius buffers for this geometry. When @indexType@ is
    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
    AccelerationStructureGeometryLinearSweptSpheresDataNV
-> DeviceOrHostAddressConstKHR
indexData :: DeviceOrHostAddressConstKHR
  , -- | @indexStride@ is the stride in bytes between each index element.
    AccelerationStructureGeometryLinearSweptSpheresDataNV -> DeviceSize
indexStride :: DeviceSize
  , -- | @indexingMode@ is a 'RayTracingLssIndexingModeNV' value specifying the
    -- mode of indexing.
    AccelerationStructureGeometryLinearSweptSpheresDataNV
-> RayTracingLssIndexingModeNV
indexingMode :: RayTracingLssIndexingModeNV
  , -- | @endCapsMode@ is a 'RayTracingLssPrimitiveEndCapsModeNV' value
    -- specifying the endcaps mode for LSS primitives.
    AccelerationStructureGeometryLinearSweptSpheresDataNV
-> RayTracingLssPrimitiveEndCapsModeNV
endCapsMode :: RayTracingLssPrimitiveEndCapsModeNV
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (AccelerationStructureGeometryLinearSweptSpheresDataNV)
#endif
deriving instance Show AccelerationStructureGeometryLinearSweptSpheresDataNV

instance ToCStruct AccelerationStructureGeometryLinearSweptSpheresDataNV where
  withCStruct :: forall b.
AccelerationStructureGeometryLinearSweptSpheresDataNV
-> (Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
    -> IO b)
-> IO b
withCStruct AccelerationStructureGeometryLinearSweptSpheresDataNV
x Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV -> IO b
f = Int
-> (Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
96 ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
  -> IO b)
 -> IO b)
-> (Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p -> Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> AccelerationStructureGeometryLinearSweptSpheresDataNV
-> IO b
-> IO b
forall b.
Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> AccelerationStructureGeometryLinearSweptSpheresDataNV
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p AccelerationStructureGeometryLinearSweptSpheresDataNV
x (Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV -> IO b
f Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p)
  pokeCStruct :: forall b.
Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> AccelerationStructureGeometryLinearSweptSpheresDataNV
-> IO b
-> IO b
pokeCStruct Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p AccelerationStructureGeometryLinearSweptSpheresDataNV{DeviceSize
IndexType
Format
DeviceOrHostAddressConstKHR
RayTracingLssPrimitiveEndCapsModeNV
RayTracingLssIndexingModeNV
vertexFormat :: AccelerationStructureGeometryLinearSweptSpheresDataNV -> Format
vertexData :: AccelerationStructureGeometryLinearSweptSpheresDataNV
-> DeviceOrHostAddressConstKHR
vertexStride :: AccelerationStructureGeometryLinearSweptSpheresDataNV -> DeviceSize
radiusFormat :: AccelerationStructureGeometryLinearSweptSpheresDataNV -> Format
radiusData :: AccelerationStructureGeometryLinearSweptSpheresDataNV
-> DeviceOrHostAddressConstKHR
radiusStride :: AccelerationStructureGeometryLinearSweptSpheresDataNV -> DeviceSize
indexType :: AccelerationStructureGeometryLinearSweptSpheresDataNV -> IndexType
indexData :: AccelerationStructureGeometryLinearSweptSpheresDataNV
-> DeviceOrHostAddressConstKHR
indexStride :: AccelerationStructureGeometryLinearSweptSpheresDataNV -> DeviceSize
indexingMode :: AccelerationStructureGeometryLinearSweptSpheresDataNV
-> RayTracingLssIndexingModeNV
endCapsMode :: AccelerationStructureGeometryLinearSweptSpheresDataNV
-> RayTracingLssPrimitiveEndCapsModeNV
vertexFormat :: Format
vertexData :: DeviceOrHostAddressConstKHR
vertexStride :: DeviceSize
radiusFormat :: Format
radiusData :: DeviceOrHostAddressConstKHR
radiusStride :: DeviceSize
indexType :: IndexType
indexData :: DeviceOrHostAddressConstKHR
indexStride :: DeviceSize
indexingMode :: RayTracingLssIndexingModeNV
endCapsMode :: RayTracingLssPrimitiveEndCapsModeNV
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format)) (Format
vertexFormat)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
vertexData) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr DeviceSize)) (DeviceSize
vertexStride)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Format)) (Format
radiusFormat)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
radiusData) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceSize)) (DeviceSize
radiusStride)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr IndexType)) (IndexType
indexType)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
indexData) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr DeviceSize)) (DeviceSize
indexStride)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr RayTracingLssIndexingModeNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr RayTracingLssIndexingModeNV)) (RayTracingLssIndexingModeNV
indexingMode)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr RayTracingLssPrimitiveEndCapsModeNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr RayTracingLssPrimitiveEndCapsModeNV)) (RayTracingLssPrimitiveEndCapsModeNV
endCapsMode)
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
96
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> IO b -> IO b
pokeZeroCStruct Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format)) (Format
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Format)) (Format
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr IndexType)) (IndexType
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr RayTracingLssIndexingModeNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr RayTracingLssIndexingModeNV)) (RayTracingLssIndexingModeNV
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
p Ptr AccelerationStructureGeometryLinearSweptSpheresDataNV
-> Int -> Ptr RayTracingLssPrimitiveEndCapsModeNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
92 :: Ptr RayTracingLssPrimitiveEndCapsModeNV)) (RayTracingLssPrimitiveEndCapsModeNV
forall a. Zero a => a
zero)
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f

instance Zero AccelerationStructureGeometryLinearSweptSpheresDataNV where
  zero :: AccelerationStructureGeometryLinearSweptSpheresDataNV
zero = Format
-> DeviceOrHostAddressConstKHR
-> DeviceSize
-> Format
-> DeviceOrHostAddressConstKHR
-> DeviceSize
-> IndexType
-> DeviceOrHostAddressConstKHR
-> DeviceSize
-> RayTracingLssIndexingModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
-> AccelerationStructureGeometryLinearSweptSpheresDataNV
AccelerationStructureGeometryLinearSweptSpheresDataNV
           Format
forall a. Zero a => a
zero
           DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero
           DeviceSize
forall a. Zero a => a
zero
           Format
forall a. Zero a => a
zero
           DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero
           DeviceSize
forall a. Zero a => a
zero
           IndexType
forall a. Zero a => a
zero
           DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero
           DeviceSize
forall a. Zero a => a
zero
           RayTracingLssIndexingModeNV
forall a. Zero a => a
zero
           RayTracingLssPrimitiveEndCapsModeNV
forall a. Zero a => a
zero


-- | VkAccelerationStructureGeometrySpheresDataNV - Structure specifying a
-- sphere geometry in a bottom-level acceleration structure
--
-- == Valid Usage
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-None-10429# The
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-spheres spheres>
--     feature /must/ be enabled
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexStride-10431#
--     @vertexStride@ /must/ be a multiple of:
--
--     -   the
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats size of the format>
--         specified in @vertexFormat@ if that format is a
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
--
--     -   the smallest
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats component size>
--         specified in @vertexFormat@ if that format is not a
--         <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#formats-packed packed format>
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexStride-10432#
--     @vertexStride@ and @radiusStride@ /must/ be less than or equal to
--     232-1
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexFormat-10434#
--     The
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
--     of @vertexFormat@ /must/ contain
--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusFormat-10435#
--     The
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-buffer-view-format-features format features>
--     of @radiusFormat@ /must/ contain
--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV'
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusData-10436#
--     All values referenced in @radiusData@ /must/ be greater than or
--     equal to @0@
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-indexData-10437#
--     @indexType@ /must/ be
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32',
--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-sType-sType#
--     @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV'
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexFormat-parameter#
--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
--     value
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-vertexData-parameter#
--     @vertexData@ /must/ be a valid
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
--     union
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusFormat-parameter#
--     @radiusFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'
--     value
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-radiusData-parameter#
--     @radiusData@ /must/ be a valid
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
--     union
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-indexType-parameter#
--     @indexType@ /must/ be a valid
--     'Vulkan.Core10.Enums.IndexType.IndexType' value
--
-- -   #VUID-VkAccelerationStructureGeometrySpheresDataNV-indexData-parameter#
--     @indexData@ /must/ be a valid
--     'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'
--     union
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
-- 'Vulkan.Core10.Enums.Format.Format',
-- 'Vulkan.Core10.Enums.IndexType.IndexType',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data AccelerationStructureGeometrySpheresDataNV = AccelerationStructureGeometrySpheresDataNV
  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each
    -- sphere’s vertex element.
    AccelerationStructureGeometrySpheresDataNV -> Format
vertexFormat :: Format
  , -- | @vertexData@ is a device or host address of memory containing vertex
    -- data in form of pairs of centers of spheres that define all sphere
    -- geometry.
    AccelerationStructureGeometrySpheresDataNV
-> DeviceOrHostAddressConstKHR
vertexData :: DeviceOrHostAddressConstKHR
  , -- | @vertexStride@ is the stride in bytes between each vertex element.
    AccelerationStructureGeometrySpheresDataNV -> DeviceSize
vertexStride :: DeviceSize
  , -- | @radiusFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each
    -- sphere’s radius.
    AccelerationStructureGeometrySpheresDataNV -> Format
radiusFormat :: Format
  , -- | @radiusData@ is a device or host address of memory containing sphere’s
    -- radius data value.
    AccelerationStructureGeometrySpheresDataNV
-> DeviceOrHostAddressConstKHR
radiusData :: DeviceOrHostAddressConstKHR
  , -- | @radiusStride@ is the stride in bytes between each radius value.
    AccelerationStructureGeometrySpheresDataNV -> DeviceSize
radiusStride :: DeviceSize
  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each
    -- index element.
    AccelerationStructureGeometrySpheresDataNV -> IndexType
indexType :: IndexType
  , -- | @indexData@ is a device or host address of memory containing index data
    -- for vertex and radius buffers for this geometry. When @indexType@ is
    -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' it /must/ be @NULL@.
    AccelerationStructureGeometrySpheresDataNV
-> DeviceOrHostAddressConstKHR
indexData :: DeviceOrHostAddressConstKHR
  , -- | @indexStride@ is the stride in bytes between each index element.
    AccelerationStructureGeometrySpheresDataNV -> DeviceSize
indexStride :: DeviceSize
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (AccelerationStructureGeometrySpheresDataNV)
#endif
deriving instance Show AccelerationStructureGeometrySpheresDataNV

instance ToCStruct AccelerationStructureGeometrySpheresDataNV where
  withCStruct :: forall b.
AccelerationStructureGeometrySpheresDataNV
-> (Ptr AccelerationStructureGeometrySpheresDataNV -> IO b) -> IO b
withCStruct AccelerationStructureGeometrySpheresDataNV
x Ptr AccelerationStructureGeometrySpheresDataNV -> IO b
f = Int
-> (Ptr AccelerationStructureGeometrySpheresDataNV -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
88 ((Ptr AccelerationStructureGeometrySpheresDataNV -> IO b) -> IO b)
-> (Ptr AccelerationStructureGeometrySpheresDataNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr AccelerationStructureGeometrySpheresDataNV
p -> Ptr AccelerationStructureGeometrySpheresDataNV
-> AccelerationStructureGeometrySpheresDataNV -> IO b -> IO b
forall b.
Ptr AccelerationStructureGeometrySpheresDataNV
-> AccelerationStructureGeometrySpheresDataNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr AccelerationStructureGeometrySpheresDataNV
p AccelerationStructureGeometrySpheresDataNV
x (Ptr AccelerationStructureGeometrySpheresDataNV -> IO b
f Ptr AccelerationStructureGeometrySpheresDataNV
p)
  pokeCStruct :: forall b.
Ptr AccelerationStructureGeometrySpheresDataNV
-> AccelerationStructureGeometrySpheresDataNV -> IO b -> IO b
pokeCStruct Ptr AccelerationStructureGeometrySpheresDataNV
p AccelerationStructureGeometrySpheresDataNV{DeviceSize
IndexType
Format
DeviceOrHostAddressConstKHR
vertexFormat :: AccelerationStructureGeometrySpheresDataNV -> Format
vertexData :: AccelerationStructureGeometrySpheresDataNV
-> DeviceOrHostAddressConstKHR
vertexStride :: AccelerationStructureGeometrySpheresDataNV -> DeviceSize
radiusFormat :: AccelerationStructureGeometrySpheresDataNV -> Format
radiusData :: AccelerationStructureGeometrySpheresDataNV
-> DeviceOrHostAddressConstKHR
radiusStride :: AccelerationStructureGeometrySpheresDataNV -> DeviceSize
indexType :: AccelerationStructureGeometrySpheresDataNV -> IndexType
indexData :: AccelerationStructureGeometrySpheresDataNV
-> DeviceOrHostAddressConstKHR
indexStride :: AccelerationStructureGeometrySpheresDataNV -> DeviceSize
vertexFormat :: Format
vertexData :: DeviceOrHostAddressConstKHR
vertexStride :: DeviceSize
radiusFormat :: Format
radiusData :: DeviceOrHostAddressConstKHR
radiusStride :: DeviceSize
indexType :: IndexType
indexData :: DeviceOrHostAddressConstKHR
indexStride :: DeviceSize
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format)) (Format
vertexFormat)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
vertexData) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr DeviceSize)) (DeviceSize
vertexStride)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Format)) (Format
radiusFormat)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
radiusData) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceSize)) (DeviceSize
radiusStride)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr IndexType)) (IndexType
indexType)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
indexData) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr DeviceSize)) (DeviceSize
indexStride)
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
88
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr AccelerationStructureGeometrySpheresDataNV -> IO b -> IO b
pokeZeroCStruct Ptr AccelerationStructureGeometrySpheresDataNV
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format)) (Format
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Format)) (Format
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr IndexType)) (IndexType
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall b.
Ptr DeviceOrHostAddressConstKHR
-> DeviceOrHostAddressConstKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceOrHostAddressConstKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr DeviceOrHostAddressConstKHR)) (DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AccelerationStructureGeometrySpheresDataNV
p Ptr AccelerationStructureGeometrySpheresDataNV
-> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
    IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f

instance Zero AccelerationStructureGeometrySpheresDataNV where
  zero :: AccelerationStructureGeometrySpheresDataNV
zero = Format
-> DeviceOrHostAddressConstKHR
-> DeviceSize
-> Format
-> DeviceOrHostAddressConstKHR
-> DeviceSize
-> IndexType
-> DeviceOrHostAddressConstKHR
-> DeviceSize
-> AccelerationStructureGeometrySpheresDataNV
AccelerationStructureGeometrySpheresDataNV
           Format
forall a. Zero a => a
zero
           DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero
           DeviceSize
forall a. Zero a => a
zero
           Format
forall a. Zero a => a
zero
           DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero
           DeviceSize
forall a. Zero a => a
zero
           IndexType
forall a. Zero a => a
zero
           DeviceOrHostAddressConstKHR
forall a. Zero a => a
zero
           DeviceSize
forall a. Zero a => a
zero


-- | VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV - Structure
-- describing the ray tracing linear swept spheres features that can be
-- supported by an implementation
--
-- = Members
--
-- This structure describes the following features:
--
-- = Description
--
-- If the 'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV' structure
-- is included in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. If the application wishes to use a
-- 'Vulkan.Core10.Handles.Device' with any features described by
-- 'PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV', it /must/ add an
-- instance of the structure, with the desired feature members set to
-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
-- 'Vulkan.Core10.Handles.Device'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
  { -- | #features-spheres# @spheres@ indicates whether the implementation
    -- supports sphere primitives in ray tracing.
    PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
spheres :: Bool
  , -- | #features-linearSweptSpheres# @linearSweptSpheres@ indicates whether the
    -- implementation supports linear swept sphere primitives in ray tracing.
    PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
linearSweptSpheres :: Bool
  }
  deriving (Typeable, PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
(PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
 -> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool)
-> (PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
    -> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool)
-> Eq PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
== :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
$c/= :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
/= :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV)
#endif
deriving instance Show PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV

instance ToCStruct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
  withCStruct :: forall b.
PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> (Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
    -> IO b)
-> IO b
withCStruct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
x Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> IO b)
 -> IO b)
-> (Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p -> Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
x (Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> IO b
f Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV{Bool
spheres :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
linearSweptSpheres :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Bool
spheres :: Bool
linearSweptSpheres :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
spheres))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
linearSweptSpheres))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
  peekCStruct :: Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
peekCStruct Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p = do
    spheres <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
p Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    linearSweptSpheres <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
    pure $ PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
             (bool32ToBool spheres) (bool32ToBool linearSweptSpheres)

instance Storable PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
  sizeOf :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Int
sizeOf ~PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
_ = Int
24
  alignment :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> Int
alignment ~PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
_ = Int
8
  peek :: Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
peek = Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV -> IO ()
poke Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
poked = Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
ptr PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV where
  zero :: PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
zero = Bool
-> Bool -> PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero


-- | VkRayTracingLssIndexingModeNV - LSS indexing mode
--
-- = Description
--
-- -   'RAY_TRACING_LSS_INDEXING_MODE_LIST_NV' specifies that a list of
--     indices is provided where each consecutive pair of indices define a
--     LSS primitive.
--
-- -   'RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV' specifies a successive
--     implicit indexing format, in which each LSS primitive is defined by
--     two successive positions and radii, (k, k + 1), where k is a single
--     index provided in the index buffer. In this indexing scheme, there
--     is a 1:1 mapping between the index buffer and primitive index within
--     the geometry.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
-- 'AccelerationStructureGeometryLinearSweptSpheresDataNV'
newtype RayTracingLssIndexingModeNV = RayTracingLssIndexingModeNV Int32
  deriving newtype (RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
(RayTracingLssIndexingModeNV
 -> RayTracingLssIndexingModeNV -> Bool)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> Bool)
-> Eq RayTracingLssIndexingModeNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
== :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
$c/= :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
/= :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
Eq, Eq RayTracingLssIndexingModeNV
Eq RayTracingLssIndexingModeNV =>
(RayTracingLssIndexingModeNV
 -> RayTracingLssIndexingModeNV -> Ordering)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> Bool)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> Bool)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> Bool)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> Bool)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV)
-> (RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV)
-> Ord RayTracingLssIndexingModeNV
RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> Ordering
RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> Ordering
compare :: RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> Ordering
$c< :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
< :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
$c<= :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
<= :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
$c> :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
> :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
$c>= :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
>= :: RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV -> Bool
$cmax :: RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV
max :: RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV
$cmin :: RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV
min :: RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> RayTracingLssIndexingModeNV
Ord, Ptr RayTracingLssIndexingModeNV -> IO RayTracingLssIndexingModeNV
Ptr RayTracingLssIndexingModeNV
-> Int -> IO RayTracingLssIndexingModeNV
Ptr RayTracingLssIndexingModeNV
-> Int -> RayTracingLssIndexingModeNV -> IO ()
Ptr RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> IO ()
RayTracingLssIndexingModeNV -> Int
(RayTracingLssIndexingModeNV -> Int)
-> (RayTracingLssIndexingModeNV -> Int)
-> (Ptr RayTracingLssIndexingModeNV
    -> Int -> IO RayTracingLssIndexingModeNV)
-> (Ptr RayTracingLssIndexingModeNV
    -> Int -> RayTracingLssIndexingModeNV -> IO ())
-> (forall b. Ptr b -> Int -> IO RayTracingLssIndexingModeNV)
-> (forall b. Ptr b -> Int -> RayTracingLssIndexingModeNV -> IO ())
-> (Ptr RayTracingLssIndexingModeNV
    -> IO RayTracingLssIndexingModeNV)
-> (Ptr RayTracingLssIndexingModeNV
    -> RayTracingLssIndexingModeNV -> IO ())
-> Storable RayTracingLssIndexingModeNV
forall b. Ptr b -> Int -> IO RayTracingLssIndexingModeNV
forall b. Ptr b -> Int -> RayTracingLssIndexingModeNV -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: RayTracingLssIndexingModeNV -> Int
sizeOf :: RayTracingLssIndexingModeNV -> Int
$calignment :: RayTracingLssIndexingModeNV -> Int
alignment :: RayTracingLssIndexingModeNV -> Int
$cpeekElemOff :: Ptr RayTracingLssIndexingModeNV
-> Int -> IO RayTracingLssIndexingModeNV
peekElemOff :: Ptr RayTracingLssIndexingModeNV
-> Int -> IO RayTracingLssIndexingModeNV
$cpokeElemOff :: Ptr RayTracingLssIndexingModeNV
-> Int -> RayTracingLssIndexingModeNV -> IO ()
pokeElemOff :: Ptr RayTracingLssIndexingModeNV
-> Int -> RayTracingLssIndexingModeNV -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO RayTracingLssIndexingModeNV
peekByteOff :: forall b. Ptr b -> Int -> IO RayTracingLssIndexingModeNV
$cpokeByteOff :: forall b. Ptr b -> Int -> RayTracingLssIndexingModeNV -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> RayTracingLssIndexingModeNV -> IO ()
$cpeek :: Ptr RayTracingLssIndexingModeNV -> IO RayTracingLssIndexingModeNV
peek :: Ptr RayTracingLssIndexingModeNV -> IO RayTracingLssIndexingModeNV
$cpoke :: Ptr RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> IO ()
poke :: Ptr RayTracingLssIndexingModeNV
-> RayTracingLssIndexingModeNV -> IO ()
Storable, RayTracingLssIndexingModeNV
RayTracingLssIndexingModeNV -> Zero RayTracingLssIndexingModeNV
forall a. a -> Zero a
$czero :: RayTracingLssIndexingModeNV
zero :: RayTracingLssIndexingModeNV
Zero)

-- No documentation found for Nested "VkRayTracingLssIndexingModeNV" "VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV"
pattern $mRAY_TRACING_LSS_INDEXING_MODE_LIST_NV :: forall {r}.
RayTracingLssIndexingModeNV -> ((# #) -> r) -> ((# #) -> r) -> r
$bRAY_TRACING_LSS_INDEXING_MODE_LIST_NV :: RayTracingLssIndexingModeNV
RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = RayTracingLssIndexingModeNV 0

-- No documentation found for Nested "VkRayTracingLssIndexingModeNV" "VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV"
pattern $mRAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV :: forall {r}.
RayTracingLssIndexingModeNV -> ((# #) -> r) -> ((# #) -> r) -> r
$bRAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV :: RayTracingLssIndexingModeNV
RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = RayTracingLssIndexingModeNV 1

{-# COMPLETE
  RAY_TRACING_LSS_INDEXING_MODE_LIST_NV
  , RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV ::
    RayTracingLssIndexingModeNV
  #-}

conNameRayTracingLssIndexingModeNV :: String
conNameRayTracingLssIndexingModeNV :: String
conNameRayTracingLssIndexingModeNV = String
"RayTracingLssIndexingModeNV"

enumPrefixRayTracingLssIndexingModeNV :: String
enumPrefixRayTracingLssIndexingModeNV :: String
enumPrefixRayTracingLssIndexingModeNV = String
"RAY_TRACING_LSS_INDEXING_MODE_"

showTableRayTracingLssIndexingModeNV :: [(RayTracingLssIndexingModeNV, String)]
showTableRayTracingLssIndexingModeNV :: [(RayTracingLssIndexingModeNV, String)]
showTableRayTracingLssIndexingModeNV =
  [
    ( RayTracingLssIndexingModeNV
RAY_TRACING_LSS_INDEXING_MODE_LIST_NV
    , String
"LIST_NV"
    )
  ,
    ( RayTracingLssIndexingModeNV
RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV
    , String
"SUCCESSIVE_NV"
    )
  ]

instance Show RayTracingLssIndexingModeNV where
  showsPrec :: Int -> RayTracingLssIndexingModeNV -> ShowS
showsPrec =
    String
-> [(RayTracingLssIndexingModeNV, String)]
-> String
-> (RayTracingLssIndexingModeNV -> Int32)
-> (Int32 -> ShowS)
-> Int
-> RayTracingLssIndexingModeNV
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixRayTracingLssIndexingModeNV
      [(RayTracingLssIndexingModeNV, String)]
showTableRayTracingLssIndexingModeNV
      String
conNameRayTracingLssIndexingModeNV
      (\(RayTracingLssIndexingModeNV Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read RayTracingLssIndexingModeNV where
  readPrec :: ReadPrec RayTracingLssIndexingModeNV
readPrec =
    String
-> [(RayTracingLssIndexingModeNV, String)]
-> String
-> (Int32 -> RayTracingLssIndexingModeNV)
-> ReadPrec RayTracingLssIndexingModeNV
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixRayTracingLssIndexingModeNV
      [(RayTracingLssIndexingModeNV, String)]
showTableRayTracingLssIndexingModeNV
      String
conNameRayTracingLssIndexingModeNV
      Int32 -> RayTracingLssIndexingModeNV
RayTracingLssIndexingModeNV

-- | VkRayTracingLssPrimitiveEndCapsModeNV - LSS endcaps mode
--
-- = Description
--
-- -   'RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV' disables all
--     endcaps and the chain boundaries have no influence.
--
-- -   'RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV' specifies that
--     when 'RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV' is used as
--     indexing mode for the LSS primitive, the first primitive in each
--     chain will have both endcaps enabled, and every following primitive
--     in the chain only has endcaps at the trailing position enabled.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_linear_swept_spheres VK_NV_ray_tracing_linear_swept_spheres>,
-- 'AccelerationStructureGeometryLinearSweptSpheresDataNV'
newtype RayTracingLssPrimitiveEndCapsModeNV = RayTracingLssPrimitiveEndCapsModeNV Int32
  deriving newtype (RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
(RayTracingLssPrimitiveEndCapsModeNV
 -> RayTracingLssPrimitiveEndCapsModeNV -> Bool)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV -> Bool)
-> Eq RayTracingLssPrimitiveEndCapsModeNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
== :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
$c/= :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
/= :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
Eq, Eq RayTracingLssPrimitiveEndCapsModeNV
Eq RayTracingLssPrimitiveEndCapsModeNV =>
(RayTracingLssPrimitiveEndCapsModeNV
 -> RayTracingLssPrimitiveEndCapsModeNV -> Ordering)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV -> Bool)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV -> Bool)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV -> Bool)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV -> Bool)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV)
-> (RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV)
-> Ord RayTracingLssPrimitiveEndCapsModeNV
RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Ordering
RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Ordering
compare :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Ordering
$c< :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
< :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
$c<= :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
<= :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
$c> :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
> :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
$c>= :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
>= :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> Bool
$cmax :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
max :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
$cmin :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
min :: RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV
Ord, Ptr RayTracingLssPrimitiveEndCapsModeNV
-> IO RayTracingLssPrimitiveEndCapsModeNV
Ptr RayTracingLssPrimitiveEndCapsModeNV
-> Int -> IO RayTracingLssPrimitiveEndCapsModeNV
Ptr RayTracingLssPrimitiveEndCapsModeNV
-> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
Ptr RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
RayTracingLssPrimitiveEndCapsModeNV -> Int
(RayTracingLssPrimitiveEndCapsModeNV -> Int)
-> (RayTracingLssPrimitiveEndCapsModeNV -> Int)
-> (Ptr RayTracingLssPrimitiveEndCapsModeNV
    -> Int -> IO RayTracingLssPrimitiveEndCapsModeNV)
-> (Ptr RayTracingLssPrimitiveEndCapsModeNV
    -> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ())
-> (forall b.
    Ptr b -> Int -> IO RayTracingLssPrimitiveEndCapsModeNV)
-> (forall b.
    Ptr b -> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ())
-> (Ptr RayTracingLssPrimitiveEndCapsModeNV
    -> IO RayTracingLssPrimitiveEndCapsModeNV)
-> (Ptr RayTracingLssPrimitiveEndCapsModeNV
    -> RayTracingLssPrimitiveEndCapsModeNV -> IO ())
-> Storable RayTracingLssPrimitiveEndCapsModeNV
forall b. Ptr b -> Int -> IO RayTracingLssPrimitiveEndCapsModeNV
forall b.
Ptr b -> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: RayTracingLssPrimitiveEndCapsModeNV -> Int
sizeOf :: RayTracingLssPrimitiveEndCapsModeNV -> Int
$calignment :: RayTracingLssPrimitiveEndCapsModeNV -> Int
alignment :: RayTracingLssPrimitiveEndCapsModeNV -> Int
$cpeekElemOff :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> Int -> IO RayTracingLssPrimitiveEndCapsModeNV
peekElemOff :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> Int -> IO RayTracingLssPrimitiveEndCapsModeNV
$cpokeElemOff :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
pokeElemOff :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO RayTracingLssPrimitiveEndCapsModeNV
peekByteOff :: forall b. Ptr b -> Int -> IO RayTracingLssPrimitiveEndCapsModeNV
$cpokeByteOff :: forall b.
Ptr b -> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
pokeByteOff :: forall b.
Ptr b -> Int -> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
$cpeek :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> IO RayTracingLssPrimitiveEndCapsModeNV
peek :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> IO RayTracingLssPrimitiveEndCapsModeNV
$cpoke :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
poke :: Ptr RayTracingLssPrimitiveEndCapsModeNV
-> RayTracingLssPrimitiveEndCapsModeNV -> IO ()
Storable, RayTracingLssPrimitiveEndCapsModeNV
RayTracingLssPrimitiveEndCapsModeNV
-> Zero RayTracingLssPrimitiveEndCapsModeNV
forall a. a -> Zero a
$czero :: RayTracingLssPrimitiveEndCapsModeNV
zero :: RayTracingLssPrimitiveEndCapsModeNV
Zero)

-- No documentation found for Nested "VkRayTracingLssPrimitiveEndCapsModeNV" "VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV"
pattern $mRAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV :: forall {r}.
RayTracingLssPrimitiveEndCapsModeNV
-> ((# #) -> r) -> ((# #) -> r) -> r
$bRAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV :: RayTracingLssPrimitiveEndCapsModeNV
RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = RayTracingLssPrimitiveEndCapsModeNV 0

-- No documentation found for Nested "VkRayTracingLssPrimitiveEndCapsModeNV" "VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV"
pattern $mRAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV :: forall {r}.
RayTracingLssPrimitiveEndCapsModeNV
-> ((# #) -> r) -> ((# #) -> r) -> r
$bRAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV :: RayTracingLssPrimitiveEndCapsModeNV
RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = RayTracingLssPrimitiveEndCapsModeNV 1

{-# COMPLETE
  RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV
  , RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV ::
    RayTracingLssPrimitiveEndCapsModeNV
  #-}

conNameRayTracingLssPrimitiveEndCapsModeNV :: String
conNameRayTracingLssPrimitiveEndCapsModeNV :: String
conNameRayTracingLssPrimitiveEndCapsModeNV = String
"RayTracingLssPrimitiveEndCapsModeNV"

enumPrefixRayTracingLssPrimitiveEndCapsModeNV :: String
enumPrefixRayTracingLssPrimitiveEndCapsModeNV :: String
enumPrefixRayTracingLssPrimitiveEndCapsModeNV = String
"RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_"

showTableRayTracingLssPrimitiveEndCapsModeNV :: [(RayTracingLssPrimitiveEndCapsModeNV, String)]
showTableRayTracingLssPrimitiveEndCapsModeNV :: [(RayTracingLssPrimitiveEndCapsModeNV, String)]
showTableRayTracingLssPrimitiveEndCapsModeNV =
  [
    ( RayTracingLssPrimitiveEndCapsModeNV
RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV
    , String
"NONE_NV"
    )
  ,
    ( RayTracingLssPrimitiveEndCapsModeNV
RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV
    , String
"CHAINED_NV"
    )
  ]

instance Show RayTracingLssPrimitiveEndCapsModeNV where
  showsPrec :: Int -> RayTracingLssPrimitiveEndCapsModeNV -> ShowS
showsPrec =
    String
-> [(RayTracingLssPrimitiveEndCapsModeNV, String)]
-> String
-> (RayTracingLssPrimitiveEndCapsModeNV -> Int32)
-> (Int32 -> ShowS)
-> Int
-> RayTracingLssPrimitiveEndCapsModeNV
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixRayTracingLssPrimitiveEndCapsModeNV
      [(RayTracingLssPrimitiveEndCapsModeNV, String)]
showTableRayTracingLssPrimitiveEndCapsModeNV
      String
conNameRayTracingLssPrimitiveEndCapsModeNV
      (\(RayTracingLssPrimitiveEndCapsModeNV Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read RayTracingLssPrimitiveEndCapsModeNV where
  readPrec :: ReadPrec RayTracingLssPrimitiveEndCapsModeNV
readPrec =
    String
-> [(RayTracingLssPrimitiveEndCapsModeNV, String)]
-> String
-> (Int32 -> RayTracingLssPrimitiveEndCapsModeNV)
-> ReadPrec RayTracingLssPrimitiveEndCapsModeNV
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixRayTracingLssPrimitiveEndCapsModeNV
      [(RayTracingLssPrimitiveEndCapsModeNV, String)]
showTableRayTracingLssPrimitiveEndCapsModeNV
      String
conNameRayTracingLssPrimitiveEndCapsModeNV
      Int32 -> RayTracingLssPrimitiveEndCapsModeNV
RayTracingLssPrimitiveEndCapsModeNV

type NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION"
pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION :: forall a . Integral a => a
pattern $mNV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION :: forall a. Integral a => a
NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION = 1


type NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres"

-- No documentation found for TopLevel "VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME"
pattern NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mNV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME = "VK_NV_ray_tracing_linear_swept_spheres"