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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.RayTracing
       (VkRayTracingPipelineCreateInfoNV,
        VkRayTracingShaderGroupCreateInfoNV)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.Pipeline                  (VkPipelineCreateFlags)
import Graphics.Vulkan.Types.Enum.RayTracingShaderGroupType (VkRayTracingShaderGroupTypeKHR)
import Graphics.Vulkan.Types.Enum.StructureType             (VkStructureType)
import Graphics.Vulkan.Types.Handles                        (VkPipeline,
                                                             VkPipelineLayout)
import

{-# LINE 21 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
  {-# SOURCE #-}

{-# LINE 23 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
  Graphics.Vulkan.Types.Struct.Pipeline (VkPipelineShaderStageCreateInfo)

-- | > typedef struct VkRayTracingPipelineCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineCreateFlags  flags;
--   >     uint32_t               stageCount;
--   >     const VkPipelineShaderStageCreateInfo* pStages;
--   >     uint32_t               groupCount;
--   >     const VkRayTracingShaderGroupCreateInfoNV* pGroups;
--   >     uint32_t               maxRecursionDepth;
--   >     VkPipelineLayout       layout;
--   >     VkPipeline      basePipelineHandle;
--   >     int32_t                basePipelineIndex;
--   > } VkRayTracingPipelineCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingPipelineCreateInfoNV VkRayTracingPipelineCreateInfoNV registry at www.khronos.org>
type VkRayTracingPipelineCreateInfoNV =
     VkStruct VkRayTracingPipelineCreateInfoNV' -- ' closing tick for hsc2hs

data VkRayTracingPipelineCreateInfoNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkRayTracingPipelineCreateInfoNV where
    type StructRep VkRayTracingPipelineCreateInfoNV =
         'StructMeta "VkRayTracingPipelineCreateInfoNV" -- ' closing tick for hsc2hs
           VkRayTracingPipelineCreateInfoNV
           (80)
{-# LINE 50 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
           8
{-# LINE 51 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 53 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 58 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkPipelineCreateFlags 'True
                                                             (16)
{-# LINE 63 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stageCount" Word32 'False
                                                    (20)
{-# LINE 68 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pStages" (Ptr VkPipelineShaderStageCreateInfo) 'False
                (24)
{-# LINE 73 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "groupCount" Word32 'False
                                                    (32)
{-# LINE 78 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pGroups" (Ptr VkRayTracingShaderGroupCreateInfoNV) -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (40)
{-# LINE 84 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxRecursionDepth" Word32 'False
                                                           (48)
{-# LINE 89 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "layout" VkPipelineLayout 'False
                                                          (56)
{-# LINE 94 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "basePipelineHandle" VkPipeline 'True
                                                               (64)
{-# LINE 99 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "basePipelineIndex" Int32 'False
                                                          (72)
{-# LINE 104 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.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 VkRayTracingShaderGroupCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkRayTracingShaderGroupTypeKHR type;
--   >     uint32_t               generalShader;
--   >     uint32_t               closestHitShader;
--   >     uint32_t               anyHitShader;
--   >     uint32_t               intersectionShader;
--   > } VkRayTracingShaderGroupCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRayTracingShaderGroupCreateInfoNV VkRayTracingShaderGroupCreateInfoNV registry at www.khronos.org>
type VkRayTracingShaderGroupCreateInfoNV =
     VkStruct VkRayTracingShaderGroupCreateInfoNV' -- ' closing tick for hsc2hs

data VkRayTracingShaderGroupCreateInfoNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkRayTracingShaderGroupCreateInfoNV where
    type StructRep VkRayTracingShaderGroupCreateInfoNV =
         'StructMeta "VkRayTracingShaderGroupCreateInfoNV" -- ' closing tick for hsc2hs
           VkRayTracingShaderGroupCreateInfoNV
           (40)
{-# LINE 132 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
           8
{-# LINE 133 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 135 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 140 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "type" VkRayTracingShaderGroupTypeKHR 'False
                                                                      (16)
{-# LINE 145 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "generalShader" Word32 'False
                                                       (20)
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "closestHitShader" Word32 'False
                                                          (24)
{-# LINE 155 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "anyHitShader" Word32 'False
                                                      (28)
{-# LINE 160 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "intersectionShader" Word32 'False
                                                            (32)
{-# LINE 165 "src-gen/Graphics/Vulkan/Types/Struct/RayTracing.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