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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Geometry
       (VkGeometryAABBNV, VkGeometryDataNV, VkGeometryNV,
        VkGeometryTrianglesNV)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
import Graphics.Vulkan.Types.Enum.Format        (VkFormat)
import Graphics.Vulkan.Types.Enum.Geometry      (VkGeometryFlagsKHR,
                                                 VkGeometryTypeKHR)
import Graphics.Vulkan.Types.Enum.IndexType     (VkIndexType)
import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import Graphics.Vulkan.Types.Handles            (VkBuffer)

-- | > typedef struct VkGeometryAABBNV {
--   >     VkStructureType sType;
--   >     const void*                pNext;
--   >     VkBuffer   aabbData;
--   >     uint32_t                   numAABBs;
--   >     uint32_t                   stride;
--   >     VkDeviceSize               offset;
--   > } VkGeometryAABBNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkGeometryAABBNV VkGeometryAABBNV registry at www.khronos.org>
type VkGeometryAABBNV = VkStruct VkGeometryAABBNV' -- ' closing tick for hsc2hs

data VkGeometryAABBNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkGeometryAABBNV where
    type StructRep VkGeometryAABBNV =
         'StructMeta "VkGeometryAABBNV" VkGeometryAABBNV  -- ' closing tick for hsc2hs
                                                         (40)
{-# LINE 40 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           8
{-# LINE 41 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 43 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 48 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "aabbData" VkBuffer 'True 
                                                   (16)
{-# LINE 53 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "numAABBs" Word32 'False 
                                                  (24)
{-# LINE 58 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stride" Word32 'False 
                                                (28)
{-# LINE 63 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "offset" VkDeviceSize 'False 
                                                      (32)
{-# LINE 68 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.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 VkGeometryDataNV {
--   >     VkGeometryTrianglesNV                  triangles;
--   >     VkGeometryAABBNV                       aabbs;
--   > } VkGeometryDataNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkGeometryDataNV VkGeometryDataNV registry at www.khronos.org>
type VkGeometryDataNV = VkStruct VkGeometryDataNV' -- ' closing tick for hsc2hs

data VkGeometryDataNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkGeometryDataNV where
    type StructRep VkGeometryDataNV =
         'StructMeta "VkGeometryDataNV" VkGeometryDataNV  -- ' closing tick for hsc2hs
                                                         (136)
{-# LINE 89 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           8
{-# LINE 90 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           '[('FieldMeta "triangles" VkGeometryTrianglesNV 'False  -- ' closing tick for hsc2hs
                                                                  (0)
{-# LINE 92 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "aabbs" VkGeometryAABBNV 'False 
                                                         (96)
{-# LINE 97 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.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 VkGeometryNV {
--   >     VkStructureType sType;
--   >     const void*                                   pNext;
--   >     VkGeometryTypeKHR                  geometryType;
--   >     VkGeometryDataNV                              geometry;
--   >     VkGeometryFlagsKHR flags;
--   > } VkGeometryNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkGeometryNV VkGeometryNV registry at www.khronos.org>
type VkGeometryNV = VkStruct VkGeometryNV' -- ' closing tick for hsc2hs

data VkGeometryNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkGeometryNV where
    type StructRep VkGeometryNV =
         'StructMeta "VkGeometryNV" VkGeometryNV  -- ' closing tick for hsc2hs
                                                 (168)
{-# LINE 121 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           8
{-# LINE 122 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 124 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 129 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "geometryType" VkGeometryTypeKHR 'False 
                                                                 (16)
{-# LINE 134 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "geometry" VkGeometryDataNV 'False 
                                                            (24)
{-# LINE 139 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkGeometryFlagsKHR 'True 
                                                          (160)
{-# LINE 144 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.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 VkGeometryTrianglesNV {
--   >     VkStructureType sType;
--   >     const void*                pNext;
--   >     VkBuffer   vertexData;
--   >     VkDeviceSize               vertexOffset;
--   >     uint32_t                   vertexCount;
--   >     VkDeviceSize               vertexStride;
--   >     VkFormat                   vertexFormat;
--   >     VkBuffer   indexData;
--   >     VkDeviceSize               indexOffset;
--   >     uint32_t                   indexCount;
--   >     VkIndexType                indexType;
--   >     VkBuffer   transformData;
--   >     VkDeviceSize               transformOffset;
--   > } VkGeometryTrianglesNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkGeometryTrianglesNV VkGeometryTrianglesNV registry at www.khronos.org>
type VkGeometryTrianglesNV = VkStruct VkGeometryTrianglesNV' -- ' closing tick for hsc2hs

data VkGeometryTrianglesNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkGeometryTrianglesNV where
    type StructRep VkGeometryTrianglesNV =
         'StructMeta "VkGeometryTrianglesNV" VkGeometryTrianglesNV  -- ' closing tick for hsc2hs
                                                                   (96)
{-# LINE 176 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           8
{-# LINE 177 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 179 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 184 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "vertexData" VkBuffer 'True 
                                                     (16)
{-# LINE 189 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "vertexOffset" VkDeviceSize 'False 
                                                            (24)
{-# LINE 194 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "vertexCount" Word32 'False 
                                                     (32)
{-# LINE 199 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "vertexStride" VkDeviceSize 'False 
                                                            (40)
{-# LINE 204 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "vertexFormat" VkFormat 'False 
                                                        (48)
{-# LINE 209 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "indexData" VkBuffer 'True 
                                                    (56)
{-# LINE 214 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "indexOffset" VkDeviceSize 'False 
                                                           (64)
{-# LINE 219 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "indexCount" Word32 'False 
                                                    (72)
{-# LINE 224 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "indexType" VkIndexType 'False 
                                                        (76)
{-# LINE 229 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "transformData" VkBuffer 'True 
                                                        (80)
{-# LINE 234 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "transformOffset" VkDeviceSize 'False 
                                                               (88)
{-# LINE 239 "src-gen/Graphics/Vulkan/Types/Struct/Geometry.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