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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.QueueFamily
       (VkQueueFamilyCheckpointPropertiesNV, VkQueueFamilyProperties,
        VkQueueFamilyProperties2, VkQueueFamilyProperties2KHR)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.Pipeline      (VkPipelineStageFlags)
import Graphics.Vulkan.Types.Enum.Queue         (VkQueueFlags)
import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)

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

data VkQueueFamilyCheckpointPropertiesNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkQueueFamilyCheckpointPropertiesNV where
    type StructRep VkQueueFamilyCheckpointPropertiesNV =
         'StructMeta "VkQueueFamilyCheckpointPropertiesNV" -- ' closing tick for hsc2hs
           VkQueueFamilyCheckpointPropertiesNV
           (24)
{-# LINE 36 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
           8
{-# LINE 37 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 39 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 44 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "checkpointExecutionStageMask" VkPipelineStageFlags -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (16)
{-# LINE 50 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[VkQueueFamilyProperties2] -- ' closing tick for hsc2hs

-- | > typedef struct VkQueueFamilyProperties {
--   >     VkQueueFlags           queueFlags;
--   >     uint32_t               queueCount;
--   >     uint32_t               timestampValidBits;
--   >     VkExtent3D             minImageTransferGranularity;
--   > } VkQueueFamilyProperties;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyProperties VkQueueFamilyProperties registry at www.khronos.org>
type VkQueueFamilyProperties = VkStruct VkQueueFamilyProperties' -- ' closing tick for hsc2hs

data VkQueueFamilyProperties' -- ' closing tick for hsc2hs

instance VulkanMarshal VkQueueFamilyProperties where
    type StructRep VkQueueFamilyProperties =
         'StructMeta "VkQueueFamilyProperties" VkQueueFamilyProperties -- ' closing tick for hsc2hs
           (24)
{-# LINE 73 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
           4
{-# LINE 74 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
           '[('FieldMeta "queueFlags" VkQueueFlags 'True  -- ' closing tick for hsc2hs
                                                         (0)
{-# LINE 76 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueCount" Word32 'False 
                                                    (4)
{-# LINE 81 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "timestampValidBits" Word32 'False 
                                                            (8)
{-# LINE 86 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minImageTransferGranularity" VkExtent3D 'False
                (12)
{-# LINE 91 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.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 VkQueueFamilyProperties2 {
--   >     VkStructureType sType;
--   >     void*                            pNext;
--   >     VkQueueFamilyProperties          queueFamilyProperties;
--   > } VkQueueFamilyProperties2;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyProperties2 VkQueueFamilyProperties2 registry at www.khronos.org>
type VkQueueFamilyProperties2 = VkStruct VkQueueFamilyProperties2' -- ' closing tick for hsc2hs

data VkQueueFamilyProperties2' -- ' closing tick for hsc2hs

instance VulkanMarshal VkQueueFamilyProperties2 where
    type StructRep VkQueueFamilyProperties2 =
         'StructMeta "VkQueueFamilyProperties2" VkQueueFamilyProperties2 -- ' closing tick for hsc2hs
           (40)
{-# LINE 113 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
           8
{-# LINE 114 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 116 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 121 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueFamilyProperties" VkQueueFamilyProperties 'False
                (16)
{-# LINE 126 "src-gen/Graphics/Vulkan/Types/Struct/QueueFamily.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

-- | Alias for `VkQueueFamilyProperties2`
type VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2