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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Clear
       (VkClearAttachment, VkClearColorValue, VkClearDepthStencilValue,
        VkClearRect, VkClearValue)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.Image  (VkImageAspectFlags)
import Graphics.Vulkan.Types.Struct.Rect (VkRect2D)

-- | > typedef struct VkClearAttachment {
--   >     VkImageAspectFlags     aspectMask;
--   >     uint32_t               colorAttachment;
--   >     VkClearValue           clearValue;
--   > } VkClearAttachment;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClearAttachment VkClearAttachment registry at www.khronos.org>
type VkClearAttachment = VkStruct VkClearAttachment' -- ' closing tick for hsc2hs

data VkClearAttachment' -- ' closing tick for hsc2hs

instance VulkanMarshal VkClearAttachment where
    type StructRep VkClearAttachment =
         'StructMeta "VkClearAttachment" VkClearAttachment  -- ' closing tick for hsc2hs
                                                           (24)
{-# LINE 32 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           4
{-# LINE 33 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           '[('FieldMeta "aspectMask" VkImageAspectFlags 'False  -- ' closing tick for hsc2hs
                                                                (0)
{-# LINE 35 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "colorAttachment" Word32 'False 
                                                         (4)
{-# LINE 40 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "clearValue" VkClearValue 'False 
                                                          (8)
{-# LINE 45 "src-gen/Graphics/Vulkan/Types/Struct/Clear.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

-- | // Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
--
--   > typedef union VkClearColorValue {
--   >     float                  float32[4];
--   >     int32_t                int32[4];
--   >     uint32_t               uint32[4];
--   > } VkClearColorValue;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClearColorValue VkClearColorValue registry at www.khronos.org>
type VkClearColorValue = VkStruct VkClearColorValue' -- ' closing tick for hsc2hs

data VkClearColorValue' -- ' closing tick for hsc2hs

instance VulkanMarshal VkClearColorValue where
    type StructRep VkClearColorValue =
         'StructMeta "VkClearColorValue" VkClearColorValue  -- ' closing tick for hsc2hs
                                                           (16)
{-# LINE 69 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           4
{-# LINE 70 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           '[('FieldMeta "float32" (
                                    Float
{-# LINE 72 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                                    ) 'False -- ' closing tick for hsc2hs
                (0)
{-# LINE 74 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                4
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "int32" Int32 'False 
                                              (0)
{-# LINE 79 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                4
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "uint32" Word32 'False 
                                                (0)
{-# LINE 84 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                4
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkClearDepthStencilValue {
--   >     float                  depth;
--   >     uint32_t               stencil;
--   > } VkClearDepthStencilValue;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClearDepthStencilValue VkClearDepthStencilValue registry at www.khronos.org>
type VkClearDepthStencilValue = VkStruct VkClearDepthStencilValue' -- ' closing tick for hsc2hs

data VkClearDepthStencilValue' -- ' closing tick for hsc2hs

instance VulkanMarshal VkClearDepthStencilValue where
    type StructRep VkClearDepthStencilValue =
         'StructMeta "VkClearDepthStencilValue" VkClearDepthStencilValue -- ' closing tick for hsc2hs
           (8)
{-# LINE 105 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           4
{-# LINE 106 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           '[('FieldMeta "depth" (
                                  Float
{-# LINE 108 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                                  ) 'False  -- ' closing tick for hsc2hs
                                           (0)
{-# LINE 110 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencil" Word32 'False 
                                                 (4)
{-# LINE 115 "src-gen/Graphics/Vulkan/Types/Struct/Clear.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 VkClearRect {
--   >     VkRect2D       rect;
--   >     uint32_t       baseArrayLayer;
--   >     uint32_t       layerCount;
--   > } VkClearRect;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClearRect VkClearRect registry at www.khronos.org>
type VkClearRect = VkStruct VkClearRect' -- ' closing tick for hsc2hs

data VkClearRect' -- ' closing tick for hsc2hs

instance VulkanMarshal VkClearRect where
    type StructRep VkClearRect =
         'StructMeta "VkClearRect" VkClearRect  -- ' closing tick for hsc2hs
                                               (24)
{-# LINE 137 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           4
{-# LINE 138 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           '[('FieldMeta "rect" VkRect2D 'False  -- ' closing tick for hsc2hs
                                                (0)
{-# LINE 140 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "baseArrayLayer" Word32 'False 
                                                        (16)
{-# LINE 145 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "layerCount" Word32 'False 
                                                    (20)
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/Clear.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

-- | // Union allowing specification of color or depth and stencil values. Actual value selected is based on attachment being cleared.
--
--   > typedef union VkClearValue {
--   >     VkClearColorValue      color;
--   >     VkClearDepthStencilValue depthStencil;
--   > } VkClearValue;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkClearValue VkClearValue registry at www.khronos.org>
type VkClearValue = VkStruct VkClearValue' -- ' closing tick for hsc2hs

data VkClearValue' -- ' closing tick for hsc2hs

instance VulkanMarshal VkClearValue where
    type StructRep VkClearValue =
         'StructMeta "VkClearValue" VkClearValue  -- ' closing tick for hsc2hs
                                                 (16)
{-# LINE 173 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           4
{-# LINE 174 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
           '[('FieldMeta "color" VkClearColorValue 'False  -- ' closing tick for hsc2hs
                                                          (0)
{-# LINE 176 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "depthStencil" VkClearDepthStencilValue 'False
                (0)
{-# LINE 181 "src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs