{-# LINE 1 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.AccelerationStructure
       (VkAccelerationStructureCreateInfoNV,
        VkAccelerationStructureInfoNV, VkAccelerationStructureInstanceNV,
        VkAccelerationStructureMemoryRequirementsInfoNV)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.BaseTypes                   (VkDeviceSize)
import Graphics.Vulkan.Types.Bitmasks                    (VkBuildAccelerationStructureFlagsNV)
import Graphics.Vulkan.Types.Enum.AccelerationStructure  (VkAccelerationStructureMemoryRequirementsTypeNV,
                                                          VkAccelerationStructureTypeNV)
import Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
import Graphics.Vulkan.Types.Handles                     (VkAccelerationStructureNV)
import Graphics.Vulkan.Types.Struct.EnableBetaExtensions (VkAccelerationStructureInstanceKHR)
import Graphics.Vulkan.Types.Struct.Geometry             (VkGeometryNV)

-- | > typedef struct VkAccelerationStructureCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*                            pNext;
--   >     VkDeviceSize                           compactedSize;
--   >     VkAccelerationStructureInfoNV          info;
--   > } VkAccelerationStructureCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccelerationStructureCreateInfoNV VkAccelerationStructureCreateInfoNV registry at www.khronos.org>
type VkAccelerationStructureCreateInfoNV =
     VkStruct VkAccelerationStructureCreateInfoNV' -- ' closing tick for hsc2hs

data VkAccelerationStructureCreateInfoNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAccelerationStructureCreateInfoNV where
    type StructRep VkAccelerationStructureCreateInfoNV =
         'StructMeta "VkAccelerationStructureCreateInfoNV" -- ' closing tick for hsc2hs
           VkAccelerationStructureCreateInfoNV
           (64)
{-# LINE 42 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
           8
{-# LINE 43 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 45 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 50 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "compactedSize" VkDeviceSize 'False 
                                                             (16)
{-# LINE 55 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "info" VkAccelerationStructureInfoNV 'False 
                                                                     (24)
{-# LINE 60 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkAccelerationStructureInfoNV {
--   >     VkStructureType sType;
--   >     const void*                            pNext;
--   >     VkAccelerationStructureTypeNV         type;
--   >     VkBuildAccelerationStructureFlagsNVflags;
--   >     uint32_t               instanceCount;
--   >     uint32_t               geometryCount;
--   >     const VkGeometryNV* pGeometries;
--   > } VkAccelerationStructureInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccelerationStructureInfoNV VkAccelerationStructureInfoNV registry at www.khronos.org>
type VkAccelerationStructureInfoNV =
     VkStruct VkAccelerationStructureInfoNV' -- ' closing tick for hsc2hs

data VkAccelerationStructureInfoNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAccelerationStructureInfoNV where
    type StructRep VkAccelerationStructureInfoNV =
         'StructMeta "VkAccelerationStructureInfoNV" -- ' closing tick for hsc2hs
           VkAccelerationStructureInfoNV
           (40)
{-# LINE 88 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
           8
{-# LINE 89 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 91 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 96 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "type" VkAccelerationStructureTypeNV 'False 
                                                                     (16)
{-# LINE 101 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkBuildAccelerationStructureFlagsNV 'True
                (20)
{-# LINE 106 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "instanceCount" Word32 'True 
                                                      (24)
{-# LINE 111 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "geometryCount" Word32 'True 
                                                      (28)
{-# LINE 116 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pGeometries" (Ptr VkGeometryNV) 'False 
                                                                 (32)
{-# LINE 121 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | Alias for `VkAccelerationStructureInstanceKHR`
type VkAccelerationStructureInstanceNV =
     VkAccelerationStructureInstanceKHR

-- | > typedef struct VkAccelerationStructureMemoryRequirementsInfoNV {
--   >     VkStructureType sType;
--   >     const void*                                                          pNext;
--   >     VkAccelerationStructureMemoryRequirementsTypeNV                     type;
--   >     VkAccelerationStructureNV                                           accelerationStructure;
--   > } VkAccelerationStructureMemoryRequirementsInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAccelerationStructureMemoryRequirementsInfoNV VkAccelerationStructureMemoryRequirementsInfoNV registry at www.khronos.org>
type VkAccelerationStructureMemoryRequirementsInfoNV =
     VkStruct VkAccelerationStructureMemoryRequirementsInfoNV' -- ' closing tick for hsc2hs

data VkAccelerationStructureMemoryRequirementsInfoNV' -- ' closing tick for hsc2hs

instance VulkanMarshal
           VkAccelerationStructureMemoryRequirementsInfoNV
         where
    type StructRep VkAccelerationStructureMemoryRequirementsInfoNV =
         'StructMeta "VkAccelerationStructureMemoryRequirementsInfoNV" -- ' closing tick for hsc2hs
           VkAccelerationStructureMemoryRequirementsInfoNV
           (32)
{-# LINE 152 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
           8
{-# LINE 153 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 155 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 160 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "type" VkAccelerationStructureMemoryRequirementsTypeNV -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (16)
{-# LINE 166 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "accelerationStructure" VkAccelerationStructureNV -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (24)
{-# LINE 172 "src-gen/Graphics/Vulkan/Types/Struct/AccelerationStructure.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs