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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.ObjectTable
       (VkObjectTableCreateInfoNVX, VkObjectTableDescriptorSetEntryNVX,
        VkObjectTableEntryNVX, VkObjectTableIndexBufferEntryNVX,
        VkObjectTablePipelineEntryNVX, VkObjectTablePushConstantEntryNVX,
        VkObjectTableVertexBufferEntryNVX)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.IndexType     (VkIndexType)
import Graphics.Vulkan.Types.Enum.Object        (VkObjectEntryTypeNVX,
                                                 VkObjectEntryUsageFlagsNVX)
import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDescriptorSet,
                                                 VkPipeline, VkPipelineLayout)

-- | > typedef struct VkObjectTableCreateInfoNVX {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                                          objectCount;
--   >     const VkObjectEntryTypeNVX*       pObjectEntryTypes;
--   >     const uint32_t*                   pObjectEntryCounts;
--   >     const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
--   >     uint32_t maxUniformBuffersPerDescriptor;
--   >     uint32_t maxStorageBuffersPerDescriptor;
--   >     uint32_t maxStorageImagesPerDescriptor;
--   >     uint32_t maxSampledImagesPerDescriptor;
--   >     uint32_t maxPipelineLayouts;
--   > } VkObjectTableCreateInfoNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableCreateInfoNVX VkObjectTableCreateInfoNVX registry at www.khronos.org>
type VkObjectTableCreateInfoNVX =
     VkStruct VkObjectTableCreateInfoNVX' -- ' closing tick for hsc2hs

data VkObjectTableCreateInfoNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTableCreateInfoNVX where
    type StructRep VkObjectTableCreateInfoNVX =
         'StructMeta "VkObjectTableCreateInfoNVX" VkObjectTableCreateInfoNVX -- ' closing tick for hsc2hs
           (72)
{-# LINE 48 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           8
{-# LINE 49 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 51 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 56 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "objectCount" Word32 'False
                                                     (16)
{-# LINE 61 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pObjectEntryTypes" (Ptr VkObjectEntryTypeNVX) 'False
                (24)
{-# LINE 66 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pObjectEntryCounts" (Ptr Word32) 'False
                                                                  (32)
{-# LINE 71 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pObjectEntryUsageFlags" -- ' closing tick for hsc2hs
                (Ptr VkObjectEntryUsageFlagsNVX)
                'False -- ' closing tick for hsc2hs
                (40)
{-# LINE 78 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxUniformBuffersPerDescriptor" Word32 'False
                (48)
{-# LINE 83 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxStorageBuffersPerDescriptor" Word32 'False
                (52)
{-# LINE 88 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxStorageImagesPerDescriptor" Word32 'False
                                                                       (56)
{-# LINE 93 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxSampledImagesPerDescriptor" Word32 'False
                                                                       (60)
{-# LINE 98 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxPipelineLayouts" Word32 'False
                                                            (64)
{-# LINE 103 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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 VkObjectTableDescriptorSetEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkPipelineLayout             pipelineLayout;
--   >     VkDescriptorSet              descriptorSet;
--   > } VkObjectTableDescriptorSetEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableDescriptorSetEntryNVX VkObjectTableDescriptorSetEntryNVX registry at www.khronos.org>
type VkObjectTableDescriptorSetEntryNVX =
     VkStruct VkObjectTableDescriptorSetEntryNVX' -- ' closing tick for hsc2hs

data VkObjectTableDescriptorSetEntryNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTableDescriptorSetEntryNVX where
    type StructRep VkObjectTableDescriptorSetEntryNVX =
         'StructMeta "VkObjectTableDescriptorSetEntryNVX" -- ' closing tick for hsc2hs
           VkObjectTableDescriptorSetEntryNVX
           (24)
{-# LINE 128 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           8
{-# LINE 129 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
                                                            (0)
{-# LINE 131 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False
                                                                   (4)
{-# LINE 136 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pipelineLayout" VkPipelineLayout 'False
                                                                  (8)
{-# LINE 141 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "descriptorSet" VkDescriptorSet 'False
                                                                (16)
{-# LINE 146 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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 VkObjectTableEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   > } VkObjectTableEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableEntryNVX VkObjectTableEntryNVX registry at www.khronos.org>
type VkObjectTableEntryNVX = VkStruct VkObjectTableEntryNVX' -- ' closing tick for hsc2hs

data VkObjectTableEntryNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTableEntryNVX where
    type StructRep VkObjectTableEntryNVX =
         'StructMeta "VkObjectTableEntryNVX" VkObjectTableEntryNVX  -- ' closing tick for hsc2hs
                                                                   (8)
{-# LINE 167 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           4
{-# LINE 168 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
                                                            (0)
{-# LINE 170 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False
                                                                   (4)
{-# LINE 175 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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 VkObjectTableIndexBufferEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkBuffer                     buffer;
--   >     VkIndexType                  indexType;
--   > } VkObjectTableIndexBufferEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableIndexBufferEntryNVX VkObjectTableIndexBufferEntryNVX registry at www.khronos.org>
type VkObjectTableIndexBufferEntryNVX =
     VkStruct VkObjectTableIndexBufferEntryNVX' -- ' closing tick for hsc2hs

data VkObjectTableIndexBufferEntryNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTableIndexBufferEntryNVX where
    type StructRep VkObjectTableIndexBufferEntryNVX =
         'StructMeta "VkObjectTableIndexBufferEntryNVX" -- ' closing tick for hsc2hs
           VkObjectTableIndexBufferEntryNVX
           (24)
{-# LINE 200 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           8
{-# LINE 201 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
                                                            (0)
{-# LINE 203 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False
                                                                   (4)
{-# LINE 208 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "buffer" VkBuffer 'False
                                                  (8)
{-# LINE 213 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "indexType" VkIndexType 'False
                                                        (16)
{-# LINE 218 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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 VkObjectTablePipelineEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkPipeline                   pipeline;
--   > } VkObjectTablePipelineEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePipelineEntryNVX VkObjectTablePipelineEntryNVX registry at www.khronos.org>
type VkObjectTablePipelineEntryNVX =
     VkStruct VkObjectTablePipelineEntryNVX' -- ' closing tick for hsc2hs

data VkObjectTablePipelineEntryNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTablePipelineEntryNVX where
    type StructRep VkObjectTablePipelineEntryNVX =
         'StructMeta "VkObjectTablePipelineEntryNVX" -- ' closing tick for hsc2hs
           VkObjectTablePipelineEntryNVX
           (16)
{-# LINE 242 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           8
{-# LINE 243 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
                                                            (0)
{-# LINE 245 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False
                                                                   (4)
{-# LINE 250 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pipeline" VkPipeline 'False
                                                      (8)
{-# LINE 255 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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 VkObjectTablePushConstantEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkPipelineLayout             pipelineLayout;
--   >     VkShaderStageFlags           stageFlags;
--   > } VkObjectTablePushConstantEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePushConstantEntryNVX VkObjectTablePushConstantEntryNVX registry at www.khronos.org>
type VkObjectTablePushConstantEntryNVX =
     VkStruct VkObjectTablePushConstantEntryNVX' -- ' closing tick for hsc2hs

data VkObjectTablePushConstantEntryNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTablePushConstantEntryNVX where
    type StructRep VkObjectTablePushConstantEntryNVX =
         'StructMeta "VkObjectTablePushConstantEntryNVX" -- ' closing tick for hsc2hs
           VkObjectTablePushConstantEntryNVX
           (24)
{-# LINE 280 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           8
{-# LINE 281 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
                                                            (0)
{-# LINE 283 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False
                                                                   (4)
{-# LINE 288 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pipelineLayout" VkPipelineLayout 'False
                                                                  (8)
{-# LINE 293 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stageFlags" VkShaderStageFlags 'False
                                                                (16)
{-# LINE 298 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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 VkObjectTableVertexBufferEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkBuffer                     buffer;
--   > } VkObjectTableVertexBufferEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableVertexBufferEntryNVX VkObjectTableVertexBufferEntryNVX registry at www.khronos.org>
type VkObjectTableVertexBufferEntryNVX =
     VkStruct VkObjectTableVertexBufferEntryNVX' -- ' closing tick for hsc2hs

data VkObjectTableVertexBufferEntryNVX' -- ' closing tick for hsc2hs

instance VulkanMarshal VkObjectTableVertexBufferEntryNVX where
    type StructRep VkObjectTableVertexBufferEntryNVX =
         'StructMeta "VkObjectTableVertexBufferEntryNVX" -- ' closing tick for hsc2hs
           VkObjectTableVertexBufferEntryNVX
           (16)
{-# LINE 322 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           8
{-# LINE 323 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
                                                            (0)
{-# LINE 325 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False
                                                                   (4)
{-# LINE 330 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "buffer" VkBuffer 'False
                                                  (8)
{-# LINE 335 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.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