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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Shader
       (VkShaderModuleCreateInfo,
        VkShaderModuleValidationCacheCreateInfoEXT,
        VkShaderResourceUsageAMD, VkShaderStatisticsInfoAMD)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.Shader        (VkShaderModuleCreateFlags,
                                                 VkShaderStageFlags)
import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import Graphics.Vulkan.Types.Handles            (VkValidationCacheEXT)

-- | > typedef struct VkShaderModuleCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkShaderModuleCreateFlags flags;
--   >     size_t                 codeSize;
--   >     const uint32_t*            pCode;
--   > } VkShaderModuleCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkShaderModuleCreateInfo VkShaderModuleCreateInfo registry at www.khronos.org>
type VkShaderModuleCreateInfo = VkStruct VkShaderModuleCreateInfo' -- ' closing tick for hsc2hs

data VkShaderModuleCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkShaderModuleCreateInfo where
    type StructRep VkShaderModuleCreateInfo =
         'StructMeta "VkShaderModuleCreateInfo" VkShaderModuleCreateInfo -- ' closing tick for hsc2hs
           (40)
{-# LINE 37 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           8
{-# LINE 38 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 40 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 45 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkShaderModuleCreateFlags 'True 
                                                                 (16)
{-# LINE 50 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "codeSize" CSize 'False 
                                                 (24)
{-# LINE 55 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pCode" (Ptr Word32) 'False 
                                                     (32)
{-# LINE 60 "src-gen/Graphics/Vulkan/Types/Struct/Shader.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 VkShaderModuleValidationCacheCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkValidationCacheEXT    validationCache;
--   > } VkShaderModuleValidationCacheCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkShaderModuleValidationCacheCreateInfoEXT VkShaderModuleValidationCacheCreateInfoEXT registry at www.khronos.org>
type VkShaderModuleValidationCacheCreateInfoEXT =
     VkStruct VkShaderModuleValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs

data VkShaderModuleValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkShaderModuleValidationCacheCreateInfoEXT
         where
    type StructRep VkShaderModuleValidationCacheCreateInfoEXT =
         'StructMeta "VkShaderModuleValidationCacheCreateInfoEXT" -- ' closing tick for hsc2hs
           VkShaderModuleValidationCacheCreateInfoEXT
           (24)
{-# LINE 85 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           8
{-# LINE 86 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 88 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 93 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "validationCache" VkValidationCacheEXT 'False 
                                                                       (16)
{-# LINE 98 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkShaderModuleCreateInfo] -- ' closing tick for hsc2hs

-- | > typedef struct VkShaderResourceUsageAMD {
--   >     uint32_t numUsedVgprs;
--   >     uint32_t numUsedSgprs;
--   >     uint32_t ldsSizePerLocalWorkGroup;
--   >     size_t ldsUsageSizeInBytes;
--   >     size_t scratchMemUsageInBytes;
--   > } VkShaderResourceUsageAMD;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkShaderResourceUsageAMD VkShaderResourceUsageAMD registry at www.khronos.org>
type VkShaderResourceUsageAMD = VkStruct VkShaderResourceUsageAMD' -- ' closing tick for hsc2hs

data VkShaderResourceUsageAMD' -- ' closing tick for hsc2hs

instance VulkanMarshal VkShaderResourceUsageAMD where
    type StructRep VkShaderResourceUsageAMD =
         'StructMeta "VkShaderResourceUsageAMD" VkShaderResourceUsageAMD -- ' closing tick for hsc2hs
           (32)
{-# LINE 122 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           8
{-# LINE 123 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           '[('FieldMeta "numUsedVgprs" Word32 'False  -- ' closing tick for hsc2hs
                                                      (0)
{-# LINE 125 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "numUsedSgprs" Word32 'False 
                                                      (4)
{-# LINE 130 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "ldsSizePerLocalWorkGroup" Word32 'False 
                                                                  (8)
{-# LINE 135 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "ldsUsageSizeInBytes" CSize 'False 
                                                            (16)
{-# LINE 140 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "scratchMemUsageInBytes" CSize 'False 
                                                               (24)
{-# LINE 145 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkShaderStatisticsInfoAMD {
--   >     VkShaderStageFlags shaderStageMask;
--   >     VkShaderResourceUsageAMD resourceUsage;
--   >     uint32_t numPhysicalVgprs;
--   >     uint32_t numPhysicalSgprs;
--   >     uint32_t numAvailableVgprs;
--   >     uint32_t numAvailableSgprs;
--   >     uint32_t computeWorkGroupSize[3];
--   > } VkShaderStatisticsInfoAMD;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkShaderStatisticsInfoAMD VkShaderStatisticsInfoAMD registry at www.khronos.org>
type VkShaderStatisticsInfoAMD =
     VkStruct VkShaderStatisticsInfoAMD' -- ' closing tick for hsc2hs

data VkShaderStatisticsInfoAMD' -- ' closing tick for hsc2hs

instance VulkanMarshal VkShaderStatisticsInfoAMD where
    type StructRep VkShaderStatisticsInfoAMD =
         'StructMeta "VkShaderStatisticsInfoAMD" VkShaderStatisticsInfoAMD -- ' closing tick for hsc2hs
           (72)
{-# LINE 172 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           8
{-# LINE 173 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
           '[('FieldMeta "shaderStageMask" VkShaderStageFlags 'False  -- ' closing tick for hsc2hs
                                                                     (0)
{-# LINE 175 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "resourceUsage" VkShaderResourceUsageAMD 'False
                (8)
{-# LINE 180 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "numPhysicalVgprs" Word32 'False 
                                                          (40)
{-# LINE 185 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "numPhysicalSgprs" Word32 'False 
                                                          (44)
{-# LINE 190 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "numAvailableVgprs" Word32 'False 
                                                           (48)
{-# LINE 195 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "numAvailableSgprs" Word32 'False 
                                                           (52)
{-# LINE 200 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "computeWorkGroupSize" Word32 'False 
                                                              (56)
{-# LINE 205 "src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc" #-}
                3
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs