{-# language CPP #-}
module Vulkan.Extensions.VK_NV_ray_tracing ( compileDeferredNV
, createAccelerationStructureNV
, getAccelerationStructureMemoryRequirementsNV
, cmdCopyAccelerationStructureNV
, cmdBuildAccelerationStructureNV
, cmdTraceRaysNV
, getAccelerationStructureHandleNV
, createRayTracingPipelinesNV
, pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
, pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
, pattern SHADER_STAGE_RAYGEN_BIT_NV
, pattern SHADER_STAGE_ANY_HIT_BIT_NV
, pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV
, pattern SHADER_STAGE_MISS_BIT_NV
, pattern SHADER_STAGE_INTERSECTION_BIT_NV
, pattern SHADER_STAGE_CALLABLE_BIT_NV
, pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV
, pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV
, pattern BUFFER_USAGE_RAY_TRACING_BIT_NV
, pattern PIPELINE_BIND_POINT_RAY_TRACING_NV
, pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
, pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV
, pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV
, pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
, pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV
, pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT
, pattern INDEX_TYPE_NONE_NV
, pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
, pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV
, pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
, pattern GEOMETRY_TYPE_TRIANGLES_NV
, pattern GEOMETRY_TYPE_AABBS_NV
, pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
, pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
, pattern GEOMETRY_OPAQUE_BIT_NV
, pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV
, pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV
, pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV
, pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV
, pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV
, pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV
, pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV
, pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV
, pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV
, pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV
, pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV
, pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
, pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
, pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
, pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
, destroyAccelerationStructureNV
, bindAccelerationStructureMemoryNV
, cmdWriteAccelerationStructuresPropertiesNV
, getRayTracingShaderGroupHandlesNV
, pattern SHADER_UNUSED_NV
, RayTracingShaderGroupCreateInfoNV(..)
, RayTracingPipelineCreateInfoNV(..)
, GeometryTrianglesNV(..)
, GeometryAABBNV(..)
, GeometryDataNV(..)
, GeometryNV(..)
, AccelerationStructureInfoNV(..)
, AccelerationStructureCreateInfoNV(..)
, AccelerationStructureMemoryRequirementsInfoNV(..)
, PhysicalDeviceRayTracingPropertiesNV(..)
, GeometryFlagsNV
, GeometryInstanceFlagsNV
, BuildAccelerationStructureFlagsNV
, AccelerationStructureNV
, GeometryFlagBitsNV
, GeometryInstanceFlagBitsNV
, BuildAccelerationStructureFlagBitsNV
, CopyAccelerationStructureModeNV
, AccelerationStructureTypeNV
, GeometryTypeNV
, RayTracingShaderGroupTypeNV
, AccelerationStructureMemoryRequirementsTypeNV
, BindAccelerationStructureMemoryInfoNV
, WriteDescriptorSetAccelerationStructureNV
, AabbPositionsNV
, TransformMatrixNV
, AccelerationStructureInstanceNV
, NV_RAY_TRACING_SPEC_VERSION
, pattern NV_RAY_TRACING_SPEC_VERSION
, NV_RAY_TRACING_EXTENSION_NAME
, pattern NV_RAY_TRACING_EXTENSION_NAME
, AccelerationStructureKHR(..)
, BindAccelerationStructureMemoryInfoKHR(..)
, WriteDescriptorSetAccelerationStructureKHR(..)
, AabbPositionsKHR(..)
, TransformMatrixKHR(..)
, AccelerationStructureInstanceKHR(..)
, destroyAccelerationStructureKHR
, bindAccelerationStructureMemoryKHR
, cmdWriteAccelerationStructuresPropertiesKHR
, getRayTracingShaderGroupHandlesKHR
, DebugReportObjectTypeEXT(..)
, GeometryInstanceFlagBitsKHR(..)
, GeometryInstanceFlagsKHR
, GeometryFlagBitsKHR(..)
, GeometryFlagsKHR
, BuildAccelerationStructureFlagBitsKHR(..)
, BuildAccelerationStructureFlagsKHR
, CopyAccelerationStructureModeKHR(..)
, AccelerationStructureTypeKHR(..)
, GeometryTypeKHR(..)
, AccelerationStructureMemoryRequirementsTypeKHR(..)
, RayTracingShaderGroupTypeKHR(..)
, SHADER_UNUSED_KHR
, pattern SHADER_UNUSED_KHR
) where
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import Foreign.C.Types (CSize(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Type.Equality ((:~:)(Refl))
import Data.Typeable (Typeable)
import Foreign.C.Types (CSize)
import Foreign.C.Types (CSize(CSize))
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Data.Int (Int32)
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Data.Word (Word32)
import Data.Word (Word64)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)
import Vulkan.Core10.BaseType (boolToBool32)
import Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.Extensions.VK_KHR_ray_tracing (getRayTracingShaderGroupHandlesKHR)
import Vulkan.CStruct.Extends (peekSomeCStruct)
import Vulkan.CStruct.Extends (pokeSomeCStruct)
import Vulkan.NamedType ((:::))
import Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR)
import Vulkan.Extensions.Handles (AccelerationStructureKHR)
import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR)
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)
import Vulkan.Core10.BaseType (Bool32)
import Vulkan.Core10.BaseType (Bool32(..))
import Vulkan.Core10.Handles (Buffer)
import Vulkan.Core10.Handles (Buffer(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(..))
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))
import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))
import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))
import Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))
import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))
import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))
import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))
import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))
import Vulkan.Core10.BaseType (DeviceSize)
import Vulkan.Core10.Handles (Device_T)
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR)
import Vulkan.Core10.Enums.IndexType (IndexType)
import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.Core10.Handles (Pipeline)
import Vulkan.Core10.Handles (Pipeline(..))
import Vulkan.Core10.Handles (PipelineCache)
import Vulkan.Core10.Handles (PipelineCache(..))
import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)
import Vulkan.Core10.Handles (PipelineLayout)
import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR)
import Vulkan.Zero (Zero(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR))
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR))
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))
import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_RAY_TRACING_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR))
import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT))
import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(GEOMETRY_OPAQUE_BIT_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(GEOMETRY_TYPE_AABBS_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(GEOMETRY_TYPE_TRIANGLES_KHR))
import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_NONE_KHR))
import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR))
import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(PIPELINE_BIND_POINT_RAY_TRACING_KHR))
import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))
import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR))
import Vulkan.Core10.Enums.QueryType (QueryType(QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR))
import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_ANY_HIT_BIT_KHR))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CALLABLE_BIT_KHR))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CLOSEST_HIT_BIT_KHR))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_INTERSECTION_BIT_KHR))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MISS_BIT_KHR))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_RAYGEN_BIT_KHR))
import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (getRayTracingShaderGroupHandlesKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR(..))
import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(..))
import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(..))
import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)
import Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR(..))
import Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR(..))
import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCompileDeferredNV
:: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result
compileDeferredNV :: forall io . MonadIO io => Device -> Pipeline -> ("shader" ::: Word32) -> io ()
compileDeferredNV :: Device -> Pipeline -> ("shader" ::: Word32) -> io ()
compileDeferredNV device :: Device
device pipeline :: Pipeline
pipeline shader :: "shader" ::: Word32
shader = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCompileDeferredNVPtr :: FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
vkCompileDeferredNVPtr = DeviceCmds
-> FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
pVkCompileDeferredNV (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
vkCompileDeferredNVPtr FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
-> FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCompileDeferredNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCompileDeferredNV' :: Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result
vkCompileDeferredNV' = FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
-> Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result
mkVkCompileDeferredNV FunPtr
(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
vkCompileDeferredNVPtr
Result
r <- Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result
vkCompileDeferredNV' (Device -> Ptr Device_T
deviceHandle (Device
device)) (Pipeline
pipeline) ("shader" ::: Word32
shader)
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateAccelerationStructureNV
:: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result
createAccelerationStructureNV :: forall io . MonadIO io => Device -> AccelerationStructureCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io (AccelerationStructureNV)
createAccelerationStructureNV :: Device
-> AccelerationStructureCreateInfoNV
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io AccelerationStructureNV
createAccelerationStructureNV device :: Device
device createInfo :: AccelerationStructureCreateInfoNV
createInfo allocator :: "allocator" ::: Maybe AllocationCallbacks
allocator = IO AccelerationStructureNV -> io AccelerationStructureNV
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AccelerationStructureNV -> io AccelerationStructureNV)
-> (ContT AccelerationStructureNV IO AccelerationStructureNV
-> IO AccelerationStructureNV)
-> ContT AccelerationStructureNV IO AccelerationStructureNV
-> io AccelerationStructureNV
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT AccelerationStructureNV IO AccelerationStructureNV
-> IO AccelerationStructureNV
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT AccelerationStructureNV IO AccelerationStructureNV
-> io AccelerationStructureNV)
-> ContT AccelerationStructureNV IO AccelerationStructureNV
-> io AccelerationStructureNV
forall a b. (a -> b) -> a -> b
$ do
let vkCreateAccelerationStructureNVPtr :: FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
vkCreateAccelerationStructureNVPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
pVkCreateAccelerationStructureNV (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT AccelerationStructureNV IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT AccelerationStructureNV IO ())
-> IO () -> ContT AccelerationStructureNV IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
vkCreateAccelerationStructureNVPtr FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
-> FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCreateAccelerationStructureNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateAccelerationStructureNV' :: Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result
vkCreateAccelerationStructureNV' = FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
-> Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result
mkVkCreateAccelerationStructureNV FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result)
vkCreateAccelerationStructureNVPtr
"pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
pCreateInfo <- ((("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV))
-> ((("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
forall a b. (a -> b) -> a -> b
$ AccelerationStructureCreateInfoNV
-> (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AccelerationStructureCreateInfoNV
createInfo)
"pAllocator" ::: Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
Nothing -> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ContT
AccelerationStructureNV
IO
("pAllocator" ::: Ptr AllocationCallbacks)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pAllocator" ::: Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just j :: AllocationCallbacks
j -> ((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pAllocator" ::: Ptr AllocationCallbacks)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pAllocator" ::: Ptr AllocationCallbacks))
-> ((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pAllocator" ::: Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (("pAllocator" ::: Ptr AllocationCallbacks)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
"pAccelerationStructure" ::: Ptr AccelerationStructureNV
pPAccelerationStructure <- ((("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pAccelerationStructure" ::: Ptr AccelerationStructureNV))
-> ((("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> ContT
AccelerationStructureNV
IO
("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
forall a b. (a -> b) -> a -> b
$ IO ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> (("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO ())
-> (("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO AccelerationStructureNV)
-> IO AccelerationStructureNV
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (Int
-> IO ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
forall a. Int -> IO (Ptr a)
callocBytes @AccelerationStructureNV 8) ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT AccelerationStructureNV IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT AccelerationStructureNV IO Result)
-> IO Result -> ContT AccelerationStructureNV IO Result
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO Result
vkCreateAccelerationStructureNV' (Device -> Ptr Device_T
deviceHandle (Device
device)) "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
pCreateInfo "pAllocator" ::: Ptr AllocationCallbacks
pAllocator ("pAccelerationStructure" ::: Ptr AccelerationStructureNV
pPAccelerationStructure)
IO () -> ContT AccelerationStructureNV IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT AccelerationStructureNV IO ())
-> IO () -> ContT AccelerationStructureNV IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
AccelerationStructureNV
pAccelerationStructure <- IO AccelerationStructureNV
-> ContT AccelerationStructureNV IO AccelerationStructureNV
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO AccelerationStructureNV
-> ContT AccelerationStructureNV IO AccelerationStructureNV)
-> IO AccelerationStructureNV
-> ContT AccelerationStructureNV IO AccelerationStructureNV
forall a b. (a -> b) -> a -> b
$ ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO AccelerationStructureNV
forall a. Storable a => Ptr a -> IO a
peek @AccelerationStructureNV "pAccelerationStructure" ::: Ptr AccelerationStructureNV
pPAccelerationStructure
AccelerationStructureNV
-> ContT AccelerationStructureNV IO AccelerationStructureNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (AccelerationStructureNV
-> ContT AccelerationStructureNV IO AccelerationStructureNV)
-> AccelerationStructureNV
-> ContT AccelerationStructureNV IO AccelerationStructureNV
forall a b. (a -> b) -> a -> b
$ (AccelerationStructureNV
pAccelerationStructure)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV
:: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()
getAccelerationStructureMemoryRequirementsNV :: forall a io . (Extendss MemoryRequirements2KHR a, PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoNV -> io (MemoryRequirements2KHR a)
getAccelerationStructureMemoryRequirementsNV :: Device
-> AccelerationStructureMemoryRequirementsInfoNV
-> io (MemoryRequirements2KHR a)
getAccelerationStructureMemoryRequirementsNV device :: Device
device info :: AccelerationStructureMemoryRequirementsInfoNV
info = IO (MemoryRequirements2KHR a) -> io (MemoryRequirements2KHR a)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (MemoryRequirements2KHR a) -> io (MemoryRequirements2KHR a))
-> (ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
-> IO (MemoryRequirements2KHR a))
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
-> io (MemoryRequirements2KHR a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
-> IO (MemoryRequirements2KHR a)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
-> io (MemoryRequirements2KHR a))
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
-> io (MemoryRequirements2KHR a)
forall a b. (a -> b) -> a -> b
$ do
let vkGetAccelerationStructureMemoryRequirementsNVPtr :: FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
vkGetAccelerationStructureMemoryRequirementsNVPtr = DeviceCmds
-> forall (a :: [*]).
FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
pVkGetAccelerationStructureMemoryRequirementsNV (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT (MemoryRequirements2KHR a) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (MemoryRequirements2KHR a) IO ())
-> IO () -> ContT (MemoryRequirements2KHR a) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
vkGetAccelerationStructureMemoryRequirementsNVPtr FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
-> FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkGetAccelerationStructureMemoryRequirementsNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetAccelerationStructureMemoryRequirementsNV' :: Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ()
vkGetAccelerationStructureMemoryRequirementsNV' = FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
-> Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ()
forall (a :: [*]).
FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Ptr (MemoryRequirements2KHR a)
-> IO ())
-> Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Ptr (MemoryRequirements2KHR a)
-> IO ()
mkVkGetAccelerationStructureMemoryRequirementsNV FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ())
vkGetAccelerationStructureMemoryRequirementsNVPtr
"pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
pInfo <- ((("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a))
-> ContT
(MemoryRequirements2KHR a)
IO
("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a))
-> ContT
(MemoryRequirements2KHR a)
IO
("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV))
-> ((("pInfo"
::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a))
-> ContT
(MemoryRequirements2KHR a)
IO
("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
forall a b. (a -> b) -> a -> b
$ AccelerationStructureMemoryRequirementsInfoNV
-> (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a)
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AccelerationStructureMemoryRequirementsInfoNV
info)
"pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a)
pPMemoryRequirements <- ((("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a))
-> ContT
(MemoryRequirements2KHR a)
IO
("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall b.
ToCStruct (MemoryRequirements2KHR a) =>
(("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO b)
-> IO b
forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(MemoryRequirements2KHR _))
IO () -> ContT (MemoryRequirements2KHR a) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (MemoryRequirements2KHR a) IO ())
-> IO () -> ContT (MemoryRequirements2KHR a) IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO ()
vkGetAccelerationStructureMemoryRequirementsNV' (Device -> Ptr Device_T
deviceHandle (Device
device)) "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
pInfo ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a)
pPMemoryRequirements)
MemoryRequirements2KHR a
pMemoryRequirements <- IO (MemoryRequirements2KHR a)
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO (MemoryRequirements2KHR a)
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a)
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
forall a b. (a -> b) -> a -> b
$ ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a))
-> IO (MemoryRequirements2KHR a)
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(MemoryRequirements2KHR _) "pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a)
pPMemoryRequirements
MemoryRequirements2KHR a
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (MemoryRequirements2KHR a
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a))
-> MemoryRequirements2KHR a
-> ContT (MemoryRequirements2KHR a) IO (MemoryRequirements2KHR a)
forall a b. (a -> b) -> a -> b
$ (MemoryRequirements2KHR a
pMemoryRequirements)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdCopyAccelerationStructureNV
:: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureKHR -> AccelerationStructureKHR -> CopyAccelerationStructureModeKHR -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureKHR -> AccelerationStructureKHR -> CopyAccelerationStructureModeKHR -> IO ()
cmdCopyAccelerationStructureNV :: forall io . MonadIO io => CommandBuffer -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> io ()
cmdCopyAccelerationStructureNV :: CommandBuffer
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> io ()
cmdCopyAccelerationStructureNV commandBuffer :: CommandBuffer
commandBuffer dst :: AccelerationStructureNV
dst src :: AccelerationStructureNV
src mode :: CopyAccelerationStructureModeKHR
mode = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdCopyAccelerationStructureNVPtr :: FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
vkCmdCopyAccelerationStructureNVPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
pVkCmdCopyAccelerationStructureNV (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
vkCmdCopyAccelerationStructureNVPtr FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdCopyAccelerationStructureNV' :: Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ()
vkCmdCopyAccelerationStructureNV' = FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
-> Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ()
mkVkCmdCopyAccelerationStructureNV FunPtr
(Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ())
vkCmdCopyAccelerationStructureNVPtr
Ptr CommandBuffer_T
-> AccelerationStructureNV
-> AccelerationStructureNV
-> CopyAccelerationStructureModeKHR
-> IO ()
vkCmdCopyAccelerationStructureNV' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) (AccelerationStructureNV
dst) (AccelerationStructureNV
src) (CopyAccelerationStructureModeKHR
mode)
() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdBuildAccelerationStructureNV
:: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureKHR -> AccelerationStructureKHR -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureKHR -> AccelerationStructureKHR -> Buffer -> DeviceSize -> IO ()
cmdBuildAccelerationStructureNV :: forall io . MonadIO io => CommandBuffer -> AccelerationStructureInfoNV -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> io ()
cmdBuildAccelerationStructureNV :: CommandBuffer
-> AccelerationStructureInfoNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> Bool
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> io ()
cmdBuildAccelerationStructureNV commandBuffer :: CommandBuffer
commandBuffer info :: AccelerationStructureInfoNV
info instanceData :: "instanceData" ::: Buffer
instanceData instanceOffset :: "instanceOffset" ::: DeviceSize
instanceOffset update :: Bool
update dst :: AccelerationStructureNV
dst src :: AccelerationStructureNV
src scratch :: "instanceData" ::: Buffer
scratch scratchOffset :: "instanceOffset" ::: DeviceSize
scratchOffset = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdBuildAccelerationStructureNVPtr :: FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
vkCmdBuildAccelerationStructureNVPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
pVkCmdBuildAccelerationStructureNV (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
vkCmdBuildAccelerationStructureNVPtr FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdBuildAccelerationStructureNV' :: Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ()
vkCmdBuildAccelerationStructureNV' = FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
-> Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ()
mkVkCmdBuildAccelerationStructureNV FunPtr
(Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ())
vkCmdBuildAccelerationStructureNVPtr
"pInfo" ::: Ptr AccelerationStructureInfoNV
pInfo <- ((("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO ()) -> IO ())
-> ContT () IO ("pInfo" ::: Ptr AccelerationStructureInfoNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO ())
-> IO ())
-> ContT () IO ("pInfo" ::: Ptr AccelerationStructureInfoNV))
-> ((("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO ())
-> IO ())
-> ContT () IO ("pInfo" ::: Ptr AccelerationStructureInfoNV)
forall a b. (a -> b) -> a -> b
$ AccelerationStructureInfoNV
-> (("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO ())
-> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AccelerationStructureInfoNV
info)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Ptr CommandBuffer_T
-> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("update" ::: Bool32)
-> AccelerationStructureNV
-> AccelerationStructureNV
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> IO ()
vkCmdBuildAccelerationStructureNV' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) "pInfo" ::: Ptr AccelerationStructureInfoNV
pInfo ("instanceData" ::: Buffer
instanceData) ("instanceOffset" ::: DeviceSize
instanceOffset) (Bool -> "update" ::: Bool32
boolToBool32 (Bool
update)) (AccelerationStructureNV
dst) (AccelerationStructureNV
src) ("instanceData" ::: Buffer
scratch) ("instanceOffset" ::: DeviceSize
scratchOffset)
() -> ContT () IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> ContT () IO ()) -> () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdTraceRaysNV
:: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()
cmdTraceRaysNV :: forall io . MonadIO io => CommandBuffer -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()
cmdTraceRaysNV :: CommandBuffer
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> io ()
cmdTraceRaysNV commandBuffer :: CommandBuffer
commandBuffer raygenShaderBindingTableBuffer :: "instanceData" ::: Buffer
raygenShaderBindingTableBuffer raygenShaderBindingOffset :: "instanceOffset" ::: DeviceSize
raygenShaderBindingOffset missShaderBindingTableBuffer :: "instanceData" ::: Buffer
missShaderBindingTableBuffer missShaderBindingOffset :: "instanceOffset" ::: DeviceSize
missShaderBindingOffset missShaderBindingStride :: "instanceOffset" ::: DeviceSize
missShaderBindingStride hitShaderBindingTableBuffer :: "instanceData" ::: Buffer
hitShaderBindingTableBuffer hitShaderBindingOffset :: "instanceOffset" ::: DeviceSize
hitShaderBindingOffset hitShaderBindingStride :: "instanceOffset" ::: DeviceSize
hitShaderBindingStride callableShaderBindingTableBuffer :: "instanceData" ::: Buffer
callableShaderBindingTableBuffer callableShaderBindingOffset :: "instanceOffset" ::: DeviceSize
callableShaderBindingOffset callableShaderBindingStride :: "instanceOffset" ::: DeviceSize
callableShaderBindingStride width :: "shader" ::: Word32
width height :: "shader" ::: Word32
height depth :: "shader" ::: Word32
depth = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdTraceRaysNVPtr :: FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
vkCmdTraceRaysNVPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
pVkCmdTraceRaysNV (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
vkCmdTraceRaysNVPtr FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdTraceRaysNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdTraceRaysNV' :: Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ()
vkCmdTraceRaysNV' = FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
-> Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ()
mkVkCmdTraceRaysNV FunPtr
(Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ())
vkCmdTraceRaysNVPtr
Ptr CommandBuffer_T
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> IO ()
vkCmdTraceRaysNV' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) ("instanceData" ::: Buffer
raygenShaderBindingTableBuffer) ("instanceOffset" ::: DeviceSize
raygenShaderBindingOffset) ("instanceData" ::: Buffer
missShaderBindingTableBuffer) ("instanceOffset" ::: DeviceSize
missShaderBindingOffset) ("instanceOffset" ::: DeviceSize
missShaderBindingStride) ("instanceData" ::: Buffer
hitShaderBindingTableBuffer) ("instanceOffset" ::: DeviceSize
hitShaderBindingOffset) ("instanceOffset" ::: DeviceSize
hitShaderBindingStride) ("instanceData" ::: Buffer
callableShaderBindingTableBuffer) ("instanceOffset" ::: DeviceSize
callableShaderBindingOffset) ("instanceOffset" ::: DeviceSize
callableShaderBindingStride) ("shader" ::: Word32
width) ("shader" ::: Word32
height) ("shader" ::: Word32
depth)
() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetAccelerationStructureHandleNV
:: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureKHR -> CSize -> Ptr () -> IO Result
getAccelerationStructureHandleNV :: forall io . MonadIO io => Device -> AccelerationStructureKHR -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
getAccelerationStructureHandleNV :: Device
-> AccelerationStructureNV
-> ("instanceOffset" ::: DeviceSize)
-> ("data" ::: Ptr ())
-> io ()
getAccelerationStructureHandleNV device :: Device
device accelerationStructure :: AccelerationStructureNV
accelerationStructure dataSize :: "instanceOffset" ::: DeviceSize
dataSize data' :: "data" ::: Ptr ()
data' = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkGetAccelerationStructureHandleNVPtr :: FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
vkGetAccelerationStructureHandleNVPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
pVkGetAccelerationStructureHandleNV (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
vkGetAccelerationStructureHandleNVPtr FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
-> FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkGetAccelerationStructureHandleNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetAccelerationStructureHandleNV' :: Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result
vkGetAccelerationStructureHandleNV' = FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
-> Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result
mkVkGetAccelerationStructureHandleNV FunPtr
(Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result)
vkGetAccelerationStructureHandleNVPtr
Result
r <- Ptr Device_T
-> AccelerationStructureNV
-> ("dataSize" ::: CSize)
-> ("data" ::: Ptr ())
-> IO Result
vkGetAccelerationStructureHandleNV' (Device -> Ptr Device_T
deviceHandle (Device
device)) (AccelerationStructureNV
accelerationStructure) (("instanceOffset" ::: DeviceSize) -> "dataSize" ::: CSize
CSize ("instanceOffset" ::: DeviceSize
dataSize)) ("data" ::: Ptr ()
data')
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateRayTracingPipelinesNV
:: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result
createRayTracingPipelinesNV :: forall io . MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, ("pipelines" ::: Vector Pipeline))
createRayTracingPipelinesNV :: Device
-> PipelineCache
-> ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io (Result, "pipelines" ::: Vector Pipeline)
createRayTracingPipelinesNV device :: Device
device pipelineCache :: PipelineCache
pipelineCache createInfos :: "createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)
createInfos allocator :: "allocator" ::: Maybe AllocationCallbacks
allocator = IO (Result, "pipelines" ::: Vector Pipeline)
-> io (Result, "pipelines" ::: Vector Pipeline)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Result, "pipelines" ::: Vector Pipeline)
-> io (Result, "pipelines" ::: Vector Pipeline))
-> (ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
-> io (Result, "pipelines" ::: Vector Pipeline)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
-> io (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
-> io (Result, "pipelines" ::: Vector Pipeline)
forall a b. (a -> b) -> a -> b
$ do
let vkCreateRayTracingPipelinesNVPtr :: FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
vkCreateRayTracingPipelinesNVPtr = DeviceCmds
-> forall (a :: [*]).
FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV a))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
pVkCreateRayTracingPipelinesNV (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "pipelines" ::: Vector Pipeline) IO ())
-> IO () -> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
vkCreateRayTracingPipelinesNVPtr FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
-> FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateRayTracingPipelinesNV' :: Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result
vkCreateRayTracingPipelinesNV' = FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
-> Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result
forall (a :: [*]).
FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> Ptr (RayTracingPipelineCreateInfoNV a)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
-> Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> Ptr (RayTracingPipelineCreateInfoNV a)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result
mkVkCreateRayTracingPipelinesNV FunPtr
(Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result)
vkCreateRayTracingPipelinesNVPtr
"pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any)
pPCreateInfos <- ((("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any)))
-> ((("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
forall a b. (a -> b) -> a -> b
$ Int
-> Int
-> (("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline)
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @(RayTracingPipelineCreateInfoNV _) ((("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a. Vector a -> Int
Data.Vector.length ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)
createInfos)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 80) 8
(Int
-> SomeStruct RayTracingPipelineCreateInfoNV
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO ())
-> ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: SomeStruct RayTracingPipelineCreateInfoNV
e -> ((() -> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO ())
-> ((() -> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (SomeStruct RayTracingPipelineCreateInfoNV)
-> SomeStruct RayTracingPipelineCreateInfoNV
-> IO (Result, "pipelines" ::: Vector Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline)
forall (a :: [*] -> *) b.
(forall (es :: [*]).
(Extendss a es, PokeChain es) =>
ToCStruct (a es)) =>
Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b
pokeSomeCStruct (("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> Ptr (SomeStruct RayTracingPipelineCreateInfoNV)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any)
pPCreateInfos ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> Int -> Ptr (RayTracingPipelineCreateInfoNV _)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (80 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (RayTracingPipelineCreateInfoNV _))) (SomeStruct RayTracingPipelineCreateInfoNV
e) (IO (Result, "pipelines" ::: Vector Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ((() -> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> (() -> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO (Result, "pipelines" ::: Vector Pipeline))
-> () -> IO (Result, "pipelines" ::: Vector Pipeline)
forall a b. (a -> b) -> a -> b
$ ())) ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)
createInfos)
"pAllocator" ::: Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
Nothing -> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pAllocator" ::: Ptr AllocationCallbacks)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pAllocator" ::: Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just j :: AllocationCallbacks
j -> ((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pAllocator" ::: Ptr AllocationCallbacks)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pAllocator" ::: Ptr AllocationCallbacks))
-> ((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pAllocator" ::: Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (("pAllocator" ::: Ptr AllocationCallbacks)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline)
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
"pPipelines" ::: Ptr Pipeline
pPPipelines <- ((("pPipelines" ::: Ptr Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pPipelines" ::: Ptr Pipeline)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pPipelines" ::: Ptr Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pPipelines" ::: Ptr Pipeline))
-> ((("pPipelines" ::: Ptr Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pPipelines" ::: Ptr Pipeline)
forall a b. (a -> b) -> a -> b
$ IO ("pPipelines" ::: Ptr Pipeline)
-> (("pPipelines" ::: Ptr Pipeline) -> IO ())
-> (("pPipelines" ::: Ptr Pipeline)
-> IO (Result, "pipelines" ::: Vector Pipeline))
-> IO (Result, "pipelines" ::: Vector Pipeline)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (Int -> IO ("pPipelines" ::: Ptr Pipeline)
forall a. Int -> IO (Ptr a)
callocBytes @Pipeline ((("shader" ::: Word32) -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral ((Int -> "shader" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a. Vector a -> Int
Data.Vector.length (("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int)
-> ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a b. (a -> b) -> a -> b
$ ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)
createInfos)) :: Word32))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8)) ("pPipelines" ::: Ptr Pipeline) -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO Result)
-> IO Result
-> ContT (Result, "pipelines" ::: Vector Pipeline) IO Result
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> PipelineCache
-> ("shader" ::: Word32)
-> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pPipelines" ::: Ptr Pipeline)
-> IO Result
vkCreateRayTracingPipelinesNV' (Device -> Ptr Device_T
deviceHandle (Device
device)) (PipelineCache
pipelineCache) ((Int -> "shader" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a. Vector a -> Int
Data.Vector.length (("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int)
-> ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a b. (a -> b) -> a -> b
$ ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)
createInfos)) :: Word32)) ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV Any)
pPCreateInfos) "pAllocator" ::: Ptr AllocationCallbacks
pAllocator ("pPipelines" ::: Ptr Pipeline
pPPipelines)
IO () -> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "pipelines" ::: Vector Pipeline) IO ())
-> IO () -> ContT (Result, "pipelines" ::: Vector Pipeline) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
"pipelines" ::: Vector Pipeline
pPipelines <- IO ("pipelines" ::: Vector Pipeline)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pipelines" ::: Vector Pipeline)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("pipelines" ::: Vector Pipeline)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pipelines" ::: Vector Pipeline))
-> IO ("pipelines" ::: Vector Pipeline)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
("pipelines" ::: Vector Pipeline)
forall a b. (a -> b) -> a -> b
$ Int -> (Int -> IO Pipeline) -> IO ("pipelines" ::: Vector Pipeline)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (("shader" ::: Word32) -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral ((Int -> "shader" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a. Vector a -> Int
Data.Vector.length (("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int)
-> ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
-> Int
forall a b. (a -> b) -> a -> b
$ ("createInfos"
::: Vector (SomeStruct RayTracingPipelineCreateInfoNV)
createInfos)) :: Word32))) (\i :: Int
i -> ("pPipelines" ::: Ptr Pipeline) -> IO Pipeline
forall a. Storable a => Ptr a -> IO a
peek @Pipeline (("pPipelines" ::: Ptr Pipeline
pPPipelines ("pPipelines" ::: Ptr Pipeline)
-> Int -> "pPipelines" ::: Ptr Pipeline
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Pipeline)))
(Result, "pipelines" ::: Vector Pipeline)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
forall (f :: * -> *) a. Applicative f => a -> f a
pure ((Result, "pipelines" ::: Vector Pipeline)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline))
-> (Result, "pipelines" ::: Vector Pipeline)
-> ContT
(Result, "pipelines" ::: Vector Pipeline)
IO
(Result, "pipelines" ::: Vector Pipeline)
forall a b. (a -> b) -> a -> b
$ (Result
r, "pipelines" ::: Vector Pipeline
pPipelines)
pattern $bSTRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV :: StructureType
$mSTRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV :: forall r. StructureType -> (Void# -> r) -> (Void# -> r) -> r
STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR
pattern $bSTRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV :: StructureType
$mSTRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV :: forall r. StructureType -> (Void# -> r) -> (Void# -> r) -> r
STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
pattern $bSHADER_STAGE_RAYGEN_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_RAYGEN_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_RAYGEN_BIT_NV = SHADER_STAGE_RAYGEN_BIT_KHR
pattern $bSHADER_STAGE_ANY_HIT_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_ANY_HIT_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_ANY_HIT_BIT_NV = SHADER_STAGE_ANY_HIT_BIT_KHR
pattern $bSHADER_STAGE_CLOSEST_HIT_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_CLOSEST_HIT_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_CLOSEST_HIT_BIT_NV = SHADER_STAGE_CLOSEST_HIT_BIT_KHR
pattern $bSHADER_STAGE_MISS_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_MISS_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_MISS_BIT_NV = SHADER_STAGE_MISS_BIT_KHR
pattern $bSHADER_STAGE_INTERSECTION_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_INTERSECTION_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_INTERSECTION_BIT_NV = SHADER_STAGE_INTERSECTION_BIT_KHR
pattern $bSHADER_STAGE_CALLABLE_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_CALLABLE_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_CALLABLE_BIT_NV = SHADER_STAGE_CALLABLE_BIT_KHR
pattern $bPIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV :: PipelineStageFlagBits
$mPIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV :: forall r.
PipelineStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
pattern $bPIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV :: PipelineStageFlagBits
$mPIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV :: forall r.
PipelineStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
pattern $bBUFFER_USAGE_RAY_TRACING_BIT_NV :: BufferUsageFlagBits
$mBUFFER_USAGE_RAY_TRACING_BIT_NV :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_RAY_TRACING_BIT_NV = BUFFER_USAGE_RAY_TRACING_BIT_KHR
pattern $bPIPELINE_BIND_POINT_RAY_TRACING_NV :: PipelineBindPoint
$mPIPELINE_BIND_POINT_RAY_TRACING_NV :: forall r. PipelineBindPoint -> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_BIND_POINT_RAY_TRACING_NV = PIPELINE_BIND_POINT_RAY_TRACING_KHR
pattern $bDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV :: DescriptorType
$mDESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV :: forall r. DescriptorType -> (Void# -> r) -> (Void# -> r) -> r
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
pattern $bACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV :: AccessFlagBits
$mACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV :: forall r. AccessFlagBits -> (Void# -> r) -> (Void# -> r) -> r
ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR
pattern $bACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV :: AccessFlagBits
$mACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV :: forall r. AccessFlagBits -> (Void# -> r) -> (Void# -> r) -> r
ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
pattern $bQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV :: QueryType
$mQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV :: forall r. QueryType -> (Void# -> r) -> (Void# -> r) -> r
QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
pattern $bOBJECT_TYPE_ACCELERATION_STRUCTURE_NV :: ObjectType
$mOBJECT_TYPE_ACCELERATION_STRUCTURE_NV :: forall r. ObjectType -> (Void# -> r) -> (Void# -> r) -> r
OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR
pattern $bDEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: DebugReportObjectTypeEXT
$mDEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: forall r.
DebugReportObjectTypeEXT -> (Void# -> r) -> (Void# -> r) -> r
DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT
pattern $bINDEX_TYPE_NONE_NV :: IndexType
$mINDEX_TYPE_NONE_NV :: forall r. IndexType -> (Void# -> r) -> (Void# -> r) -> r
INDEX_TYPE_NONE_NV = INDEX_TYPE_NONE_KHR
pattern $bRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV :: RayTracingShaderGroupTypeKHR
$mRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV :: forall r.
RayTracingShaderGroupTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
pattern $bRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV :: RayTracingShaderGroupTypeKHR
$mRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV :: forall r.
RayTracingShaderGroupTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
pattern $bRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: RayTracingShaderGroupTypeKHR
$mRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: forall r.
RayTracingShaderGroupTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
pattern $bGEOMETRY_TYPE_TRIANGLES_NV :: GeometryTypeKHR
$mGEOMETRY_TYPE_TRIANGLES_NV :: forall r. GeometryTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_TYPE_TRIANGLES_NV = GEOMETRY_TYPE_TRIANGLES_KHR
pattern $bGEOMETRY_TYPE_AABBS_NV :: GeometryTypeKHR
$mGEOMETRY_TYPE_AABBS_NV :: forall r. GeometryTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_TYPE_AABBS_NV = GEOMETRY_TYPE_AABBS_KHR
pattern $bACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV :: AccelerationStructureTypeKHR
$mACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV :: forall r.
AccelerationStructureTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
pattern $bACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: AccelerationStructureTypeKHR
$mACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: forall r.
AccelerationStructureTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
pattern $bGEOMETRY_OPAQUE_BIT_NV :: GeometryFlagBitsKHR
$mGEOMETRY_OPAQUE_BIT_NV :: forall r. GeometryFlagBitsKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_OPAQUE_BIT_NV = GEOMETRY_OPAQUE_BIT_KHR
pattern $bGEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV :: GeometryFlagBitsKHR
$mGEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV :: forall r. GeometryFlagBitsKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR
pattern $bGEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV :: GeometryInstanceFlagBitsKHR
$mGEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV :: forall r.
GeometryInstanceFlagBitsKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR
pattern $bGEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV :: GeometryInstanceFlagBitsKHR
$mGEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV :: forall r.
GeometryInstanceFlagBitsKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR
pattern $bGEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV :: GeometryInstanceFlagBitsKHR
$mGEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV :: forall r.
GeometryInstanceFlagBitsKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR
pattern $bGEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV :: GeometryInstanceFlagBitsKHR
$mGEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV :: forall r.
GeometryInstanceFlagBitsKHR -> (Void# -> r) -> (Void# -> r) -> r
GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR
pattern $bBUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
$mBUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV :: forall r.
BuildAccelerationStructureFlagBitsKHR
-> (Void# -> r) -> (Void# -> r) -> r
BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
pattern $bBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
$mBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV :: forall r.
BuildAccelerationStructureFlagBitsKHR
-> (Void# -> r) -> (Void# -> r) -> r
BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
pattern $bBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
$mBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV :: forall r.
BuildAccelerationStructureFlagBitsKHR
-> (Void# -> r) -> (Void# -> r) -> r
BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
pattern $bBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
$mBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV :: forall r.
BuildAccelerationStructureFlagBitsKHR
-> (Void# -> r) -> (Void# -> r) -> r
BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
pattern $bBUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
$mBUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV :: forall r.
BuildAccelerationStructureFlagBitsKHR
-> (Void# -> r) -> (Void# -> r) -> r
BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR
pattern $bCOPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV :: CopyAccelerationStructureModeKHR
$mCOPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV :: forall r.
CopyAccelerationStructureModeKHR
-> (Void# -> r) -> (Void# -> r) -> r
COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
pattern $bCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: CopyAccelerationStructureModeKHR
$mCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: forall r.
CopyAccelerationStructureModeKHR
-> (Void# -> r) -> (Void# -> r) -> r
COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
pattern $bACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV :: AccelerationStructureMemoryRequirementsTypeKHR
$mACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV :: forall r.
AccelerationStructureMemoryRequirementsTypeKHR
-> (Void# -> r) -> (Void# -> r) -> r
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR
pattern $bACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeKHR
$mACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV :: forall r.
AccelerationStructureMemoryRequirementsTypeKHR
-> (Void# -> r) -> (Void# -> r) -> r
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR
pattern $bACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeKHR
$mACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: forall r.
AccelerationStructureMemoryRequirementsTypeKHR
-> (Void# -> r) -> (Void# -> r) -> r
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR
destroyAccelerationStructureNV :: Device
-> AccelerationStructureNV
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyAccelerationStructureNV = Device
-> AccelerationStructureNV
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> AccelerationStructureNV
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyAccelerationStructureKHR
bindAccelerationStructureMemoryNV :: Device
-> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR)
-> io ()
bindAccelerationStructureMemoryNV = Device
-> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR)
-> io ()
bindAccelerationStructureMemoryKHR
cmdWriteAccelerationStructuresPropertiesNV :: CommandBuffer
-> ("accelerationStructures" ::: Vector AccelerationStructureNV)
-> QueryType
-> QueryPool
-> ("shader" ::: Word32)
-> io ()
cmdWriteAccelerationStructuresPropertiesNV = CommandBuffer
-> ("accelerationStructures" ::: Vector AccelerationStructureNV)
-> QueryType
-> QueryPool
-> ("shader" ::: Word32)
-> io ()
forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> ("accelerationStructures" ::: Vector AccelerationStructureNV)
-> QueryType
-> QueryPool
-> ("shader" ::: Word32)
-> io ()
cmdWriteAccelerationStructuresPropertiesKHR
getRayTracingShaderGroupHandlesNV :: Device
-> Pipeline
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> ("data" ::: Ptr ())
-> io ()
getRayTracingShaderGroupHandlesNV = Device
-> Pipeline
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> ("data" ::: Ptr ())
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> Pipeline
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> ("data" ::: Ptr ())
-> io ()
getRayTracingShaderGroupHandlesKHR
pattern $bSHADER_UNUSED_NV :: "shader" ::: Word32
$mSHADER_UNUSED_NV :: forall r.
("shader" ::: Word32) -> (Void# -> r) -> (Void# -> r) -> r
SHADER_UNUSED_NV = SHADER_UNUSED_KHR
data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV
{
RayTracingShaderGroupCreateInfoNV -> RayTracingShaderGroupTypeKHR
type' :: RayTracingShaderGroupTypeKHR
,
RayTracingShaderGroupCreateInfoNV -> "shader" ::: Word32
generalShader :: Word32
,
RayTracingShaderGroupCreateInfoNV -> "shader" ::: Word32
closestHitShader :: Word32
,
RayTracingShaderGroupCreateInfoNV -> "shader" ::: Word32
anyHitShader :: Word32
,
RayTracingShaderGroupCreateInfoNV -> "shader" ::: Word32
intersectionShader :: Word32
}
deriving (Typeable)
deriving instance Show RayTracingShaderGroupCreateInfoNV
instance ToCStruct RayTracingShaderGroupCreateInfoNV where
withCStruct :: RayTracingShaderGroupCreateInfoNV
-> (Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b
withCStruct x :: RayTracingShaderGroupCreateInfoNV
x f :: Ptr RayTracingShaderGroupCreateInfoNV -> IO b
f = Int
-> Int -> (Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 40 8 ((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> (Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr RayTracingShaderGroupCreateInfoNV
p -> Ptr RayTracingShaderGroupCreateInfoNV
-> RayTracingShaderGroupCreateInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RayTracingShaderGroupCreateInfoNV
p RayTracingShaderGroupCreateInfoNV
x (Ptr RayTracingShaderGroupCreateInfoNV -> IO b
f Ptr RayTracingShaderGroupCreateInfoNV
p)
pokeCStruct :: Ptr RayTracingShaderGroupCreateInfoNV
-> RayTracingShaderGroupCreateInfoNV -> IO b -> IO b
pokeCStruct p :: Ptr RayTracingShaderGroupCreateInfoNV
p RayTracingShaderGroupCreateInfoNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr RayTracingShaderGroupTypeKHR
-> RayTracingShaderGroupTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr RayTracingShaderGroupTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (RayTracingShaderGroupTypeKHR
type')
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("shader" ::: Word32
generalShader)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
closestHitShader)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ("shader" ::: Word32
anyHitShader)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ("shader" ::: Word32
intersectionShader)
IO b
f
cStructSize :: Int
cStructSize = 40
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr RayTracingShaderGroupCreateInfoNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr RayTracingShaderGroupCreateInfoNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr RayTracingShaderGroupTypeKHR
-> RayTracingShaderGroupTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr RayTracingShaderGroupTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (RayTracingShaderGroupTypeKHR
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct RayTracingShaderGroupCreateInfoNV where
peekCStruct :: Ptr RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV
peekCStruct p :: Ptr RayTracingShaderGroupCreateInfoNV
p = do
RayTracingShaderGroupTypeKHR
type' <- Ptr RayTracingShaderGroupTypeKHR -> IO RayTracingShaderGroupTypeKHR
forall a. Storable a => Ptr a -> IO a
peek @RayTracingShaderGroupTypeKHR ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr RayTracingShaderGroupTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))
"shader" ::: Word32
generalShader <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
"shader" ::: Word32
closestHitShader <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32))
"shader" ::: Word32
anyHitShader <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32))
"shader" ::: Word32
intersectionShader <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr RayTracingShaderGroupCreateInfoNV
p Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32))
RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV)
-> RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV
forall a b. (a -> b) -> a -> b
$ RayTracingShaderGroupTypeKHR
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> RayTracingShaderGroupCreateInfoNV
RayTracingShaderGroupCreateInfoNV
RayTracingShaderGroupTypeKHR
type' "shader" ::: Word32
generalShader "shader" ::: Word32
closestHitShader "shader" ::: Word32
anyHitShader "shader" ::: Word32
intersectionShader
instance Storable RayTracingShaderGroupCreateInfoNV where
sizeOf :: RayTracingShaderGroupCreateInfoNV -> Int
sizeOf ~RayTracingShaderGroupCreateInfoNV
_ = 40
alignment :: RayTracingShaderGroupCreateInfoNV -> Int
alignment ~RayTracingShaderGroupCreateInfoNV
_ = 8
peek :: Ptr RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV
peek = Ptr RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr RayTracingShaderGroupCreateInfoNV
-> RayTracingShaderGroupCreateInfoNV -> IO ()
poke ptr :: Ptr RayTracingShaderGroupCreateInfoNV
ptr poked :: RayTracingShaderGroupCreateInfoNV
poked = Ptr RayTracingShaderGroupCreateInfoNV
-> RayTracingShaderGroupCreateInfoNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RayTracingShaderGroupCreateInfoNV
ptr RayTracingShaderGroupCreateInfoNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero RayTracingShaderGroupCreateInfoNV where
zero :: RayTracingShaderGroupCreateInfoNV
zero = RayTracingShaderGroupTypeKHR
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> RayTracingShaderGroupCreateInfoNV
RayTracingShaderGroupCreateInfoNV
RayTracingShaderGroupTypeKHR
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV
{
RayTracingPipelineCreateInfoNV es -> Chain es
next :: Chain es
,
RayTracingPipelineCreateInfoNV es -> PipelineCreateFlags
flags :: PipelineCreateFlags
,
RayTracingPipelineCreateInfoNV es
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
,
RayTracingPipelineCreateInfoNV es
-> Vector RayTracingShaderGroupCreateInfoNV
groups :: Vector RayTracingShaderGroupCreateInfoNV
,
RayTracingPipelineCreateInfoNV es -> "shader" ::: Word32
maxRecursionDepth :: Word32
,
RayTracingPipelineCreateInfoNV es -> PipelineLayout
layout :: PipelineLayout
,
RayTracingPipelineCreateInfoNV es -> Pipeline
basePipelineHandle :: Pipeline
,
RayTracingPipelineCreateInfoNV es -> Int32
basePipelineIndex :: Int32
}
deriving (Typeable)
deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)
instance Extensible RayTracingPipelineCreateInfoNV where
extensibleType :: StructureType
extensibleType = StructureType
STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
setNext :: RayTracingPipelineCreateInfoNV ds
-> Chain es -> RayTracingPipelineCreateInfoNV es
setNext x :: RayTracingPipelineCreateInfoNV ds
x next :: Chain es
next = RayTracingPipelineCreateInfoNV ds
x{$sel:next:RayTracingPipelineCreateInfoNV :: Chain es
next = Chain es
next}
getNext :: RayTracingPipelineCreateInfoNV es -> Chain es
getNext RayTracingPipelineCreateInfoNV{..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b
extends :: proxy e
-> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b
extends _ f :: Extends RayTracingPipelineCreateInfoNV e => b
f
| Just Refl <- (Typeable e, Typeable PipelineCreationFeedbackCreateInfoEXT) =>
Maybe (e :~: PipelineCreationFeedbackCreateInfoEXT)
forall k (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
eqT @e @PipelineCreationFeedbackCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends RayTracingPipelineCreateInfoNV e => b
f
| Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance (Extendss RayTracingPipelineCreateInfoNV es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoNV es) where
withCStruct :: RayTracingPipelineCreateInfoNV es
-> (Ptr (RayTracingPipelineCreateInfoNV es) -> IO b) -> IO b
withCStruct x :: RayTracingPipelineCreateInfoNV es
x f :: Ptr (RayTracingPipelineCreateInfoNV es) -> IO b
f = Int
-> Int -> (Ptr (RayTracingPipelineCreateInfoNV es) -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 80 8 ((Ptr (RayTracingPipelineCreateInfoNV es) -> IO b) -> IO b)
-> (Ptr (RayTracingPipelineCreateInfoNV es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr (RayTracingPipelineCreateInfoNV es)
p -> Ptr (RayTracingPipelineCreateInfoNV es)
-> RayTracingPipelineCreateInfoNV es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (RayTracingPipelineCreateInfoNV es)
p RayTracingPipelineCreateInfoNV es
x (Ptr (RayTracingPipelineCreateInfoNV es) -> IO b
f Ptr (RayTracingPipelineCreateInfoNV es)
p)
pokeCStruct :: Ptr (RayTracingPipelineCreateInfoNV es)
-> RayTracingPipelineCreateInfoNV es -> IO b -> IO b
pokeCStruct p :: Ptr (RayTracingPipelineCreateInfoNV es)
p RayTracingPipelineCreateInfoNV{..} f :: 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 (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 (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)
"data" ::: Ptr ()
pNext'' <- (Ptr (Chain es) -> "data" ::: Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> "data" ::: Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO ("data" ::: Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO ("data" ::: Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO ("data" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) "data" ::: Ptr ()
pNext''
IO () -> ContT b IO ()
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 PipelineCreateFlags -> PipelineCreateFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr PipelineCreateFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PipelineCreateFlags)) (PipelineCreateFlags
flags)
IO () -> ContT b IO ()
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 ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ((Int -> "shader" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector (SomeStruct PipelineShaderStageCreateInfo) -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector (SomeStruct PipelineShaderStageCreateInfo) -> Int)
-> Vector (SomeStruct PipelineShaderStageCreateInfo) -> Int
forall a b. (a -> b) -> a -> b
$ (Vector (SomeStruct PipelineShaderStageCreateInfo)
stages)) :: Word32))
Ptr (PipelineShaderStageCreateInfo Any)
pPStages' <- ((Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b)
-> ContT b IO (Ptr (PipelineShaderStageCreateInfo Any))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b)
-> ContT b IO (Ptr (PipelineShaderStageCreateInfo Any)))
-> ((Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b)
-> ContT b IO (Ptr (PipelineShaderStageCreateInfo Any))
forall a b. (a -> b) -> a -> b
$ Int
-> Int -> (Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Vector (SomeStruct PipelineShaderStageCreateInfo) -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector (SomeStruct PipelineShaderStageCreateInfo)
stages)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 48) 8
(Int -> SomeStruct PipelineShaderStageCreateInfo -> ContT b IO ())
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
-> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: SomeStruct PipelineShaderStageCreateInfo
e -> ((() -> 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 (SomeStruct PipelineShaderStageCreateInfo)
-> SomeStruct PipelineShaderStageCreateInfo -> IO b -> IO b
forall (a :: [*] -> *) b.
(forall (es :: [*]).
(Extendss a es, PokeChain es) =>
ToCStruct (a es)) =>
Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b
pokeSomeCStruct (Ptr (PipelineShaderStageCreateInfo Any)
-> Ptr (SomeStruct PipelineShaderStageCreateInfo)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (PipelineShaderStageCreateInfo Any)
pPStages' Ptr (PipelineShaderStageCreateInfo Any)
-> Int -> Ptr (PipelineShaderStageCreateInfo _)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (48 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (PipelineShaderStageCreateInfo _))) (SomeStruct PipelineShaderStageCreateInfo
e) (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
$ ())) (Vector (SomeStruct PipelineShaderStageCreateInfo)
stages)
IO () -> ContT b IO ()
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 (PipelineShaderStageCreateInfo Any))
-> Ptr (PipelineShaderStageCreateInfo Any) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr (Ptr (PipelineShaderStageCreateInfo _))
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (Ptr (PipelineShaderStageCreateInfo Any)
pPStages')
IO () -> ContT b IO ()
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 ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ((Int -> "shader" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector RayTracingShaderGroupCreateInfoNV -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector RayTracingShaderGroupCreateInfoNV -> Int)
-> Vector RayTracingShaderGroupCreateInfoNV -> Int
forall a b. (a -> b) -> a -> b
$ (Vector RayTracingShaderGroupCreateInfoNV
groups)) :: Word32))
Ptr RayTracingShaderGroupCreateInfoNV
pPGroups' <- ((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> ContT b IO (Ptr RayTracingShaderGroupCreateInfoNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> ContT b IO (Ptr RayTracingShaderGroupCreateInfoNV))
-> ((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> ContT b IO (Ptr RayTracingShaderGroupCreateInfoNV)
forall a b. (a -> b) -> a -> b
$ Int
-> Int -> (Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Vector RayTracingShaderGroupCreateInfoNV -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector RayTracingShaderGroupCreateInfoNV
groups)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 40) 8
(Int -> RayTracingShaderGroupCreateInfoNV -> ContT b IO ())
-> Vector RayTracingShaderGroupCreateInfoNV -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: RayTracingShaderGroupCreateInfoNV
e -> ((() -> 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 RayTracingShaderGroupCreateInfoNV
-> RayTracingShaderGroupCreateInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr RayTracingShaderGroupCreateInfoNV
pPGroups' Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr RayTracingShaderGroupCreateInfoNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (40 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (RayTracingShaderGroupCreateInfoNV
e) (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
$ ())) (Vector RayTracingShaderGroupCreateInfoNV
groups)
IO () -> ContT b IO ()
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 RayTracingShaderGroupCreateInfoNV)
-> Ptr RayTracingShaderGroupCreateInfoNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr (Ptr RayTracingShaderGroupCreateInfoNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (Ptr RayTracingShaderGroupCreateInfoNV
pPGroups')
IO () -> ContT b IO ()
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 ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32)) ("shader" ::: Word32
maxRecursionDepth)
IO () -> ContT b IO ()
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 PipelineLayout -> PipelineLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr PipelineLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr PipelineLayout)) (PipelineLayout
layout)
IO () -> ContT b IO ()
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
$ ("pPipelines" ::: Ptr Pipeline) -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> "pPipelines" ::: Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Pipeline)) (Pipeline
basePipelineHandle)
IO () -> ContT b IO ()
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 Int32 -> Int32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es) -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Int32)) (Int32
basePipelineIndex)
IO b -> ContT b IO b
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 = 80
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr (RayTracingPipelineCreateInfoNV es) -> IO b -> IO b
pokeZeroCStruct p :: Ptr (RayTracingPipelineCreateInfoNV es)
p f :: 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 (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 (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)
"data" ::: Ptr ()
pNext' <- (Ptr (Chain es) -> "data" ::: Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> "data" ::: Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO ("data" ::: Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO ("data" ::: Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO ("data" ::: Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO ("data" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ forall a. PokeChain es => (Ptr (Chain es) -> IO a) -> IO a
forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) "data" ::: Ptr ()
pNext'
Ptr (PipelineShaderStageCreateInfo Any)
pPStages' <- ((Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b)
-> ContT b IO (Ptr (PipelineShaderStageCreateInfo Any))
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b)
-> ContT b IO (Ptr (PipelineShaderStageCreateInfo Any)))
-> ((Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b)
-> ContT b IO (Ptr (PipelineShaderStageCreateInfo Any))
forall a b. (a -> b) -> a -> b
$ Int
-> Int -> (Ptr (PipelineShaderStageCreateInfo Any) -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Vector Any -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Any
forall a. Monoid a => a
mempty)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 48) 8
(Int -> SomeStruct PipelineShaderStageCreateInfo -> ContT b IO ())
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
-> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: SomeStruct PipelineShaderStageCreateInfo
e -> ((() -> 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 (SomeStruct PipelineShaderStageCreateInfo)
-> SomeStruct PipelineShaderStageCreateInfo -> IO b -> IO b
forall (a :: [*] -> *) b.
(forall (es :: [*]).
(Extendss a es, PokeChain es) =>
ToCStruct (a es)) =>
Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b
pokeSomeCStruct (Ptr (PipelineShaderStageCreateInfo Any)
-> Ptr (SomeStruct PipelineShaderStageCreateInfo)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (PipelineShaderStageCreateInfo Any)
pPStages' Ptr (PipelineShaderStageCreateInfo Any)
-> Int -> Ptr (PipelineShaderStageCreateInfo _)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (48 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (PipelineShaderStageCreateInfo _))) (SomeStruct PipelineShaderStageCreateInfo
e) (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
$ ())) (Vector (SomeStruct PipelineShaderStageCreateInfo)
forall a. Monoid a => a
mempty)
IO () -> ContT b IO ()
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 (PipelineShaderStageCreateInfo Any))
-> Ptr (PipelineShaderStageCreateInfo Any) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr (Ptr (PipelineShaderStageCreateInfo _))
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (Ptr (PipelineShaderStageCreateInfo Any)
pPStages')
Ptr RayTracingShaderGroupCreateInfoNV
pPGroups' <- ((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> ContT b IO (Ptr RayTracingShaderGroupCreateInfoNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> ContT b IO (Ptr RayTracingShaderGroupCreateInfoNV))
-> ((Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b)
-> ContT b IO (Ptr RayTracingShaderGroupCreateInfoNV)
forall a b. (a -> b) -> a -> b
$ Int
-> Int -> (Ptr RayTracingShaderGroupCreateInfoNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Vector Any -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Any
forall a. Monoid a => a
mempty)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 40) 8
(Int -> RayTracingShaderGroupCreateInfoNV -> ContT b IO ())
-> Vector RayTracingShaderGroupCreateInfoNV -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: RayTracingShaderGroupCreateInfoNV
e -> ((() -> 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 RayTracingShaderGroupCreateInfoNV
-> RayTracingShaderGroupCreateInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr RayTracingShaderGroupCreateInfoNV
pPGroups' Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr RayTracingShaderGroupCreateInfoNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (40 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (RayTracingShaderGroupCreateInfoNV
e) (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
$ ())) (Vector RayTracingShaderGroupCreateInfoNV
forall a. Monoid a => a
mempty)
IO () -> ContT b IO ()
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 RayTracingShaderGroupCreateInfoNV)
-> Ptr RayTracingShaderGroupCreateInfoNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr (Ptr RayTracingShaderGroupCreateInfoNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (Ptr RayTracingShaderGroupCreateInfoNV
pPGroups')
IO () -> ContT b IO ()
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 ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
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 PipelineLayout -> PipelineLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr PipelineLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr PipelineLayout)) (PipelineLayout
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
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 Int32 -> Int32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es) -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Int32)) (Int32
forall a. Zero a => a
zero)
IO b -> ContT b IO b
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 (Extendss RayTracingPipelineCreateInfoNV es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoNV es) where
peekCStruct :: Ptr (RayTracingPipelineCreateInfoNV es)
-> IO (RayTracingPipelineCreateInfoNV es)
peekCStruct p :: Ptr (RayTracingPipelineCreateInfoNV es)
p = do
"data" ::: Ptr ()
pNext <- Ptr ("data" ::: Ptr ()) -> IO ("data" ::: Ptr ())
forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ())))
Chain es
next <- Ptr (Chain es) -> IO (Chain es)
forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (("data" ::: Ptr ()) -> Ptr (Chain es)
forall a b. Ptr a -> Ptr b
castPtr "data" ::: Ptr ()
pNext)
PipelineCreateFlags
flags <- Ptr PipelineCreateFlags -> IO PipelineCreateFlags
forall a. Storable a => Ptr a -> IO a
peek @PipelineCreateFlags ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr PipelineCreateFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PipelineCreateFlags))
"shader" ::: Word32
stageCount <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
Ptr (PipelineShaderStageCreateInfo Any)
pStages <- Ptr (Ptr (PipelineShaderStageCreateInfo Any))
-> IO (Ptr (PipelineShaderStageCreateInfo Any))
forall a. Storable a => Ptr a -> IO a
peek @(Ptr (PipelineShaderStageCreateInfo _)) ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr (Ptr (PipelineShaderStageCreateInfo a))
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))
Vector (SomeStruct PipelineShaderStageCreateInfo)
pStages' <- Int
-> (Int -> IO (SomeStruct PipelineShaderStageCreateInfo))
-> IO (Vector (SomeStruct PipelineShaderStageCreateInfo))
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (("shader" ::: Word32) -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral "shader" ::: Word32
stageCount) (\i :: Int
i -> Ptr (SomeStruct PipelineShaderStageCreateInfo)
-> IO (SomeStruct PipelineShaderStageCreateInfo)
forall (a :: [*] -> *).
(Extensible a,
forall (es :: [*]).
(Extendss a es, PeekChain es) =>
FromCStruct (a es)) =>
Ptr (SomeStruct a) -> IO (SomeStruct a)
peekSomeCStruct (Ptr (PipelineShaderStageCreateInfo Any)
-> Ptr (SomeStruct PipelineShaderStageCreateInfo)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions ((Ptr (PipelineShaderStageCreateInfo Any)
pStages Ptr (PipelineShaderStageCreateInfo Any)
-> Int -> Ptr (PipelineShaderStageCreateInfo Any)
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (48 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (PipelineShaderStageCreateInfo _)))))
"shader" ::: Word32
groupCount <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32))
Ptr RayTracingShaderGroupCreateInfoNV
pGroups <- Ptr (Ptr RayTracingShaderGroupCreateInfoNV)
-> IO (Ptr RayTracingShaderGroupCreateInfoNV)
forall a. Storable a => Ptr a -> IO a
peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr (Ptr RayTracingShaderGroupCreateInfoNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))
Vector RayTracingShaderGroupCreateInfoNV
pGroups' <- Int
-> (Int -> IO RayTracingShaderGroupCreateInfoNV)
-> IO (Vector RayTracingShaderGroupCreateInfoNV)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (("shader" ::: Word32) -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral "shader" ::: Word32
groupCount) (\i :: Int
i -> Ptr RayTracingShaderGroupCreateInfoNV
-> IO RayTracingShaderGroupCreateInfoNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @RayTracingShaderGroupCreateInfoNV ((Ptr RayTracingShaderGroupCreateInfoNV
pGroups Ptr RayTracingShaderGroupCreateInfoNV
-> Int -> Ptr RayTracingShaderGroupCreateInfoNV
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (40 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))
"shader" ::: Word32
maxRecursionDepth <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32))
PipelineLayout
layout <- Ptr PipelineLayout -> IO PipelineLayout
forall a. Storable a => Ptr a -> IO a
peek @PipelineLayout ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> Ptr PipelineLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr PipelineLayout))
Pipeline
basePipelineHandle <- ("pPipelines" ::: Ptr Pipeline) -> IO Pipeline
forall a. Storable a => Ptr a -> IO a
peek @Pipeline ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es)
-> Int -> "pPipelines" ::: Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr Pipeline))
Int32
basePipelineIndex <- Ptr Int32 -> IO Int32
forall a. Storable a => Ptr a -> IO a
peek @Int32 ((Ptr (RayTracingPipelineCreateInfoNV es)
p Ptr (RayTracingPipelineCreateInfoNV es) -> Int -> Ptr Int32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Int32))
RayTracingPipelineCreateInfoNV es
-> IO (RayTracingPipelineCreateInfoNV es)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (RayTracingPipelineCreateInfoNV es
-> IO (RayTracingPipelineCreateInfoNV es))
-> RayTracingPipelineCreateInfoNV es
-> IO (RayTracingPipelineCreateInfoNV es)
forall a b. (a -> b) -> a -> b
$ Chain es
-> PipelineCreateFlags
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
-> Vector RayTracingShaderGroupCreateInfoNV
-> ("shader" ::: Word32)
-> PipelineLayout
-> Pipeline
-> Int32
-> RayTracingPipelineCreateInfoNV es
forall (es :: [*]).
Chain es
-> PipelineCreateFlags
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
-> Vector RayTracingShaderGroupCreateInfoNV
-> ("shader" ::: Word32)
-> PipelineLayout
-> Pipeline
-> Int32
-> RayTracingPipelineCreateInfoNV es
RayTracingPipelineCreateInfoNV
Chain es
next PipelineCreateFlags
flags Vector (SomeStruct PipelineShaderStageCreateInfo)
pStages' Vector RayTracingShaderGroupCreateInfoNV
pGroups' "shader" ::: Word32
maxRecursionDepth PipelineLayout
layout Pipeline
basePipelineHandle Int32
basePipelineIndex
instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where
zero :: RayTracingPipelineCreateInfoNV es
zero = Chain es
-> PipelineCreateFlags
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
-> Vector RayTracingShaderGroupCreateInfoNV
-> ("shader" ::: Word32)
-> PipelineLayout
-> Pipeline
-> Int32
-> RayTracingPipelineCreateInfoNV es
forall (es :: [*]).
Chain es
-> PipelineCreateFlags
-> Vector (SomeStruct PipelineShaderStageCreateInfo)
-> Vector RayTracingShaderGroupCreateInfoNV
-> ("shader" ::: Word32)
-> PipelineLayout
-> Pipeline
-> Int32
-> RayTracingPipelineCreateInfoNV es
RayTracingPipelineCreateInfoNV
()
PipelineCreateFlags
forall a. Zero a => a
zero
Vector (SomeStruct PipelineShaderStageCreateInfo)
forall a. Monoid a => a
mempty
Vector RayTracingShaderGroupCreateInfoNV
forall a. Monoid a => a
mempty
"shader" ::: Word32
forall a. Zero a => a
zero
PipelineLayout
forall a. Zero a => a
zero
Pipeline
forall a. Zero a => a
zero
Int32
forall a. Zero a => a
zero
data GeometryTrianglesNV = GeometryTrianglesNV
{
GeometryTrianglesNV -> "instanceData" ::: Buffer
vertexData :: Buffer
,
GeometryTrianglesNV -> "instanceOffset" ::: DeviceSize
vertexOffset :: DeviceSize
,
GeometryTrianglesNV -> "shader" ::: Word32
vertexCount :: Word32
,
GeometryTrianglesNV -> "instanceOffset" ::: DeviceSize
vertexStride :: DeviceSize
,
GeometryTrianglesNV -> Format
vertexFormat :: Format
,
GeometryTrianglesNV -> "instanceData" ::: Buffer
indexData :: Buffer
,
GeometryTrianglesNV -> "instanceOffset" ::: DeviceSize
indexOffset :: DeviceSize
,
GeometryTrianglesNV -> "shader" ::: Word32
indexCount :: Word32
,
GeometryTrianglesNV -> IndexType
indexType :: IndexType
,
GeometryTrianglesNV -> "instanceData" ::: Buffer
transformData :: Buffer
,
GeometryTrianglesNV -> "instanceOffset" ::: DeviceSize
transformOffset :: DeviceSize
}
deriving (Typeable)
deriving instance Show GeometryTrianglesNV
instance ToCStruct GeometryTrianglesNV where
withCStruct :: GeometryTrianglesNV -> (Ptr GeometryTrianglesNV -> IO b) -> IO b
withCStruct x :: GeometryTrianglesNV
x f :: Ptr GeometryTrianglesNV -> IO b
f = Int -> Int -> (Ptr GeometryTrianglesNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 96 8 ((Ptr GeometryTrianglesNV -> IO b) -> IO b)
-> (Ptr GeometryTrianglesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr GeometryTrianglesNV
p -> Ptr GeometryTrianglesNV -> GeometryTrianglesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeometryTrianglesNV
p GeometryTrianglesNV
x (Ptr GeometryTrianglesNV -> IO b
f Ptr GeometryTrianglesNV
p)
pokeCStruct :: Ptr GeometryTrianglesNV -> GeometryTrianglesNV -> IO b -> IO b
pokeCStruct p :: Ptr GeometryTrianglesNV
p GeometryTrianglesNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("instanceData" ::: Buffer)
-> ("instanceData" ::: Buffer) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Buffer)) ("instanceData" ::: Buffer
vertexData)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
vertexOffset)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ("shader" ::: Word32
vertexCount)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
vertexStride)
Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Format)) (Format
vertexFormat)
Ptr ("instanceData" ::: Buffer)
-> ("instanceData" ::: Buffer) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Buffer)) ("instanceData" ::: Buffer
indexData)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
indexOffset)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Word32)) ("shader" ::: Word32
indexCount)
Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr IndexType)) (IndexType
indexType)
Ptr ("instanceData" ::: Buffer)
-> ("instanceData" ::: Buffer) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Buffer)) ("instanceData" ::: Buffer
transformData)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
transformOffset)
IO b
f
cStructSize :: Int
cStructSize = 96
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr GeometryTrianglesNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr GeometryTrianglesNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Format)) (Format
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr IndexType)) (IndexType
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct GeometryTrianglesNV where
peekCStruct :: Ptr GeometryTrianglesNV -> IO GeometryTrianglesNV
peekCStruct p :: Ptr GeometryTrianglesNV
p = do
"instanceData" ::: Buffer
vertexData <- Ptr ("instanceData" ::: Buffer) -> IO ("instanceData" ::: Buffer)
forall a. Storable a => Ptr a -> IO a
peek @Buffer ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Buffer))
"instanceOffset" ::: DeviceSize
vertexOffset <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr DeviceSize))
"shader" ::: Word32
vertexCount <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32))
"instanceOffset" ::: DeviceSize
vertexStride <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr DeviceSize))
Format
vertexFormat <- Ptr Format -> IO Format
forall a. Storable a => Ptr a -> IO a
peek @Format ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Format))
"instanceData" ::: Buffer
indexData <- Ptr ("instanceData" ::: Buffer) -> IO ("instanceData" ::: Buffer)
forall a. Storable a => Ptr a -> IO a
peek @Buffer ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Buffer))
"instanceOffset" ::: DeviceSize
indexOffset <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr DeviceSize))
"shader" ::: Word32
indexCount <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 72 :: Ptr Word32))
IndexType
indexType <- Ptr IndexType -> IO IndexType
forall a. Storable a => Ptr a -> IO a
peek @IndexType ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 76 :: Ptr IndexType))
"instanceData" ::: Buffer
transformData <- Ptr ("instanceData" ::: Buffer) -> IO ("instanceData" ::: Buffer)
forall a. Storable a => Ptr a -> IO a
peek @Buffer ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 80 :: Ptr Buffer))
"instanceOffset" ::: DeviceSize
transformOffset <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr GeometryTrianglesNV
p Ptr GeometryTrianglesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 88 :: Ptr DeviceSize))
GeometryTrianglesNV -> IO GeometryTrianglesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeometryTrianglesNV -> IO GeometryTrianglesNV)
-> GeometryTrianglesNV -> IO GeometryTrianglesNV
forall a b. (a -> b) -> a -> b
$ ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> Format
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> IndexType
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> GeometryTrianglesNV
GeometryTrianglesNV
"instanceData" ::: Buffer
vertexData "instanceOffset" ::: DeviceSize
vertexOffset "shader" ::: Word32
vertexCount "instanceOffset" ::: DeviceSize
vertexStride Format
vertexFormat "instanceData" ::: Buffer
indexData "instanceOffset" ::: DeviceSize
indexOffset "shader" ::: Word32
indexCount IndexType
indexType "instanceData" ::: Buffer
transformData "instanceOffset" ::: DeviceSize
transformOffset
instance Storable GeometryTrianglesNV where
sizeOf :: GeometryTrianglesNV -> Int
sizeOf ~GeometryTrianglesNV
_ = 96
alignment :: GeometryTrianglesNV -> Int
alignment ~GeometryTrianglesNV
_ = 8
peek :: Ptr GeometryTrianglesNV -> IO GeometryTrianglesNV
peek = Ptr GeometryTrianglesNV -> IO GeometryTrianglesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr GeometryTrianglesNV -> GeometryTrianglesNV -> IO ()
poke ptr :: Ptr GeometryTrianglesNV
ptr poked :: GeometryTrianglesNV
poked = Ptr GeometryTrianglesNV -> GeometryTrianglesNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeometryTrianglesNV
ptr GeometryTrianglesNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero GeometryTrianglesNV where
zero :: GeometryTrianglesNV
zero = ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> Format
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> IndexType
-> ("instanceData" ::: Buffer)
-> ("instanceOffset" ::: DeviceSize)
-> GeometryTrianglesNV
GeometryTrianglesNV
"instanceData" ::: Buffer
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
Format
forall a. Zero a => a
zero
"instanceData" ::: Buffer
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
IndexType
forall a. Zero a => a
zero
"instanceData" ::: Buffer
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
data GeometryAABBNV = GeometryAABBNV
{
GeometryAABBNV -> "instanceData" ::: Buffer
aabbData :: Buffer
,
GeometryAABBNV -> "shader" ::: Word32
numAABBs :: Word32
,
GeometryAABBNV -> "shader" ::: Word32
stride :: Word32
,
GeometryAABBNV -> "instanceOffset" ::: DeviceSize
offset :: DeviceSize
}
deriving (Typeable)
deriving instance Show GeometryAABBNV
instance ToCStruct GeometryAABBNV where
withCStruct :: GeometryAABBNV -> (Ptr GeometryAABBNV -> IO b) -> IO b
withCStruct x :: GeometryAABBNV
x f :: Ptr GeometryAABBNV -> IO b
f = Int -> Int -> (Ptr GeometryAABBNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 40 8 ((Ptr GeometryAABBNV -> IO b) -> IO b)
-> (Ptr GeometryAABBNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr GeometryAABBNV
p -> Ptr GeometryAABBNV -> GeometryAABBNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeometryAABBNV
p GeometryAABBNV
x (Ptr GeometryAABBNV -> IO b
f Ptr GeometryAABBNV
p)
pokeCStruct :: Ptr GeometryAABBNV -> GeometryAABBNV -> IO b -> IO b
pokeCStruct p :: Ptr GeometryAABBNV
p GeometryAABBNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GEOMETRY_AABB_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("instanceData" ::: Buffer)
-> ("instanceData" ::: Buffer) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Buffer)) ("instanceData" ::: Buffer
aabbData)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
numAABBs)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ("shader" ::: Word32
stride)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
offset)
IO b
f
cStructSize :: Int
cStructSize = 40
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr GeometryAABBNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr GeometryAABBNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GEOMETRY_AABB_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct GeometryAABBNV where
peekCStruct :: Ptr GeometryAABBNV -> IO GeometryAABBNV
peekCStruct p :: Ptr GeometryAABBNV
p = do
"instanceData" ::: Buffer
aabbData <- Ptr ("instanceData" ::: Buffer) -> IO ("instanceData" ::: Buffer)
forall a. Storable a => Ptr a -> IO a
peek @Buffer ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("instanceData" ::: Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Buffer))
"shader" ::: Word32
numAABBs <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32))
"shader" ::: Word32
stride <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32))
"instanceOffset" ::: DeviceSize
offset <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr GeometryAABBNV
p Ptr GeometryAABBNV -> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr DeviceSize))
GeometryAABBNV -> IO GeometryAABBNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeometryAABBNV -> IO GeometryAABBNV)
-> GeometryAABBNV -> IO GeometryAABBNV
forall a b. (a -> b) -> a -> b
$ ("instanceData" ::: Buffer)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> GeometryAABBNV
GeometryAABBNV
"instanceData" ::: Buffer
aabbData "shader" ::: Word32
numAABBs "shader" ::: Word32
stride "instanceOffset" ::: DeviceSize
offset
instance Storable GeometryAABBNV where
sizeOf :: GeometryAABBNV -> Int
sizeOf ~GeometryAABBNV
_ = 40
alignment :: GeometryAABBNV -> Int
alignment ~GeometryAABBNV
_ = 8
peek :: Ptr GeometryAABBNV -> IO GeometryAABBNV
peek = Ptr GeometryAABBNV -> IO GeometryAABBNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr GeometryAABBNV -> GeometryAABBNV -> IO ()
poke ptr :: Ptr GeometryAABBNV
ptr poked :: GeometryAABBNV
poked = Ptr GeometryAABBNV -> GeometryAABBNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeometryAABBNV
ptr GeometryAABBNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero GeometryAABBNV where
zero :: GeometryAABBNV
zero = ("instanceData" ::: Buffer)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> GeometryAABBNV
GeometryAABBNV
"instanceData" ::: Buffer
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
data GeometryDataNV = GeometryDataNV
{
GeometryDataNV -> GeometryTrianglesNV
triangles :: GeometryTrianglesNV
,
GeometryDataNV -> GeometryAABBNV
aabbs :: GeometryAABBNV
}
deriving (Typeable)
deriving instance Show GeometryDataNV
instance ToCStruct GeometryDataNV where
withCStruct :: GeometryDataNV -> (Ptr GeometryDataNV -> IO b) -> IO b
withCStruct x :: GeometryDataNV
x f :: Ptr GeometryDataNV -> IO b
f = Int -> Int -> (Ptr GeometryDataNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 136 8 ((Ptr GeometryDataNV -> IO b) -> IO b)
-> (Ptr GeometryDataNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr GeometryDataNV
p -> Ptr GeometryDataNV -> GeometryDataNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeometryDataNV
p GeometryDataNV
x (Ptr GeometryDataNV -> IO b
f Ptr GeometryDataNV
p)
pokeCStruct :: Ptr GeometryDataNV -> GeometryDataNV -> IO b -> IO b
pokeCStruct p :: Ptr GeometryDataNV
p GeometryDataNV{..} f :: 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 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 GeometryTrianglesNV -> GeometryTrianglesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr GeometryDataNV
p Ptr GeometryDataNV -> Int -> Ptr GeometryTrianglesNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr GeometryTrianglesNV)) (GeometryTrianglesNV
triangles) (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 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 GeometryAABBNV -> GeometryAABBNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr GeometryDataNV
p Ptr GeometryDataNV -> Int -> Ptr GeometryAABBNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 96 :: Ptr GeometryAABBNV)) (GeometryAABBNV
aabbs) (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 b -> ContT b IO b
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 = 136
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr GeometryDataNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr GeometryDataNV
p f :: 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 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 GeometryTrianglesNV -> GeometryTrianglesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr GeometryDataNV
p Ptr GeometryDataNV -> Int -> Ptr GeometryTrianglesNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr GeometryTrianglesNV)) (GeometryTrianglesNV
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 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 GeometryAABBNV -> GeometryAABBNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr GeometryDataNV
p Ptr GeometryDataNV -> Int -> Ptr GeometryAABBNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 96 :: Ptr GeometryAABBNV)) (GeometryAABBNV
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 b -> ContT b IO b
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 FromCStruct GeometryDataNV where
peekCStruct :: Ptr GeometryDataNV -> IO GeometryDataNV
peekCStruct p :: Ptr GeometryDataNV
p = do
GeometryTrianglesNV
triangles <- Ptr GeometryTrianglesNV -> IO GeometryTrianglesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @GeometryTrianglesNV ((Ptr GeometryDataNV
p Ptr GeometryDataNV -> Int -> Ptr GeometryTrianglesNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr GeometryTrianglesNV))
GeometryAABBNV
aabbs <- Ptr GeometryAABBNV -> IO GeometryAABBNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @GeometryAABBNV ((Ptr GeometryDataNV
p Ptr GeometryDataNV -> Int -> Ptr GeometryAABBNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 96 :: Ptr GeometryAABBNV))
GeometryDataNV -> IO GeometryDataNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeometryDataNV -> IO GeometryDataNV)
-> GeometryDataNV -> IO GeometryDataNV
forall a b. (a -> b) -> a -> b
$ GeometryTrianglesNV -> GeometryAABBNV -> GeometryDataNV
GeometryDataNV
GeometryTrianglesNV
triangles GeometryAABBNV
aabbs
instance Zero GeometryDataNV where
zero :: GeometryDataNV
zero = GeometryTrianglesNV -> GeometryAABBNV -> GeometryDataNV
GeometryDataNV
GeometryTrianglesNV
forall a. Zero a => a
zero
GeometryAABBNV
forall a. Zero a => a
zero
data GeometryNV = GeometryNV
{
GeometryNV -> GeometryTypeKHR
geometryType :: GeometryTypeKHR
,
GeometryNV -> GeometryDataNV
geometry :: GeometryDataNV
,
GeometryNV -> GeometryFlagBitsKHR
flags :: GeometryFlagsKHR
}
deriving (Typeable)
deriving instance Show GeometryNV
instance ToCStruct GeometryNV where
withCStruct :: GeometryNV -> (Ptr GeometryNV -> IO b) -> IO b
withCStruct x :: GeometryNV
x f :: Ptr GeometryNV -> IO b
f = Int -> Int -> (Ptr GeometryNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 168 8 ((Ptr GeometryNV -> IO b) -> IO b)
-> (Ptr GeometryNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr GeometryNV
p -> Ptr GeometryNV -> GeometryNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeometryNV
p GeometryNV
x (Ptr GeometryNV -> IO b
f Ptr GeometryNV
p)
pokeCStruct :: Ptr GeometryNV -> GeometryNV -> IO b -> IO b
pokeCStruct p :: Ptr GeometryNV
p GeometryNV{..} f :: 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 (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 GeometryNV
p Ptr GeometryNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GEOMETRY_NV)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
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 GeometryTypeKHR -> GeometryTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr GeometryTypeKHR)) (GeometryTypeKHR
geometryType)
((() -> 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 GeometryDataNV -> GeometryDataNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryDataNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr GeometryDataNV)) (GeometryDataNV
geometry) (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 (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 GeometryFlagBitsKHR -> GeometryFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 160 :: Ptr GeometryFlagsKHR)) (GeometryFlagBitsKHR
flags)
IO b -> ContT b IO b
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 = 168
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr GeometryNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr GeometryNV
p f :: 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 (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 GeometryNV
p Ptr GeometryNV -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GEOMETRY_NV)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
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 GeometryTypeKHR -> GeometryTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr GeometryTypeKHR)) (GeometryTypeKHR
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 GeometryDataNV -> GeometryDataNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryDataNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr GeometryDataNV)) (GeometryDataNV
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 b -> ContT b IO b
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 FromCStruct GeometryNV where
peekCStruct :: Ptr GeometryNV -> IO GeometryNV
peekCStruct p :: Ptr GeometryNV
p = do
GeometryTypeKHR
geometryType <- Ptr GeometryTypeKHR -> IO GeometryTypeKHR
forall a. Storable a => Ptr a -> IO a
peek @GeometryTypeKHR ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr GeometryTypeKHR))
GeometryDataNV
geometry <- Ptr GeometryDataNV -> IO GeometryDataNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @GeometryDataNV ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryDataNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr GeometryDataNV))
GeometryFlagBitsKHR
flags <- Ptr GeometryFlagBitsKHR -> IO GeometryFlagBitsKHR
forall a. Storable a => Ptr a -> IO a
peek @GeometryFlagsKHR ((Ptr GeometryNV
p Ptr GeometryNV -> Int -> Ptr GeometryFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 160 :: Ptr GeometryFlagsKHR))
GeometryNV -> IO GeometryNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeometryNV -> IO GeometryNV) -> GeometryNV -> IO GeometryNV
forall a b. (a -> b) -> a -> b
$ GeometryTypeKHR
-> GeometryDataNV -> GeometryFlagBitsKHR -> GeometryNV
GeometryNV
GeometryTypeKHR
geometryType GeometryDataNV
geometry GeometryFlagBitsKHR
flags
instance Zero GeometryNV where
zero :: GeometryNV
zero = GeometryTypeKHR
-> GeometryDataNV -> GeometryFlagBitsKHR -> GeometryNV
GeometryNV
GeometryTypeKHR
forall a. Zero a => a
zero
GeometryDataNV
forall a. Zero a => a
zero
GeometryFlagBitsKHR
forall a. Zero a => a
zero
data AccelerationStructureInfoNV = AccelerationStructureInfoNV
{
AccelerationStructureInfoNV -> AccelerationStructureTypeKHR
type' :: AccelerationStructureTypeNV
,
AccelerationStructureInfoNV
-> BuildAccelerationStructureFlagBitsKHR
flags :: BuildAccelerationStructureFlagsNV
,
AccelerationStructureInfoNV -> "shader" ::: Word32
instanceCount :: Word32
,
AccelerationStructureInfoNV -> Vector GeometryNV
geometries :: Vector GeometryNV
}
deriving (Typeable)
deriving instance Show AccelerationStructureInfoNV
instance ToCStruct AccelerationStructureInfoNV where
withCStruct :: AccelerationStructureInfoNV
-> (("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b) -> IO b
withCStruct x :: AccelerationStructureInfoNV
x f :: ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b
f = Int
-> Int
-> (("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 40 8 ((("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b) -> IO b)
-> (("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: "pInfo" ::: Ptr AccelerationStructureInfoNV
p -> ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> AccelerationStructureInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr AccelerationStructureInfoNV
p AccelerationStructureInfoNV
x (("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b
f "pInfo" ::: Ptr AccelerationStructureInfoNV
p)
pokeCStruct :: ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> AccelerationStructureInfoNV -> IO b -> IO b
pokeCStruct p :: "pInfo" ::: Ptr AccelerationStructureInfoNV
p AccelerationStructureInfoNV{..} f :: 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 (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 (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
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 AccelerationStructureTypeKHR
-> AccelerationStructureTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr AccelerationStructureTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (AccelerationStructureTypeKHR
type')
IO () -> ContT b IO ()
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 BuildAccelerationStructureFlagBitsKHR
-> BuildAccelerationStructureFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr BuildAccelerationStructureFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (BuildAccelerationStructureFlagBitsKHR
flags)
IO () -> ContT b IO ()
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 ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
instanceCount)
IO () -> ContT b IO ()
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 ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ((Int -> "shader" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector GeometryNV -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector GeometryNV -> Int) -> Vector GeometryNV -> Int
forall a b. (a -> b) -> a -> b
$ (Vector GeometryNV
geometries)) :: Word32))
Ptr GeometryNV
pPGeometries' <- ((Ptr GeometryNV -> IO b) -> IO b) -> ContT b IO (Ptr GeometryNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr GeometryNV -> IO b) -> IO b) -> ContT b IO (Ptr GeometryNV))
-> ((Ptr GeometryNV -> IO b) -> IO b)
-> ContT b IO (Ptr GeometryNV)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (Ptr GeometryNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @GeometryNV ((Vector GeometryNV -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector GeometryNV
geometries)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 168) 8
(Int -> GeometryNV -> ContT b IO ())
-> Vector GeometryNV -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: GeometryNV
e -> ((() -> 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 GeometryNV -> GeometryNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr GeometryNV
pPGeometries' Ptr GeometryNV -> Int -> Ptr GeometryNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (168 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr GeometryNV) (GeometryNV
e) (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
$ ())) (Vector GeometryNV
geometries)
IO () -> ContT b IO ()
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 GeometryNV) -> Ptr GeometryNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr (Ptr GeometryNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr (Ptr GeometryNV))) (Ptr GeometryNV
pPGeometries')
IO b -> ContT b IO b
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 = 40
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> IO b -> IO b
pokeZeroCStruct p :: "pInfo" ::: Ptr AccelerationStructureInfoNV
p f :: 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 (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 (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
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 AccelerationStructureTypeKHR
-> AccelerationStructureTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr AccelerationStructureTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (AccelerationStructureTypeKHR
forall a. Zero a => a
zero)
Ptr GeometryNV
pPGeometries' <- ((Ptr GeometryNV -> IO b) -> IO b) -> ContT b IO (Ptr GeometryNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr GeometryNV -> IO b) -> IO b) -> ContT b IO (Ptr GeometryNV))
-> ((Ptr GeometryNV -> IO b) -> IO b)
-> ContT b IO (Ptr GeometryNV)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (Ptr GeometryNV -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @GeometryNV ((Vector Any -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Any
forall a. Monoid a => a
mempty)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 168) 8
(Int -> GeometryNV -> ContT b IO ())
-> Vector GeometryNV -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: GeometryNV
e -> ((() -> 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 GeometryNV -> GeometryNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr GeometryNV
pPGeometries' Ptr GeometryNV -> Int -> Ptr GeometryNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (168 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr GeometryNV) (GeometryNV
e) (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
$ ())) (Vector GeometryNV
forall a. Monoid a => a
mempty)
IO () -> ContT b IO ()
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 GeometryNV) -> Ptr GeometryNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr (Ptr GeometryNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr (Ptr GeometryNV))) (Ptr GeometryNV
pPGeometries')
IO b -> ContT b IO b
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 FromCStruct AccelerationStructureInfoNV where
peekCStruct :: ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> IO AccelerationStructureInfoNV
peekCStruct p :: "pInfo" ::: Ptr AccelerationStructureInfoNV
p = do
AccelerationStructureTypeKHR
type' <- Ptr AccelerationStructureTypeKHR -> IO AccelerationStructureTypeKHR
forall a. Storable a => Ptr a -> IO a
peek @AccelerationStructureTypeNV (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr AccelerationStructureTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr AccelerationStructureTypeNV))
BuildAccelerationStructureFlagBitsKHR
flags <- Ptr BuildAccelerationStructureFlagBitsKHR
-> IO BuildAccelerationStructureFlagBitsKHR
forall a. Storable a => Ptr a -> IO a
peek @BuildAccelerationStructureFlagsNV (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr BuildAccelerationStructureFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))
"shader" ::: Word32
instanceCount <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32))
"shader" ::: Word32
geometryCount <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32))
Ptr GeometryNV
pGeometries <- Ptr (Ptr GeometryNV) -> IO (Ptr GeometryNV)
forall a. Storable a => Ptr a -> IO a
peek @(Ptr GeometryNV) (("pInfo" ::: Ptr AccelerationStructureInfoNV
p ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> Int -> Ptr (Ptr GeometryNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr (Ptr GeometryNV)))
Vector GeometryNV
pGeometries' <- Int -> (Int -> IO GeometryNV) -> IO (Vector GeometryNV)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (("shader" ::: Word32) -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral "shader" ::: Word32
geometryCount) (\i :: Int
i -> Ptr GeometryNV -> IO GeometryNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @GeometryNV ((Ptr GeometryNV
pGeometries Ptr GeometryNV -> Int -> Ptr GeometryNV
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (168 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr GeometryNV)))
AccelerationStructureInfoNV -> IO AccelerationStructureInfoNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (AccelerationStructureInfoNV -> IO AccelerationStructureInfoNV)
-> AccelerationStructureInfoNV -> IO AccelerationStructureInfoNV
forall a b. (a -> b) -> a -> b
$ AccelerationStructureTypeKHR
-> BuildAccelerationStructureFlagBitsKHR
-> ("shader" ::: Word32)
-> Vector GeometryNV
-> AccelerationStructureInfoNV
AccelerationStructureInfoNV
AccelerationStructureTypeKHR
type' BuildAccelerationStructureFlagBitsKHR
flags "shader" ::: Word32
instanceCount Vector GeometryNV
pGeometries'
instance Zero AccelerationStructureInfoNV where
zero :: AccelerationStructureInfoNV
zero = AccelerationStructureTypeKHR
-> BuildAccelerationStructureFlagBitsKHR
-> ("shader" ::: Word32)
-> Vector GeometryNV
-> AccelerationStructureInfoNV
AccelerationStructureInfoNV
AccelerationStructureTypeKHR
forall a. Zero a => a
zero
BuildAccelerationStructureFlagBitsKHR
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
Vector GeometryNV
forall a. Monoid a => a
mempty
data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV
{
AccelerationStructureCreateInfoNV
-> "instanceOffset" ::: DeviceSize
compactedSize :: DeviceSize
,
AccelerationStructureCreateInfoNV -> AccelerationStructureInfoNV
info :: AccelerationStructureInfoNV
}
deriving (Typeable)
deriving instance Show AccelerationStructureCreateInfoNV
instance ToCStruct AccelerationStructureCreateInfoNV where
withCStruct :: AccelerationStructureCreateInfoNV
-> (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO b)
-> IO b
withCStruct x :: AccelerationStructureCreateInfoNV
x f :: ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> IO b
f = Int
-> Int
-> (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 64 8 ((("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO b)
-> IO b)
-> (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> AccelerationStructureCreateInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p AccelerationStructureCreateInfoNV
x (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> IO b
f "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p)
pokeCStruct :: ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> AccelerationStructureCreateInfoNV -> IO b -> IO b
pokeCStruct p :: "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p AccelerationStructureCreateInfoNV{..} f :: 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 (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 (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
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 ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
compactedSize)
((() -> 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
$ ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> AccelerationStructureInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> "pInfo" ::: Ptr AccelerationStructureInfoNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (AccelerationStructureInfoNV
info) (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 b -> ContT b IO b
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 = 64
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO b -> IO b
pokeZeroCStruct p :: "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p f :: 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 (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 (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
IO () -> ContT b IO ()
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 ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
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 ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr DeviceSize)) ("instanceOffset" ::: DeviceSize
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
$ ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> AccelerationStructureInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> "pInfo" ::: Ptr AccelerationStructureInfoNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (AccelerationStructureInfoNV
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 b -> ContT b IO b
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 FromCStruct AccelerationStructureCreateInfoNV where
peekCStruct :: ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> IO AccelerationStructureCreateInfoNV
peekCStruct p :: "pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p = do
"instanceOffset" ::: DeviceSize
compactedSize <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr DeviceSize))
AccelerationStructureInfoNV
info <- ("pInfo" ::: Ptr AccelerationStructureInfoNV)
-> IO AccelerationStructureInfoNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @AccelerationStructureInfoNV (("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV
p ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV)
-> Int -> "pInfo" ::: Ptr AccelerationStructureInfoNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr AccelerationStructureInfoNV))
AccelerationStructureCreateInfoNV
-> IO AccelerationStructureCreateInfoNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (AccelerationStructureCreateInfoNV
-> IO AccelerationStructureCreateInfoNV)
-> AccelerationStructureCreateInfoNV
-> IO AccelerationStructureCreateInfoNV
forall a b. (a -> b) -> a -> b
$ ("instanceOffset" ::: DeviceSize)
-> AccelerationStructureInfoNV -> AccelerationStructureCreateInfoNV
AccelerationStructureCreateInfoNV
"instanceOffset" ::: DeviceSize
compactedSize AccelerationStructureInfoNV
info
instance Zero AccelerationStructureCreateInfoNV where
zero :: AccelerationStructureCreateInfoNV
zero = ("instanceOffset" ::: DeviceSize)
-> AccelerationStructureInfoNV -> AccelerationStructureCreateInfoNV
AccelerationStructureCreateInfoNV
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
AccelerationStructureInfoNV
forall a. Zero a => a
zero
data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV
{
AccelerationStructureMemoryRequirementsInfoNV
-> AccelerationStructureMemoryRequirementsTypeKHR
type' :: AccelerationStructureMemoryRequirementsTypeNV
,
AccelerationStructureMemoryRequirementsInfoNV
-> AccelerationStructureNV
accelerationStructure :: AccelerationStructureNV
}
deriving (Typeable)
deriving instance Show AccelerationStructureMemoryRequirementsInfoNV
instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where
withCStruct :: AccelerationStructureMemoryRequirementsInfoNV
-> (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b)
-> IO b
withCStruct x :: AccelerationStructureMemoryRequirementsInfoNV
x f :: ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b
f = Int
-> Int
-> (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 32 8 ((("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b)
-> IO b)
-> (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> AccelerationStructureMemoryRequirementsInfoNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p AccelerationStructureMemoryRequirementsInfoNV
x (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b
f "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p)
pokeCStruct :: ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> AccelerationStructureMemoryRequirementsInfoNV -> IO b -> IO b
pokeCStruct p :: "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p AccelerationStructureMemoryRequirementsInfoNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr AccelerationStructureMemoryRequirementsTypeKHR
-> AccelerationStructureMemoryRequirementsTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr AccelerationStructureMemoryRequirementsTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (AccelerationStructureMemoryRequirementsTypeKHR
type')
("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> AccelerationStructureNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> "pAccelerationStructure" ::: Ptr AccelerationStructureNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr AccelerationStructureNV)) (AccelerationStructureNV
accelerationStructure)
IO b
f
cStructSize :: Int
cStructSize = 32
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO b -> IO b
pokeZeroCStruct p :: "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr AccelerationStructureMemoryRequirementsTypeKHR
-> AccelerationStructureMemoryRequirementsTypeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr AccelerationStructureMemoryRequirementsTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (AccelerationStructureMemoryRequirementsTypeKHR
forall a. Zero a => a
zero)
("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> AccelerationStructureNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> "pAccelerationStructure" ::: Ptr AccelerationStructureNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr AccelerationStructureNV)) (AccelerationStructureNV
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where
peekCStruct :: ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO AccelerationStructureMemoryRequirementsInfoNV
peekCStruct p :: "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p = do
AccelerationStructureMemoryRequirementsTypeKHR
type' <- Ptr AccelerationStructureMemoryRequirementsTypeKHR
-> IO AccelerationStructureMemoryRequirementsTypeKHR
forall a. Storable a => Ptr a -> IO a
peek @AccelerationStructureMemoryRequirementsTypeNV (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> Ptr AccelerationStructureMemoryRequirementsTypeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))
AccelerationStructureNV
accelerationStructure <- ("pAccelerationStructure" ::: Ptr AccelerationStructureNV)
-> IO AccelerationStructureNV
forall a. Storable a => Ptr a -> IO a
peek @AccelerationStructureNV (("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
p ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> Int -> "pAccelerationStructure" ::: Ptr AccelerationStructureNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr AccelerationStructureNV))
AccelerationStructureMemoryRequirementsInfoNV
-> IO AccelerationStructureMemoryRequirementsInfoNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (AccelerationStructureMemoryRequirementsInfoNV
-> IO AccelerationStructureMemoryRequirementsInfoNV)
-> AccelerationStructureMemoryRequirementsInfoNV
-> IO AccelerationStructureMemoryRequirementsInfoNV
forall a b. (a -> b) -> a -> b
$ AccelerationStructureMemoryRequirementsTypeKHR
-> AccelerationStructureNV
-> AccelerationStructureMemoryRequirementsInfoNV
AccelerationStructureMemoryRequirementsInfoNV
AccelerationStructureMemoryRequirementsTypeKHR
type' AccelerationStructureNV
accelerationStructure
instance Storable AccelerationStructureMemoryRequirementsInfoNV where
sizeOf :: AccelerationStructureMemoryRequirementsInfoNV -> Int
sizeOf ~AccelerationStructureMemoryRequirementsInfoNV
_ = 32
alignment :: AccelerationStructureMemoryRequirementsInfoNV -> Int
alignment ~AccelerationStructureMemoryRequirementsInfoNV
_ = 8
peek :: ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO AccelerationStructureMemoryRequirementsInfoNV
peek = ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> IO AccelerationStructureMemoryRequirementsInfoNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> AccelerationStructureMemoryRequirementsInfoNV -> IO ()
poke ptr :: "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
ptr poked :: AccelerationStructureMemoryRequirementsInfoNV
poked = ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV)
-> AccelerationStructureMemoryRequirementsInfoNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV
ptr AccelerationStructureMemoryRequirementsInfoNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero AccelerationStructureMemoryRequirementsInfoNV where
zero :: AccelerationStructureMemoryRequirementsInfoNV
zero = AccelerationStructureMemoryRequirementsTypeKHR
-> AccelerationStructureNV
-> AccelerationStructureMemoryRequirementsInfoNV
AccelerationStructureMemoryRequirementsInfoNV
AccelerationStructureMemoryRequirementsTypeKHR
forall a. Zero a => a
zero
AccelerationStructureNV
forall a. Zero a => a
zero
data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV
{
PhysicalDeviceRayTracingPropertiesNV -> "shader" ::: Word32
shaderGroupHandleSize :: Word32
,
PhysicalDeviceRayTracingPropertiesNV -> "shader" ::: Word32
maxRecursionDepth :: Word32
,
PhysicalDeviceRayTracingPropertiesNV -> "shader" ::: Word32
maxShaderGroupStride :: Word32
,
PhysicalDeviceRayTracingPropertiesNV -> "shader" ::: Word32
shaderGroupBaseAlignment :: Word32
,
PhysicalDeviceRayTracingPropertiesNV
-> "instanceOffset" ::: DeviceSize
maxGeometryCount :: Word64
,
PhysicalDeviceRayTracingPropertiesNV
-> "instanceOffset" ::: DeviceSize
maxInstanceCount :: Word64
,
PhysicalDeviceRayTracingPropertiesNV
-> "instanceOffset" ::: DeviceSize
maxTriangleCount :: Word64
,
PhysicalDeviceRayTracingPropertiesNV -> "shader" ::: Word32
maxDescriptorSetAccelerationStructures :: Word32
}
deriving (Typeable)
deriving instance Show PhysicalDeviceRayTracingPropertiesNV
instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where
withCStruct :: PhysicalDeviceRayTracingPropertiesNV
-> (Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b) -> IO b
withCStruct x :: PhysicalDeviceRayTracingPropertiesNV
x f :: Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 64 8 ((Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b) -> IO b)
-> (Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceRayTracingPropertiesNV
p -> Ptr PhysicalDeviceRayTracingPropertiesNV
-> PhysicalDeviceRayTracingPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingPropertiesNV
p PhysicalDeviceRayTracingPropertiesNV
x (Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b
f Ptr PhysicalDeviceRayTracingPropertiesNV
p)
pokeCStruct :: Ptr PhysicalDeviceRayTracingPropertiesNV
-> PhysicalDeviceRayTracingPropertiesNV -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceRayTracingPropertiesNV
p PhysicalDeviceRayTracingPropertiesNV{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) ("shader" ::: Word32
shaderGroupHandleSize)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("shader" ::: Word32
maxRecursionDepth)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
maxShaderGroupStride)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ("shader" ::: Word32
shaderGroupBaseAlignment)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word64)) ("instanceOffset" ::: DeviceSize
maxGeometryCount)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Word64)) ("instanceOffset" ::: DeviceSize
maxInstanceCount)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word64)) ("instanceOffset" ::: DeviceSize
maxTriangleCount)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Word32)) ("shader" ::: Word32
maxDescriptorSetAccelerationStructures)
IO b
f
cStructSize :: Int
cStructSize = 64
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceRayTracingPropertiesNV -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceRayTracingPropertiesNV
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)
Ptr ("data" ::: Ptr ()) -> ("data" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("data" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("data" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word64)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Word64)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
Ptr ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word64)) ("instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero)
Ptr ("shader" ::: Word32) -> ("shader" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Word32)) ("shader" ::: Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where
peekCStruct :: Ptr PhysicalDeviceRayTracingPropertiesNV
-> IO PhysicalDeviceRayTracingPropertiesNV
peekCStruct p :: Ptr PhysicalDeviceRayTracingPropertiesNV
p = do
"shader" ::: Word32
shaderGroupHandleSize <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
"shader" ::: Word32
maxRecursionDepth <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
"shader" ::: Word32
maxShaderGroupStride <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Word32))
"shader" ::: Word32
shaderGroupBaseAlignment <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 28 :: Ptr Word32))
"instanceOffset" ::: DeviceSize
maxGeometryCount <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word64))
"instanceOffset" ::: DeviceSize
maxInstanceCount <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Word64))
"instanceOffset" ::: DeviceSize
maxTriangleCount <- Ptr ("instanceOffset" ::: DeviceSize)
-> IO ("instanceOffset" ::: DeviceSize)
forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("instanceOffset" ::: DeviceSize)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word64))
"shader" ::: Word32
maxDescriptorSetAccelerationStructures <- Ptr ("shader" ::: Word32) -> IO ("shader" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceRayTracingPropertiesNV
p Ptr PhysicalDeviceRayTracingPropertiesNV
-> Int -> Ptr ("shader" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Word32))
PhysicalDeviceRayTracingPropertiesNV
-> IO PhysicalDeviceRayTracingPropertiesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceRayTracingPropertiesNV
-> IO PhysicalDeviceRayTracingPropertiesNV)
-> PhysicalDeviceRayTracingPropertiesNV
-> IO PhysicalDeviceRayTracingPropertiesNV
forall a b. (a -> b) -> a -> b
$ ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> PhysicalDeviceRayTracingPropertiesNV
PhysicalDeviceRayTracingPropertiesNV
"shader" ::: Word32
shaderGroupHandleSize "shader" ::: Word32
maxRecursionDepth "shader" ::: Word32
maxShaderGroupStride "shader" ::: Word32
shaderGroupBaseAlignment "instanceOffset" ::: DeviceSize
maxGeometryCount "instanceOffset" ::: DeviceSize
maxInstanceCount "instanceOffset" ::: DeviceSize
maxTriangleCount "shader" ::: Word32
maxDescriptorSetAccelerationStructures
instance Storable PhysicalDeviceRayTracingPropertiesNV where
sizeOf :: PhysicalDeviceRayTracingPropertiesNV -> Int
sizeOf ~PhysicalDeviceRayTracingPropertiesNV
_ = 64
alignment :: PhysicalDeviceRayTracingPropertiesNV -> Int
alignment ~PhysicalDeviceRayTracingPropertiesNV
_ = 8
peek :: Ptr PhysicalDeviceRayTracingPropertiesNV
-> IO PhysicalDeviceRayTracingPropertiesNV
peek = Ptr PhysicalDeviceRayTracingPropertiesNV
-> IO PhysicalDeviceRayTracingPropertiesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceRayTracingPropertiesNV
-> PhysicalDeviceRayTracingPropertiesNV -> IO ()
poke ptr :: Ptr PhysicalDeviceRayTracingPropertiesNV
ptr poked :: PhysicalDeviceRayTracingPropertiesNV
poked = Ptr PhysicalDeviceRayTracingPropertiesNV
-> PhysicalDeviceRayTracingPropertiesNV -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceRayTracingPropertiesNV
ptr PhysicalDeviceRayTracingPropertiesNV
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceRayTracingPropertiesNV where
zero :: PhysicalDeviceRayTracingPropertiesNV
zero = ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("shader" ::: Word32)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("instanceOffset" ::: DeviceSize)
-> ("shader" ::: Word32)
-> PhysicalDeviceRayTracingPropertiesNV
PhysicalDeviceRayTracingPropertiesNV
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
"instanceOffset" ::: DeviceSize
forall a. Zero a => a
zero
"shader" ::: Word32
forall a. Zero a => a
zero
type GeometryFlagsNV = GeometryFlagsKHR
type GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR
type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR
type AccelerationStructureNV = AccelerationStructureKHR
type GeometryFlagBitsNV = GeometryFlagBitsKHR
type GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR
type BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR
type CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR
type AccelerationStructureTypeNV = AccelerationStructureTypeKHR
type GeometryTypeNV = GeometryTypeKHR
type RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR
type AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeKHR
type BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoKHR
type WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureKHR
type AabbPositionsNV = AabbPositionsKHR
type TransformMatrixNV = TransformMatrixKHR
type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR
type NV_RAY_TRACING_SPEC_VERSION = 3
pattern NV_RAY_TRACING_SPEC_VERSION :: forall a . Integral a => a
pattern $bNV_RAY_TRACING_SPEC_VERSION :: a
$mNV_RAY_TRACING_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NV_RAY_TRACING_SPEC_VERSION = 3
type NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing"
pattern NV_RAY_TRACING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bNV_RAY_TRACING_EXTENSION_NAME :: a
$mNV_RAY_TRACING_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing"