{-# language CPP #-}
-- | = Name
--
-- VK_KHR_dynamic_rendering - device extension
--
-- == VK_KHR_dynamic_rendering
--
-- [__Name String__]
--     @VK_KHR_dynamic_rendering@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     45
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve VK_KHR_depth_stencil_resolve>
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
--
-- [__Deprecation State__]
--
--     -   /Promoted/ to
--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
--
-- [__Contact__]
--
--     -   Tobias Hector
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_dynamic_rendering] @tobski%0A*Here describe the issue or question you have about the VK_KHR_dynamic_rendering extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_dynamic_rendering.adoc VK_KHR_dynamic_rendering>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2021-10-06
--
-- [__Interactions and External Dependencies__]
--
--     -   Promoted to Vulkan 1.3 Core
--
-- [__Contributors__]
--
--     -   Tobias Hector, AMD
--
--     -   Arseny Kapoulkine, Roblox
--
--     -   François Duranleau, Gameloft
--
--     -   Stuart Smith, AMD
--
--     -   Hai Nguyen, Google
--
--     -   Jean-François Roy, Google
--
--     -   Jeff Leger, Qualcomm
--
--     -   Jan-Harald Fredriksen, Arm
--
--     -   Piers Daniell, Nvidia
--
--     -   James Fitzpatrick, Imagination
--
--     -   Piotr Byszewski, Mobica
--
--     -   Jesse Hall, Google
--
--     -   Mike Blumenkrantz, Valve
--
-- == Description
--
-- This extension allows applications to create single-pass render pass
-- instances without needing to create render pass objects or framebuffers.
-- Dynamic render passes can also span across multiple primary command
-- buffers, rather than relying on secondary command buffers.
--
-- This extension also incorporates 'ATTACHMENT_STORE_OP_NONE_KHR' from
-- @VK_QCOM_render_pass_store_ops@, enabling applications to avoid
-- unnecessary synchronization when an attachment is not written during a
-- render pass.
--
-- == New Commands
--
-- -   'cmdBeginRenderingKHR'
--
-- -   'cmdEndRenderingKHR'
--
-- == New Structures
--
-- -   'RenderingAttachmentInfoKHR'
--
-- -   'RenderingInfoKHR'
--
-- -   Extending
--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
--
--     -   'CommandBufferInheritanceRenderingInfoKHR'
--
-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
--
--     -   'PipelineRenderingCreateInfoKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceDynamicRenderingFeaturesKHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
--
--     -   'AttachmentSampleCountInfoAMD'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
--
--     -   'RenderingFragmentDensityMapAttachmentInfoEXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
--
--     -   'RenderingFragmentShadingRateAttachmentInfoKHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
--
--     -   'AttachmentSampleCountInfoNV'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
--
--     -   'MultiviewPerViewAttributesInfoNVX'
--
-- == New Enums
--
-- -   'RenderingFlagBitsKHR'
--
-- == New Bitmasks
--
-- -   'RenderingFlagsKHR'
--
-- == New Enum Constants
--
-- -   'KHR_DYNAMIC_RENDERING_EXTENSION_NAME'
--
-- -   'KHR_DYNAMIC_RENDERING_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':
--
--     -   'ATTACHMENT_STORE_OP_NONE_KHR'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
--
--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'
--
--     -   'STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'
--
--     -   'STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'
--
--     -   'STRUCTURE_TYPE_RENDERING_INFO_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
-- is supported:
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
--
--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
--
--     -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
--
--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--
--     -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
-- is supported:
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>
-- is supported:
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'
--
-- == Promotion to Vulkan 1.3
--
-- Functionality in this extension is included in core Vulkan 1.3, with the
-- KHR suffix omitted. The original type, enum and command names are still
-- available as aliases of the core functionality.
--
-- == Version History
--
-- -   Revision 1, 2021-10-06 (Tobias Hector)
--
--     -   Initial revision
--
-- == See Also
--
-- 'CommandBufferInheritanceRenderingInfoKHR',
-- 'PhysicalDeviceDynamicRenderingFeaturesKHR',
-- 'PipelineRenderingCreateInfoKHR', 'RenderingAttachmentInfoKHR',
-- 'RenderingFlagBitsKHR', 'RenderingFlagsKHR', 'RenderingInfoKHR',
-- 'cmdBeginRenderingKHR', 'cmdEndRenderingKHR'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_dynamic_rendering  ( pattern STRUCTURE_TYPE_RENDERING_INFO_KHR
                                                   , pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR
                                                   , pattern STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR
                                                   , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR
                                                   , pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR
                                                   , pattern ATTACHMENT_STORE_OP_NONE_KHR
                                                   , pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                   , pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
                                                   , pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV
                                                   , cmdBeginRenderingKHR
                                                   , cmdEndRenderingKHR
                                                   , RenderingFragmentShadingRateAttachmentInfoKHR(..)
                                                   , RenderingFragmentDensityMapAttachmentInfoEXT(..)
                                                   , AttachmentSampleCountInfoAMD(..)
                                                   , MultiviewPerViewAttributesInfoNVX(..)
                                                   , RenderingFlagsKHR
                                                   , RenderingFlagBitsKHR
                                                   , PipelineRenderingCreateInfoKHR
                                                   , RenderingInfoKHR
                                                   , RenderingAttachmentInfoKHR
                                                   , PhysicalDeviceDynamicRenderingFeaturesKHR
                                                   , CommandBufferInheritanceRenderingInfoKHR
                                                   , AttachmentSampleCountInfoNV
                                                   , KHR_DYNAMIC_RENDERING_SPEC_VERSION
                                                   , pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION
                                                   , KHR_DYNAMIC_RENDERING_EXTENSION_NAME
                                                   , pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME
                                                   ) where

import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import Data.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (cmdBeginRendering)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (cmdEndRendering)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
import Vulkan.Core10.FundamentalTypes (Extent2D)
import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
import Vulkan.Core10.Handles (ImageView)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingAttachmentInfo)
import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits)
import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE))
import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT))
import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INFO))
-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_INFO_KHR"
pattern $bSTRUCTURE_TYPE_RENDERING_INFO_KHR :: StructureType
$mSTRUCTURE_TYPE_RENDERING_INFO_KHR :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_RENDERING_INFO_KHR = STRUCTURE_TYPE_RENDERING_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR"
pattern $bSTRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR :: StructureType
$mSTRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR"
pattern $bSTRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR :: StructureType
$mSTRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR"
pattern $bSTRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR :: StructureType
$mSTRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR"
pattern $bSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR :: StructureType
$mSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO


-- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_KHR"
pattern $bATTACHMENT_STORE_OP_NONE_KHR :: AttachmentStoreOp
$mATTACHMENT_STORE_OP_NONE_KHR :: forall {r}. AttachmentStoreOp -> ((# #) -> r) -> ((# #) -> r) -> r
ATTACHMENT_STORE_OP_NONE_KHR = ATTACHMENT_STORE_OP_NONE


-- No documentation found for TopLevel "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
pattern $bPIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineCreateFlagBits
$mPIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: forall {r}.
PipelineCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR


-- No documentation found for TopLevel "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
pattern $bPIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: PipelineCreateFlagBits
$mPIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: forall {r}.
PipelineCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV"
pattern $bSTRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV :: StructureType
$mSTRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD


-- No documentation found for TopLevel "vkCmdBeginRenderingKHR"
cmdBeginRenderingKHR :: CommandBuffer -> RenderingInfo a -> io ()
cmdBeginRenderingKHR = forall (a :: [*]) (io :: * -> *).
(Extendss RenderingInfo a, PokeChain a, MonadIO io) =>
CommandBuffer -> RenderingInfo a -> io ()
cmdBeginRendering


-- No documentation found for TopLevel "vkCmdEndRenderingKHR"
cmdEndRenderingKHR :: CommandBuffer -> io ()
cmdEndRenderingKHR = forall (io :: * -> *). MonadIO io => CommandBuffer -> io ()
cmdEndRendering


-- | VkRenderingFragmentShadingRateAttachmentInfoKHR - Structure specifying
-- fragment shading rate attachment information
--
-- = Description
--
-- This structure can be included in the @pNext@ chain of
-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' to
-- define a
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
-- If @imageView@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or if this
-- structure is not specified, the implementation behaves as if a valid
-- shading rate attachment was specified with all texels specifying a
-- single pixel per fragment.
--
-- == Valid Usage
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06147#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @layout@ /must/ be
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
--     /must/ have been created with
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @shadingRateAttachmentTexelSize.width@ /must/ be a power of two
--     value
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06150#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
--     to
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06151#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @shadingRateAttachmentTexelSize.width@ /must/ be greater than or
--     equal to
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @shadingRateAttachmentTexelSize.height@ /must/ be a power of two
--     value
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06153#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
--     to
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06154#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @shadingRateAttachmentTexelSize.height@ /must/ be greater than or
--     equal to
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06155#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
--     quotient of @shadingRateAttachmentTexelSize.width@ and
--     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
--     to
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06156#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
--     quotient of @shadingRateAttachmentTexelSize.height@ and
--     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
--     to
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-sType-sType#
--     @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-parameter#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
--     handle
--
-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageLayout-parameter#
--     @imageLayout@ /must/ be a valid
--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
-- 'Vulkan.Core10.Handles.ImageView',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data RenderingFragmentShadingRateAttachmentInfoKHR = RenderingFragmentShadingRateAttachmentInfoKHR
  { -- | @imageView@ is the image view that will be used as a fragment shading
    -- rate attachment.
    RenderingFragmentShadingRateAttachmentInfoKHR -> ImageView
imageView :: ImageView
  , -- | @imageLayout@ is the layout that @imageView@ will be in during
    -- rendering.
    RenderingFragmentShadingRateAttachmentInfoKHR -> ImageLayout
imageLayout :: ImageLayout
  , -- | @shadingRateAttachmentTexelSize@ specifies the number of pixels
    -- corresponding to each texel in @imageView@.
    RenderingFragmentShadingRateAttachmentInfoKHR -> Extent2D
shadingRateAttachmentTexelSize :: Extent2D
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderingFragmentShadingRateAttachmentInfoKHR)
#endif
deriving instance Show RenderingFragmentShadingRateAttachmentInfoKHR

instance ToCStruct RenderingFragmentShadingRateAttachmentInfoKHR where
  withCStruct :: forall b.
RenderingFragmentShadingRateAttachmentInfoKHR
-> (Ptr RenderingFragmentShadingRateAttachmentInfoKHR -> IO b)
-> IO b
withCStruct RenderingFragmentShadingRateAttachmentInfoKHR
x Ptr RenderingFragmentShadingRateAttachmentInfoKHR -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 forall a b. (a -> b) -> a -> b
$ \Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p RenderingFragmentShadingRateAttachmentInfoKHR
x (Ptr RenderingFragmentShadingRateAttachmentInfoKHR -> IO b
f Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p)
  pokeCStruct :: forall b.
Ptr RenderingFragmentShadingRateAttachmentInfoKHR
-> RenderingFragmentShadingRateAttachmentInfoKHR -> IO b -> IO b
pokeCStruct Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p RenderingFragmentShadingRateAttachmentInfoKHR{ImageLayout
Extent2D
ImageView
shadingRateAttachmentTexelSize :: Extent2D
imageLayout :: ImageLayout
imageView :: ImageView
$sel:shadingRateAttachmentTexelSize:RenderingFragmentShadingRateAttachmentInfoKHR :: RenderingFragmentShadingRateAttachmentInfoKHR -> Extent2D
$sel:imageLayout:RenderingFragmentShadingRateAttachmentInfoKHR :: RenderingFragmentShadingRateAttachmentInfoKHR -> ImageLayout
$sel:imageView:RenderingFragmentShadingRateAttachmentInfoKHR :: RenderingFragmentShadingRateAttachmentInfoKHR -> ImageView
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageView)) (ImageView
imageView)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ImageLayout)) (ImageLayout
imageLayout)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Extent2D)) (Extent2D
shadingRateAttachmentTexelSize)
    IO b
f
  cStructSize :: Int
cStructSize = Int
40
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr RenderingFragmentShadingRateAttachmentInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ImageLayout)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Extent2D)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct RenderingFragmentShadingRateAttachmentInfoKHR where
  peekCStruct :: Ptr RenderingFragmentShadingRateAttachmentInfoKHR
-> IO RenderingFragmentShadingRateAttachmentInfoKHR
peekCStruct Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p = do
    ImageView
imageView <- forall a. Storable a => Ptr a -> IO a
peek @ImageView ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageView))
    ImageLayout
imageLayout <- forall a. Storable a => Ptr a -> IO a
peek @ImageLayout ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ImageLayout))
    Extent2D
shadingRateAttachmentTexelSize <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D ((Ptr RenderingFragmentShadingRateAttachmentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Extent2D))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ImageView
-> ImageLayout
-> Extent2D
-> RenderingFragmentShadingRateAttachmentInfoKHR
RenderingFragmentShadingRateAttachmentInfoKHR
             ImageView
imageView ImageLayout
imageLayout Extent2D
shadingRateAttachmentTexelSize

instance Storable RenderingFragmentShadingRateAttachmentInfoKHR where
  sizeOf :: RenderingFragmentShadingRateAttachmentInfoKHR -> Int
sizeOf ~RenderingFragmentShadingRateAttachmentInfoKHR
_ = Int
40
  alignment :: RenderingFragmentShadingRateAttachmentInfoKHR -> Int
alignment ~RenderingFragmentShadingRateAttachmentInfoKHR
_ = Int
8
  peek :: Ptr RenderingFragmentShadingRateAttachmentInfoKHR
-> IO RenderingFragmentShadingRateAttachmentInfoKHR
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr RenderingFragmentShadingRateAttachmentInfoKHR
-> RenderingFragmentShadingRateAttachmentInfoKHR -> IO ()
poke Ptr RenderingFragmentShadingRateAttachmentInfoKHR
ptr RenderingFragmentShadingRateAttachmentInfoKHR
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderingFragmentShadingRateAttachmentInfoKHR
ptr RenderingFragmentShadingRateAttachmentInfoKHR
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero RenderingFragmentShadingRateAttachmentInfoKHR where
  zero :: RenderingFragmentShadingRateAttachmentInfoKHR
zero = ImageView
-> ImageLayout
-> Extent2D
-> RenderingFragmentShadingRateAttachmentInfoKHR
RenderingFragmentShadingRateAttachmentInfoKHR
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


-- | VkRenderingFragmentDensityMapAttachmentInfoEXT - Structure specifying
-- fragment shading rate attachment information
--
-- = Description
--
-- This structure can be included in the @pNext@ chain of
-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' to
-- define a fragment density map. If this structure is not included in the
-- @pNext@ chain, @imageView@ is treated as
-- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.
--
-- == Valid Usage
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06157#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--     @layout@ /must/ be
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
--     /must/ have been created with
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159#
--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
--     /must/ not have been created with
--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-apiVersion-07908#
--     If
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_multiview VK_KHR_multiview>
--     is not enabled,
--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@apiVersion@
--     is less than Vulkan 1.1, and @imageView@ is not
--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have a
--     @layerCount@ equal to @1@
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-sType-sType#
--     @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-parameter#
--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
--     handle
--
-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageLayout-parameter#
--     @imageLayout@ /must/ be a valid
--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
-- 'Vulkan.Core10.Handles.ImageView',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data RenderingFragmentDensityMapAttachmentInfoEXT = RenderingFragmentDensityMapAttachmentInfoEXT
  { -- | @imageView@ is the image view that will be used as a fragment density
    -- map attachment.
    RenderingFragmentDensityMapAttachmentInfoEXT -> ImageView
imageView :: ImageView
  , -- | @imageLayout@ is the layout that @imageView@ will be in during
    -- rendering.
    RenderingFragmentDensityMapAttachmentInfoEXT -> ImageLayout
imageLayout :: ImageLayout
  }
  deriving (Typeable, RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> Bool
$c/= :: RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> Bool
== :: RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> Bool
$c== :: RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderingFragmentDensityMapAttachmentInfoEXT)
#endif
deriving instance Show RenderingFragmentDensityMapAttachmentInfoEXT

instance ToCStruct RenderingFragmentDensityMapAttachmentInfoEXT where
  withCStruct :: forall b.
RenderingFragmentDensityMapAttachmentInfoEXT
-> (Ptr RenderingFragmentDensityMapAttachmentInfoEXT -> IO b)
-> IO b
withCStruct RenderingFragmentDensityMapAttachmentInfoEXT
x Ptr RenderingFragmentDensityMapAttachmentInfoEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p RenderingFragmentDensityMapAttachmentInfoEXT
x (Ptr RenderingFragmentDensityMapAttachmentInfoEXT -> IO b
f Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p)
  pokeCStruct :: forall b.
Ptr RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> IO b -> IO b
pokeCStruct Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p RenderingFragmentDensityMapAttachmentInfoEXT{ImageLayout
ImageView
imageLayout :: ImageLayout
imageView :: ImageView
$sel:imageLayout:RenderingFragmentDensityMapAttachmentInfoEXT :: RenderingFragmentDensityMapAttachmentInfoEXT -> ImageLayout
$sel:imageView:RenderingFragmentDensityMapAttachmentInfoEXT :: RenderingFragmentDensityMapAttachmentInfoEXT -> ImageView
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageView)) (ImageView
imageView)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ImageLayout)) (ImageLayout
imageLayout)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr RenderingFragmentDensityMapAttachmentInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageView)) (forall a. Zero a => a
zero)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ImageLayout)) (forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct RenderingFragmentDensityMapAttachmentInfoEXT where
  peekCStruct :: Ptr RenderingFragmentDensityMapAttachmentInfoEXT
-> IO RenderingFragmentDensityMapAttachmentInfoEXT
peekCStruct Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p = do
    ImageView
imageView <- forall a. Storable a => Ptr a -> IO a
peek @ImageView ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ImageView))
    ImageLayout
imageLayout <- forall a. Storable a => Ptr a -> IO a
peek @ImageLayout ((Ptr RenderingFragmentDensityMapAttachmentInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ImageLayout))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ImageView
-> ImageLayout -> RenderingFragmentDensityMapAttachmentInfoEXT
RenderingFragmentDensityMapAttachmentInfoEXT
             ImageView
imageView ImageLayout
imageLayout

instance Storable RenderingFragmentDensityMapAttachmentInfoEXT where
  sizeOf :: RenderingFragmentDensityMapAttachmentInfoEXT -> Int
sizeOf ~RenderingFragmentDensityMapAttachmentInfoEXT
_ = Int
32
  alignment :: RenderingFragmentDensityMapAttachmentInfoEXT -> Int
alignment ~RenderingFragmentDensityMapAttachmentInfoEXT
_ = Int
8
  peek :: Ptr RenderingFragmentDensityMapAttachmentInfoEXT
-> IO RenderingFragmentDensityMapAttachmentInfoEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr RenderingFragmentDensityMapAttachmentInfoEXT
-> RenderingFragmentDensityMapAttachmentInfoEXT -> IO ()
poke Ptr RenderingFragmentDensityMapAttachmentInfoEXT
ptr RenderingFragmentDensityMapAttachmentInfoEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderingFragmentDensityMapAttachmentInfoEXT
ptr RenderingFragmentDensityMapAttachmentInfoEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero RenderingFragmentDensityMapAttachmentInfoEXT where
  zero :: RenderingFragmentDensityMapAttachmentInfoEXT
zero = ImageView
-> ImageLayout -> RenderingFragmentDensityMapAttachmentInfoEXT
RenderingFragmentDensityMapAttachmentInfoEXT
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


-- | VkAttachmentSampleCountInfoAMD - Structure specifying command buffer
-- inheritance info for dynamic render pass instances
--
-- = Description
--
-- If
-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
-- is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
-- is specified in
-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@, and the
-- @pNext@ chain of
-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
-- 'AttachmentSampleCountInfoAMD', then this structure defines the sample
-- counts of each attachment within the render pass instance. If
-- 'AttachmentSampleCountInfoAMD' is not included, the value of
-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@
-- is used as the sample count for each attachment. If
-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
-- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or
-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
-- is not specified in
-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,
-- parameters of this structure are ignored.
--
-- 'AttachmentSampleCountInfoAMD' /can/ also be included in the @pNext@
-- chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'. When a
-- graphics pipeline is created without a
-- 'Vulkan.Core10.Handles.RenderPass', if this structure is included in the
-- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
-- specifies the sample count of attachments used for rendering. If this
-- structure is not specified, and the pipeline does not include a
-- 'Vulkan.Core10.Handles.RenderPass', the value of
-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
-- is used as the sample count for each attachment. If a graphics pipeline
-- is created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters
-- of this structure are ignored.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>,
-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data AttachmentSampleCountInfoAMD = AttachmentSampleCountInfoAMD
  { -- | @pColorAttachmentSamples@ is a pointer to an array of
    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
    -- defining the sample count of color attachments.
    AttachmentSampleCountInfoAMD -> Vector SampleCountFlagBits
colorAttachmentSamples :: Vector SampleCountFlagBits
  , -- | @depthStencilAttachmentSamples@ is a
    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
    -- defining the sample count of a depth\/stencil attachment.
    AttachmentSampleCountInfoAMD -> SampleCountFlagBits
depthStencilAttachmentSamples :: SampleCountFlagBits
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (AttachmentSampleCountInfoAMD)
#endif
deriving instance Show AttachmentSampleCountInfoAMD

instance ToCStruct AttachmentSampleCountInfoAMD where
  withCStruct :: forall b.
AttachmentSampleCountInfoAMD
-> (Ptr AttachmentSampleCountInfoAMD -> IO b) -> IO b
withCStruct AttachmentSampleCountInfoAMD
x Ptr AttachmentSampleCountInfoAMD -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 forall a b. (a -> b) -> a -> b
$ \Ptr AttachmentSampleCountInfoAMD
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr AttachmentSampleCountInfoAMD
p AttachmentSampleCountInfoAMD
x (Ptr AttachmentSampleCountInfoAMD -> IO b
f Ptr AttachmentSampleCountInfoAMD
p)
  pokeCStruct :: forall b.
Ptr AttachmentSampleCountInfoAMD
-> AttachmentSampleCountInfoAMD -> IO b -> IO b
pokeCStruct Ptr AttachmentSampleCountInfoAMD
p AttachmentSampleCountInfoAMD{Vector SampleCountFlagBits
SampleCountFlagBits
depthStencilAttachmentSamples :: SampleCountFlagBits
colorAttachmentSamples :: Vector SampleCountFlagBits
$sel:depthStencilAttachmentSamples:AttachmentSampleCountInfoAMD :: AttachmentSampleCountInfoAMD -> SampleCountFlagBits
$sel:colorAttachmentSamples:AttachmentSampleCountInfoAMD :: AttachmentSampleCountInfoAMD -> Vector SampleCountFlagBits
..} IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a. Vector a -> Int
Data.Vector.length forall a b. (a -> b) -> a -> b
$ (Vector SampleCountFlagBits
colorAttachmentSamples)) :: Word32))
    Ptr SampleCountFlagBits
pPColorAttachmentSamples' <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @SampleCountFlagBits ((forall a. Vector a -> Int
Data.Vector.length (Vector SampleCountFlagBits
colorAttachmentSamples)) forall a. Num a => a -> a -> a
* Int
4)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i SampleCountFlagBits
e -> forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr SampleCountFlagBits
pPColorAttachmentSamples' forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
4 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr SampleCountFlagBits) (SampleCountFlagBits
e)) (Vector SampleCountFlagBits
colorAttachmentSamples)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr SampleCountFlagBits))) (Ptr SampleCountFlagBits
pPColorAttachmentSamples')
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr SampleCountFlagBits)) (SampleCountFlagBits
depthStencilAttachmentSamples)
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = Int
40
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr AttachmentSampleCountInfoAMD -> IO b -> IO b
pokeZeroCStruct Ptr AttachmentSampleCountInfoAMD
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct AttachmentSampleCountInfoAMD where
  peekCStruct :: Ptr AttachmentSampleCountInfoAMD -> IO AttachmentSampleCountInfoAMD
peekCStruct Ptr AttachmentSampleCountInfoAMD
p = do
    Word32
colorAttachmentCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
    Ptr SampleCountFlagBits
pColorAttachmentSamples <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr SampleCountFlagBits) ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr SampleCountFlagBits)))
    Vector SampleCountFlagBits
pColorAttachmentSamples' <- forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
colorAttachmentCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @SampleCountFlagBits ((Ptr SampleCountFlagBits
pColorAttachmentSamples forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr SampleCountFlagBits)))
    SampleCountFlagBits
depthStencilAttachmentSamples <- forall a. Storable a => Ptr a -> IO a
peek @SampleCountFlagBits ((Ptr AttachmentSampleCountInfoAMD
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr SampleCountFlagBits))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Vector SampleCountFlagBits
-> SampleCountFlagBits -> AttachmentSampleCountInfoAMD
AttachmentSampleCountInfoAMD
             Vector SampleCountFlagBits
pColorAttachmentSamples' SampleCountFlagBits
depthStencilAttachmentSamples

instance Zero AttachmentSampleCountInfoAMD where
  zero :: AttachmentSampleCountInfoAMD
zero = Vector SampleCountFlagBits
-> SampleCountFlagBits -> AttachmentSampleCountInfoAMD
AttachmentSampleCountInfoAMD
           forall a. Monoid a => a
mempty
           forall a. Zero a => a
zero


-- | VkMultiviewPerViewAttributesInfoNVX - Structure specifying the multiview
-- per-attribute properties
--
-- = Description
--
-- When dynamic render pass instances are being used, instead of specifying
-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'
-- or
-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX'
-- in the subpass description flags, the per-attribute properties of the
-- render pass instance /must/ be specified by the
-- 'MultiviewPerViewAttributesInfoNVX' structure Include the
-- 'MultiviewPerViewAttributesInfoNVX' structure in the @pNext@ chain of
-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' when creating a
-- graphics pipeline for dynamic rendering,
-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
-- when starting a dynamic render pass instance, and
-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' when
-- specifying the dynamic render pass instance parameters for secondary
-- command buffers.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data MultiviewPerViewAttributesInfoNVX = MultiviewPerViewAttributesInfoNVX
  { -- | @perViewAttributes@ specifies that shaders compiled for this pipeline
    -- write the attributes for all views in a single invocation of each vertex
    -- processing stage. All pipelines executed within a render pass instance
    -- that includes this bit /must/ write per-view attributes to the
    -- @*PerViewNV[]@ shader outputs, in addition to the non-per-view (e.g.
    -- @Position@) outputs.
    MultiviewPerViewAttributesInfoNVX -> Bool
perViewAttributes :: Bool
  , -- | @perViewAttributesPositionXOnly@ specifies that shaders compiled for
    -- this pipeline use per-view positions which only differ in value in the x
    -- component. Per-view viewport mask /can/ also be used.
    MultiviewPerViewAttributesInfoNVX -> Bool
perViewAttributesPositionXOnly :: Bool
  }
  deriving (Typeable, MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> Bool
$c/= :: MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> Bool
== :: MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> Bool
$c== :: MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MultiviewPerViewAttributesInfoNVX)
#endif
deriving instance Show MultiviewPerViewAttributesInfoNVX

instance ToCStruct MultiviewPerViewAttributesInfoNVX where
  withCStruct :: forall b.
MultiviewPerViewAttributesInfoNVX
-> (Ptr MultiviewPerViewAttributesInfoNVX -> IO b) -> IO b
withCStruct MultiviewPerViewAttributesInfoNVX
x Ptr MultiviewPerViewAttributesInfoNVX -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr MultiviewPerViewAttributesInfoNVX
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MultiviewPerViewAttributesInfoNVX
p MultiviewPerViewAttributesInfoNVX
x (Ptr MultiviewPerViewAttributesInfoNVX -> IO b
f Ptr MultiviewPerViewAttributesInfoNVX
p)
  pokeCStruct :: forall b.
Ptr MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> IO b -> IO b
pokeCStruct Ptr MultiviewPerViewAttributesInfoNVX
p MultiviewPerViewAttributesInfoNVX{Bool
perViewAttributesPositionXOnly :: Bool
perViewAttributes :: Bool
$sel:perViewAttributesPositionXOnly:MultiviewPerViewAttributesInfoNVX :: MultiviewPerViewAttributesInfoNVX -> Bool
$sel:perViewAttributes:MultiviewPerViewAttributesInfoNVX :: MultiviewPerViewAttributesInfoNVX -> Bool
..} IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
perViewAttributes))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
perViewAttributesPositionXOnly))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr MultiviewPerViewAttributesInfoNVX -> IO b -> IO b
pokeZeroCStruct Ptr MultiviewPerViewAttributesInfoNVX
p IO b
f = do
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct MultiviewPerViewAttributesInfoNVX where
  peekCStruct :: Ptr MultiviewPerViewAttributesInfoNVX
-> IO MultiviewPerViewAttributesInfoNVX
peekCStruct Ptr MultiviewPerViewAttributesInfoNVX
p = do
    Bool32
perViewAttributes <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    Bool32
perViewAttributesPositionXOnly <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr MultiviewPerViewAttributesInfoNVX
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
    forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> MultiviewPerViewAttributesInfoNVX
MultiviewPerViewAttributesInfoNVX
             (Bool32 -> Bool
bool32ToBool Bool32
perViewAttributes)
             (Bool32 -> Bool
bool32ToBool Bool32
perViewAttributesPositionXOnly)

instance Storable MultiviewPerViewAttributesInfoNVX where
  sizeOf :: MultiviewPerViewAttributesInfoNVX -> Int
sizeOf ~MultiviewPerViewAttributesInfoNVX
_ = Int
24
  alignment :: MultiviewPerViewAttributesInfoNVX -> Int
alignment ~MultiviewPerViewAttributesInfoNVX
_ = Int
8
  peek :: Ptr MultiviewPerViewAttributesInfoNVX
-> IO MultiviewPerViewAttributesInfoNVX
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr MultiviewPerViewAttributesInfoNVX
-> MultiviewPerViewAttributesInfoNVX -> IO ()
poke Ptr MultiviewPerViewAttributesInfoNVX
ptr MultiviewPerViewAttributesInfoNVX
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MultiviewPerViewAttributesInfoNVX
ptr MultiviewPerViewAttributesInfoNVX
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero MultiviewPerViewAttributesInfoNVX where
  zero :: MultiviewPerViewAttributesInfoNVX
zero = Bool -> Bool -> MultiviewPerViewAttributesInfoNVX
MultiviewPerViewAttributesInfoNVX
           forall a. Zero a => a
zero
           forall a. Zero a => a
zero


-- No documentation found for TopLevel "VkRenderingFlagsKHR"
type RenderingFlagsKHR = RenderingFlags


-- No documentation found for TopLevel "VkRenderingFlagBitsKHR"
type RenderingFlagBitsKHR = RenderingFlagBits


-- No documentation found for TopLevel "VkPipelineRenderingCreateInfoKHR"
type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo


-- No documentation found for TopLevel "VkRenderingInfoKHR"
type RenderingInfoKHR = RenderingInfo


-- No documentation found for TopLevel "VkRenderingAttachmentInfoKHR"
type RenderingAttachmentInfoKHR = RenderingAttachmentInfo


-- No documentation found for TopLevel "VkPhysicalDeviceDynamicRenderingFeaturesKHR"
type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures


-- No documentation found for TopLevel "VkCommandBufferInheritanceRenderingInfoKHR"
type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo


-- No documentation found for TopLevel "VkAttachmentSampleCountInfoNV"
type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD


type KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION"
pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION :: forall a . Integral a => a
pattern $bKHR_DYNAMIC_RENDERING_SPEC_VERSION :: forall a. Integral a => a
$mKHR_DYNAMIC_RENDERING_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_DYNAMIC_RENDERING_SPEC_VERSION = 1


type KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering"

-- No documentation found for TopLevel "VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME"
pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bKHR_DYNAMIC_RENDERING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mKHR_DYNAMIC_RENDERING_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_DYNAMIC_RENDERING_EXTENSION_NAME = "VK_KHR_dynamic_rendering"