{-# language CPP #-} -- No documentation found for Chapter "Promoted_From_VK_KHR_dynamic_rendering" module Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering ( cmdBeginRendering , cmdUseRendering , cmdEndRendering , PipelineRenderingCreateInfo(..) , RenderingInfo(..) , RenderingAttachmentInfo(..) , PhysicalDeviceDynamicRenderingFeatures(..) , CommandBufferInheritanceRenderingInfo(..) , AttachmentStoreOp(..) , StructureType(..) , RenderingFlagBits(..) , RenderingFlags ) where import Vulkan.Internal.Utils (traceAroundEvent) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Data.Typeable (eqT) import Foreign.Marshal.Alloc (allocaBytes) import GHC.IO (throwIO) import GHC.Ptr (castPtr) import GHC.Ptr (nullFunPtr) 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 Control.Monad.IO.Class (MonadIO) import Data.Type.Equality ((:~:)(Refl)) 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 GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..)) import Foreign.Ptr (FunPtr) 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.CStruct.Extends (forgetExtensions) import Vulkan.CStruct.Extends (pokeSomeCStruct) import Vulkan.CStruct.Extends (withSomeCStruct) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_unified_image_layouts (AttachmentFeedbackLoopInfoEXT) import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp) import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp) import Vulkan.Core10.FundamentalTypes (Bool32) import Vulkan.CStruct.Extends (Chain) import Vulkan.Core10.CommandBufferBuilding (ClearValue) import Vulkan.Core10.Handles (CommandBuffer) import Vulkan.Core10.Handles (CommandBuffer(..)) import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer)) import Vulkan.Core10.Handles (CommandBuffer_T) import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRendering)) import Vulkan.Dynamic (DeviceCmds(pVkCmdEndRendering)) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo) import Vulkan.CStruct.Extends (Extends) import Vulkan.CStruct.Extends (Extendss) import Vulkan.CStruct.Extends (Extensible(..)) import Vulkan.Core10.Enums.Format (Format) import Vulkan.Core10.Enums.ImageLayout (ImageLayout) import Vulkan.Core10.Handles (ImageView) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled (MultisampledRenderToSingleSampledInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (MultiviewPerViewAttributesInfoNVX) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas (MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM) import Vulkan.CStruct.Extends (PokeChain) import Vulkan.CStruct.Extends (PokeChain(..)) import Vulkan.Core10.FundamentalTypes (Rect2D) import {-# SOURCE #-} Vulkan.Extensions.VK_ARM_render_pass_striped (RenderPassStripeBeginInfoARM) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_shading (RenderPassTileShadingCreateInfoQCOM) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance10 (RenderingAttachmentFlagsInfoKHR) import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map (RenderingFragmentDensityMapAttachmentInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (RenderingFragmentShadingRateAttachmentInfoKHR) import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits) import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits) import Vulkan.CStruct.Extends (SomeStruct) import Vulkan.Core10.Enums.StructureType (StructureType) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_tile_memory_heap (TileMemorySizeInfoQCOM) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO)) 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_INFO)) import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(..)) import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits(..)) import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags) import Vulkan.Core10.Enums.StructureType (StructureType(..)) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdBeginRendering :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO () -- | vkCmdBeginRendering - Begin a dynamic render pass instance -- -- = Description -- -- After beginning a render pass instance, the command buffer is ready to -- record -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#drawing draw commands>. -- -- If @pRenderingInfo->flags@ includes -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT' then this -- render pass is resumed from a render pass instance that has been -- suspended earlier in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- If there is an instance of -- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM' -- included in the @pNext@ chain of 'RenderingInfo', the structure is -- ignored. -- -- == Valid Usage -- -- - #VUID-vkCmdBeginRendering-dynamicRendering-06446# The -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRendering dynamicRendering> -- feature /must/ be enabled -- -- - #VUID-vkCmdBeginRendering-commandBuffer-06068# If @commandBuffer@ is -- a secondary command buffer, and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer> -- feature is not enabled, @pRenderingInfo->flags@ /must/ not include -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' -- -- - #VUID-vkCmdBeginRendering-commandBuffer-10914# If @commandBuffer@ is -- a secondary command buffer, -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' -- /must/ not have been set in -- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@ when -- @commandBuffer@ began -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-09588# If -- @pRenderingInfo->pDepthAttachment@ is not @NULL@ and -- @pRenderingInfo->pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', when -- @pRenderingInfo->pDepthAttachment->imageView@ is accessed it /must/ -- be in the layout specified by -- @pRenderingInfo->pDepthAttachment->imageLayout@ -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-09589# If -- @pRenderingInfo->pDepthAttachment@ is not @NULL@, -- @pRenderingInfo->pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pRenderingInfo->pDepthAttachment->imageResolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and -- @pRenderingInfo->pDepthAttachment->resolveImageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pRenderingInfo->pDepthAttachment->resolveImageView@ /must/ be in -- the layout specified by -- @pRenderingInfo->pDepthAttachment->resolveImageLayout@ -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-09590# If -- @pRenderingInfo->pStencilAttachment@ is not @NULL@ and -- @pRenderingInfo->pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', when -- @pRenderingInfo->pStencilAttachment->imageView@ is accessed it -- /must/ be in the layout specified by -- @pRenderingInfo->pStencilAttachment->imageLayout@ -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-09591# If -- @pRenderingInfo->pStencilAttachment@ is not @NULL@, -- @pRenderingInfo->pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pRenderingInfo->pStencilAttachment->imageResolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and -- @pRenderingInfo->pStencilAttachment->resolveImageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pRenderingInfo->pStencilAttachment->resolveImageView@ /must/ be in -- the layout specified by -- @pRenderingInfo->pStencilAttachment->resolveImageLayout@ -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-09592# For each element of -- @pRenderingInfo->pColorAttachments@, if @imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', when that image view is -- accessed it /must/ be in the layout specified by the @imageLayout@ -- member of that same element of @pRenderingInfo->pColorAttachments@ -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-09593# For each element of -- @pRenderingInfo->pColorAttachments@, if either @imageResolveMode@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- or @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and -- @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and -- @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @resolveImageView@ /must/ be in the layout specified by -- @resolveImageLayout@ -- -- - #VUID-vkCmdBeginRendering-flags-10641# If -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' -- is included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@, -- @commandBuffer@ /must/ not have been recorded with -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' -- -- - #VUID-vkCmdBeginRendering-flags-10642# -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@ -- /must/ not include -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM' -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-11750# If -- @pRenderingInfo->flags@ contains -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR', -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10> -- /must/ be enabled -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-11751# If -- @pRenderingInfo->flags@ does not contain -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR', -- attachments /must/ not specify -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' -- -- - #VUID-vkCmdBeginRendering-imageView-12276# If -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@ -- is not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', when -- @imageView@ is accessed it /must/ be in the layout specified by -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageLayout@ -- -- - #VUID-vkCmdBeginRendering-imageView-12277# If -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@ -- is not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', when -- @imageView@ is accessed it /must/ be in the layout specified by -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageLayout@ -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdBeginRendering-commandBuffer-parameter# @commandBuffer@ -- /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdBeginRendering-pRenderingInfo-parameter# @pRenderingInfo@ -- /must/ be a valid pointer to a valid 'RenderingInfo' structure -- -- - #VUID-vkCmdBeginRendering-commandBuffer-recording# @commandBuffer@ -- /must/ be in the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> -- -- - #VUID-vkCmdBeginRendering-commandBuffer-cmdpool# The -- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdBeginRendering-renderpass# This command /must/ only be -- called outside of a render pass instance -- -- - #VUID-vkCmdBeginRendering-suspended# This command /must/ not be -- called between suspended render pass instances -- -- - #VUID-vkCmdBeginRendering-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Outside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | State | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdBeginRendering is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingInfo' cmdBeginRendering :: forall a io . (Extendss RenderingInfo a, PokeChain a, MonadIO io) => -- | @commandBuffer@ is the command buffer in which to record the command. CommandBuffer -> -- | @pRenderingInfo@ is a pointer to a 'RenderingInfo' structure specifying -- details of the render pass instance to begin. (RenderingInfo a) -> io () cmdBeginRendering :: forall (a :: [*]) (io :: * -> *). (Extendss RenderingInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfo a -> io () cmdBeginRendering CommandBuffer commandBuffer RenderingInfo a renderingInfo = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> (ContT () IO () -> IO ()) -> ContT () IO () -> io () forall b c a. (b -> c) -> (a -> b) -> a -> c . ContT () IO () -> IO () forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdBeginRenderingPtr :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) vkCmdBeginRenderingPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) pVkCmdBeginRendering (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) IO () -> ContT () IO () forall (m :: * -> *) a. Monad m => m a -> ContT () m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO () forall a b. (a -> b) -> a -> b $ Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) vkCmdBeginRenderingPtr FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdBeginRendering is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdBeginRendering' :: Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO () vkCmdBeginRendering' = FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO () mkVkCmdBeginRendering FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) vkCmdBeginRenderingPtr pRenderingInfo <- ((Ptr (RenderingInfo a) -> IO ()) -> IO ()) -> ContT () IO (Ptr (RenderingInfo a)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (RenderingInfo a) -> IO ()) -> IO ()) -> ContT () IO (Ptr (RenderingInfo a))) -> ((Ptr (RenderingInfo a) -> IO ()) -> IO ()) -> ContT () IO (Ptr (RenderingInfo a)) forall a b. (a -> b) -> a -> b $ RenderingInfo a -> (Ptr (RenderingInfo a) -> IO ()) -> IO () forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b forall b. RenderingInfo a -> (Ptr (RenderingInfo a) -> IO b) -> IO b withCStruct (RenderingInfo a renderingInfo) lift $ traceAroundEvent "vkCmdBeginRendering" (vkCmdBeginRendering' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderingInfo)) pure $ () -- | This function will call the supplied action between calls to -- 'cmdBeginRendering' and 'cmdEndRendering' -- -- Note that 'cmdEndRendering' is *not* called if an exception is thrown by -- the inner action. cmdUseRendering :: forall a io r . (Extendss RenderingInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfo a -> io r -> io r cmdUseRendering :: forall (a :: [*]) (io :: * -> *) r. (Extendss RenderingInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfo a -> io r -> io r cmdUseRendering CommandBuffer commandBuffer RenderingInfo a pRenderingInfo io r a = (CommandBuffer -> RenderingInfo a -> io () forall (a :: [*]) (io :: * -> *). (Extendss RenderingInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfo a -> io () cmdBeginRendering CommandBuffer commandBuffer RenderingInfo a pRenderingInfo) io () -> io r -> io r forall a b. io a -> io b -> io b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> io r a io r -> io () -> io r forall a b. io a -> io b -> io a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* (CommandBuffer -> io () forall (io :: * -> *). MonadIO io => CommandBuffer -> io () cmdEndRendering CommandBuffer commandBuffer) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif "dynamic" mkVkCmdEndRendering :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO () -- | vkCmdEndRendering - End a dynamic render pass instance -- -- = Description -- -- If the value of @pRenderingInfo->flags@ used to begin this render pass -- instance included -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_SUSPENDING_BIT', then -- this render pass is suspended and will be resumed later in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>. -- -- There is no implicit ordering between separate render passes, even in -- the same command buffer, and even when the attachments match. Some -- applications rely on the continuation of -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-order rasterization order> -- between multiple render passes with attachments defined in the same way, -- in order to perform non-rendering operations (such as copies or compute -- operations) between draw calls, but this has never been required by the -- specification. There is also no explicit barrier currently in the API -- that provides the guarantee that applications rely on without additional -- performance penalties. -- -- New applications should avoid relying on this ordering until an -- appropriate barrier is added to the API. -- -- Implementations where applications are performing this splitting are -- encouraged to continue supporting this guarantee until a suitable -- barrier is added to the API. -- -- Existing applications relying on this ordering should expect that it -- will continue working on platforms where it currently does. Once a new -- extension adds support for a new barrier, developers are encouraged to -- adapt their applications to use this when available. -- -- == Valid Usage -- -- - #VUID-vkCmdEndRendering-None-06161# The current render pass instance -- /must/ have been begun with 'cmdBeginRendering' -- -- - #VUID-vkCmdEndRendering-commandBuffer-06162# The current render pass -- instance /must/ have been begun in @commandBuffer@ -- -- - #VUID-vkCmdEndRendering-None-06781# This command /must/ not be -- recorded when transform feedback is active -- -- - #VUID-vkCmdEndRendering-None-06999# If -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'* was called -- within the render pass, the corresponding -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery'* /must/ have been -- called subsequently within the same subpass -- -- - #VUID-vkCmdEndRendering-None-10645# This command /must/ not be -- recorded when -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-per-tile-execution-model per-tile execution model> -- is enabled -- -- == Valid Usage (Implicit) -- -- - #VUID-vkCmdEndRendering-commandBuffer-parameter# @commandBuffer@ -- /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle -- -- - #VUID-vkCmdEndRendering-commandBuffer-recording# @commandBuffer@ -- /must/ be in the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> -- -- - #VUID-vkCmdEndRendering-commandBuffer-cmdpool# The -- 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was -- allocated from /must/ support -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations -- -- - #VUID-vkCmdEndRendering-renderpass# This command /must/ only be -- called inside of a render pass instance -- -- - #VUID-vkCmdEndRendering-suspended# This command /must/ not be called -- between suspended render pass instances -- -- - #VUID-vkCmdEndRendering-videocoding# This command /must/ only be -- called outside of a video coding scope -- -- == Host Synchronization -- -- - Host access to @commandBuffer@ /must/ be externally synchronized -- -- - Host access to the 'Vulkan.Core10.Handles.CommandPool' that -- @commandBuffer@ was allocated from /must/ be externally synchronized -- -- == Command Properties -- -- \' -- -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> | -- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+ -- | Primary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | Action | -- | Secondary | | | | State | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -- -- == Conditional Rendering -- -- vkCmdEndRendering is not affected by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering> -- -- = 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_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.Handles.CommandBuffer' cmdEndRendering :: forall io . (MonadIO io) => -- | @commandBuffer@ is the command buffer in which to record the command. CommandBuffer -> io () cmdEndRendering :: forall (io :: * -> *). MonadIO io => CommandBuffer -> io () cmdEndRendering CommandBuffer commandBuffer = IO () -> io () forall a. IO a -> io a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> io ()) -> IO () -> io () forall a b. (a -> b) -> a -> b $ do let vkCmdEndRenderingPtr :: FunPtr (Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderingPtr = DeviceCmds -> FunPtr (Ptr CommandBuffer_T -> IO ()) pVkCmdEndRendering (case CommandBuffer commandBuffer of CommandBuffer{DeviceCmds deviceCmds :: CommandBuffer -> DeviceCmds deviceCmds :: DeviceCmds deviceCmds} -> DeviceCmds deviceCmds) Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (FunPtr (Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderingPtr FunPtr (Ptr CommandBuffer_T -> IO ()) -> FunPtr (Ptr CommandBuffer_T -> IO ()) -> Bool forall a. Eq a => a -> a -> Bool /= FunPtr (Ptr CommandBuffer_T -> IO ()) forall a. FunPtr a nullFunPtr) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ IOException -> IO () forall e a. (HasCallStack, Exception e) => e -> IO a throwIO (IOException -> IO ()) -> IOException -> IO () forall a b. (a -> b) -> a -> b $ Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe String -> IOException IOError Maybe Handle forall a. Maybe a Nothing IOErrorType InvalidArgument String "" String "The function pointer for vkCmdEndRendering is null" Maybe CInt forall a. Maybe a Nothing Maybe String forall a. Maybe a Nothing let vkCmdEndRendering' :: Ptr CommandBuffer_T -> IO () vkCmdEndRendering' = FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO () mkVkCmdEndRendering FunPtr (Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderingPtr String -> IO () -> IO () forall a. String -> IO a -> IO a traceAroundEvent String "vkCmdEndRendering" (Ptr CommandBuffer_T -> IO () vkCmdEndRendering' (CommandBuffer -> Ptr CommandBuffer_T commandBufferHandle (CommandBuffer commandBuffer))) () -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (() -> IO ()) -> () -> IO () forall a b. (a -> b) -> a -> b $ () -- | VkPipelineRenderingCreateInfo - Structure specifying attachment formats -- -- = Description -- -- When a pipeline is created without a 'Vulkan.Core10.Handles.RenderPass', -- if the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo' includes -- this structure, it specifies the view mask and format of attachments -- used for rendering. If this structure is not specified, and the pipeline -- does not include a 'Vulkan.Core10.Handles.RenderPass', @viewMask@ and -- @colorAttachmentCount@ are @0@, and @depthAttachmentFormat@ and -- @stencilAttachmentFormat@ are -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'. If a graphics pipeline is -- created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters of -- this structure are ignored. -- -- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of -- @pColorAttachmentFormats@ is -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the -- corresponding attachment is unused within the render pass. Valid formats -- indicate that an attachment /can/ be used - but it is still valid to set -- the attachment to @NULL@ when beginning rendering. -- -- If the render pass is going to be used with an external format resolve -- attachment, a -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' -- structure /must/ also be included in the @pNext@ chain of -- 'Vulkan.Core10.GraphicsPipeline.GraphicsPipelineCreateInfo', defining -- the external format of the resolve attachment that will be used. -- -- == 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_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.Enums.Format.Format', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PipelineRenderingCreateInfo = PipelineRenderingCreateInfo { -- | @viewMask@ is a bitfield of view indices describing which views are -- active during rendering. It /must/ match 'RenderingInfo'::@viewMask@ -- when rendering. PipelineRenderingCreateInfo -> Word32 viewMask :: Word32 , -- | @pColorAttachmentFormats@ is a pointer to an array of -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color -- attachments used in this pipeline. PipelineRenderingCreateInfo -> Vector Format colorAttachmentFormats :: Vector Format , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value -- defining the format of the depth attachment used in this pipeline. PipelineRenderingCreateInfo -> Format depthAttachmentFormat :: Format , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value -- defining the format of the stencil attachment used in this pipeline. PipelineRenderingCreateInfo -> Format stencilAttachmentFormat :: Format } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (PipelineRenderingCreateInfo) #endif deriving instance Show PipelineRenderingCreateInfo instance ToCStruct PipelineRenderingCreateInfo where withCStruct :: forall b. PipelineRenderingCreateInfo -> (Ptr PipelineRenderingCreateInfo -> IO b) -> IO b withCStruct PipelineRenderingCreateInfo x Ptr PipelineRenderingCreateInfo -> IO b f = Int -> (Ptr PipelineRenderingCreateInfo -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 40 ((Ptr PipelineRenderingCreateInfo -> IO b) -> IO b) -> (Ptr PipelineRenderingCreateInfo -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr PipelineRenderingCreateInfo p -> Ptr PipelineRenderingCreateInfo -> PipelineRenderingCreateInfo -> IO b -> IO b forall b. Ptr PipelineRenderingCreateInfo -> PipelineRenderingCreateInfo -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PipelineRenderingCreateInfo p PipelineRenderingCreateInfo x (Ptr PipelineRenderingCreateInfo -> IO b f Ptr PipelineRenderingCreateInfo p) pokeCStruct :: forall b. Ptr PipelineRenderingCreateInfo -> PipelineRenderingCreateInfo -> IO b -> IO b pokeCStruct Ptr PipelineRenderingCreateInfo p PipelineRenderingCreateInfo{Word32 Vector Format Format viewMask :: PipelineRenderingCreateInfo -> Word32 colorAttachmentFormats :: PipelineRenderingCreateInfo -> Vector Format depthAttachmentFormat :: PipelineRenderingCreateInfo -> Format stencilAttachmentFormat :: PipelineRenderingCreateInfo -> Format viewMask :: Word32 colorAttachmentFormats :: Vector Format depthAttachmentFormat :: Format stencilAttachmentFormat :: Format ..} IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr Word32 -> Word32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) (Word32 viewMask) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr Word32 -> Word32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) ((Int -> Word32 forall a b. (Integral a, Num b) => a -> b fromIntegral (Vector Format -> Int forall a. Vector a -> Int Data.Vector.length (Vector Format -> Int) -> Vector Format -> Int forall a b. (a -> b) -> a -> b $ (Vector Format colorAttachmentFormats)) :: Word32)) pPColorAttachmentFormats' <- ((Ptr Format -> IO b) -> IO b) -> ContT b IO (Ptr Format) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr Format -> IO b) -> IO b) -> ContT b IO (Ptr Format)) -> ((Ptr Format -> IO b) -> IO b) -> ContT b IO (Ptr Format) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @Format ((Vector Format -> Int forall a. Vector a -> Int Data.Vector.length (Vector Format colorAttachmentFormats)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 4) lift $ Data.Vector.imapM_ (\Int i Format e -> Ptr Format -> Format -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Format pPColorAttachmentFormats' Ptr Format -> Int -> Ptr Format forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 4 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Format) (Format e)) (colorAttachmentFormats) lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Format))) (pPColorAttachmentFormats') lift $ poke ((p `plusPtr` 32 :: Ptr Format)) (depthAttachmentFormat) lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (stencilAttachmentFormat) lift $ f cStructSize :: Int cStructSize = Int 40 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr PipelineRenderingCreateInfo -> IO b -> IO b pokeZeroCStruct Ptr PipelineRenderingCreateInfo p IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr Word32 -> Word32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) (Word32 forall a. Zero a => a zero) Ptr Format -> Format -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr Format forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 32 :: Ptr Format)) (Format forall a. Zero a => a zero) Ptr Format -> Format -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr Format forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 36 :: Ptr Format)) (Format forall a. Zero a => a zero) IO b f instance FromCStruct PipelineRenderingCreateInfo where peekCStruct :: Ptr PipelineRenderingCreateInfo -> IO PipelineRenderingCreateInfo peekCStruct Ptr PipelineRenderingCreateInfo p = do viewMask <- forall a. Storable a => Ptr a -> IO a peek @Word32 ((Ptr PipelineRenderingCreateInfo p Ptr PipelineRenderingCreateInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Word32)) colorAttachmentCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32)) pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 24 :: Ptr (Ptr Format))) pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\Int i -> forall a. Storable a => Ptr a -> IO a peek @Format ((Ptr Format pColorAttachmentFormats Ptr Format -> Int -> Ptr Format forall a. Ptr a -> Int -> Ptr a `advancePtrBytes` (Int 4 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Format))) depthAttachmentFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format)) stencilAttachmentFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format)) pure $ PipelineRenderingCreateInfo viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat instance Zero PipelineRenderingCreateInfo where zero :: PipelineRenderingCreateInfo zero = Word32 -> Vector Format -> Format -> Format -> PipelineRenderingCreateInfo PipelineRenderingCreateInfo Word32 forall a. Zero a => a zero Vector Format forall a. Monoid a => a mempty Format forall a. Zero a => a zero Format forall a. Zero a => a zero -- | VkRenderingInfo - Structure specifying render pass instance begin info -- -- = Description -- -- If @viewMask@ is not @0@, multiview is enabled. -- -- If there is an instance of -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- included in the @pNext@ chain and its @deviceRenderAreaCount@ member is -- not @0@, then @renderArea@ is ignored, and the render area is defined -- per-device by that structure. -- -- If multiview is enabled, and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas> -- feature is enabled, and there is an instance of -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM' -- included in the @pNext@ chain with @perViewRenderAreaCount@ not equal to -- @0@, then the elements of -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM'::@pPerViewRenderAreas@ -- override @renderArea@ and define a render area for each view. In this -- case, @renderArea@ /must/ be an area at least as large as the union of -- all the per-view render areas. -- -- Each element of the @pColorAttachments@ array corresponds to an output -- location in the shader, i.e. if the shader declares an output variable -- decorated with a @Location@ value of __X__, then it uses the attachment -- provided in @pColorAttachments@[__X__]. If the @imageView@ member of any -- element of @pColorAttachments@ is -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- writes to the corresponding location by a fragment are discarded. -- -- The @aspectMask@ of any image view specified for @pDepthAttachment@ or -- @pStencilAttachment@ is ignored. Instead, depth attachments are -- automatically treated as if -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' was -- specified for their aspect masks, and stencil attachments are -- automatically treated as if -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' was -- specified for their aspect masks. -- -- == Valid Usage -- -- - #VUID-VkRenderingInfo-viewMask-06069# If @viewMask@ is @0@, -- @layerCount@ /must/ not be @0@ -- -- - #VUID-VkRenderingInfo-multisampledRenderToSingleSampled-06857# If -- none of the following are enabled: -- -- - The @VK_AMD_mixed_attachment_samples@ extension -- -- - The @VK_NV_framebuffer_mixed_samples@ extension -- -- - The -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature -- -- @imageView@ members of @pDepthAttachment@, @pStencilAttachment@, and -- elements of @pColorAttachments@ that are not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with the same @sampleCount@ -- -- - #VUID-VkRenderingInfo-imageView-09429# @imageView@ members of -- elements of @pColorAttachments@ that are not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created -- with the same @sampleCount@ , if the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multisampledRenderToSingleSampled multisampledRenderToSingleSampled> -- feature is not enabled -- -- - #VUID-VkRenderingInfo-None-08994# If -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'::@deviceRenderAreaCount@ -- is 0, @renderArea.extent.width@ /must/ be greater than 0 -- -- - #VUID-VkRenderingInfo-None-08995# If -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'::@deviceRenderAreaCount@ -- is 0, @renderArea.extent.height@ /must/ be greater than 0 -- -- - #VUID-VkRenderingInfo-imageView-06858# If -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled> -- is enabled, then all attachments referenced by @imageView@ members -- of @pDepthAttachment@, @pStencilAttachment@, and elements of -- @pColorAttachments@ that are not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a sample count -- that is either -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' or -- equal to -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT'::@rasterizationSamples@ -- -- - #VUID-VkRenderingInfo-imageView-06859# If -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#subpass-multisampledrendertosinglesampled multisampled-render-to-single-sampled> -- is enabled, then all attachments referenced by @imageView@ members -- of @pDepthAttachment@, @pStencilAttachment@, and elements of -- @pColorAttachments@ that are not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and have a sample count of -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' /must/ -- have been created with -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT' -- in their 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ -- -- - #VUID-VkRenderingInfo-pNext-06077# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, -- @renderArea.offset.x@ /must/ be greater than or equal to 0 -- -- - #VUID-VkRenderingInfo-pNext-06078# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, -- @renderArea.offset.y@ /must/ be greater than or equal to 0 -- -- - #VUID-VkRenderingInfo-pNext-07815# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, the sum of -- @renderArea.extent.width@ and @renderArea.offset.x@ /must/ be less -- than or equal to -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth> -- -- - #VUID-VkRenderingInfo-pNext-07816# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, the sum of -- @renderArea.extent.height@ and @renderArea.offset.y@ /must/ be less -- than or equal to -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferHeight> -- -- - #VUID-VkRenderingInfo-pNext-06079# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, the width of -- the @imageView@ member of each element of @pColorAttachments@, -- @pDepthAttachment@, or @pStencilAttachment@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or -- equal to @renderArea.offset.x@ + @renderArea.extent.width@ -- -- - #VUID-VkRenderingInfo-pNext-06080# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, the height of -- the @imageView@ member of each element of @pColorAttachments@, -- @pDepthAttachment@, or @pStencilAttachment@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or -- equal to @renderArea.offset.y@ + @renderArea.extent.height@ -- -- - #VUID-VkRenderingInfo-pNext-06083# If the @pNext@ chain contains -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo', -- the width of the @imageView@ member of any element of -- @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@ -- that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be -- greater than or equal to the sum of the @offset.x@ and -- @extent.width@ members of each element of @pDeviceRenderAreas@ -- -- - #VUID-VkRenderingInfo-pNext-06084# If the @pNext@ chain contains -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo', -- the height of the @imageView@ member of any element of -- @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@ -- that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be -- greater than or equal to the sum of the @offset.y@ and -- @extent.height@ members of each element of @pDeviceRenderAreas@ -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06085# If neither -- @pDepthAttachment@ or @pStencilAttachment@ are @NULL@ and the -- @imageView@ member of either structure is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @imageView@ member of -- each structure /must/ be the same -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06086# If neither -- @pDepthAttachment@ or @pStencilAttachment@ are @NULL@, and the -- @resolveMode@ member of each is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the -- @resolveImageView@ member of each structure /must/ be the same -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06087# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', that @imageView@ /must/ -- have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- usage flag set -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-09476# If -- @colorAttachmentCount@ is not @0@ and there is an element of -- @pColorAttachments@ with either its @resolveMode@ member set to -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- or its @imageView@ member not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and its @resolveMode@ -- member not set to -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the -- @resolveImageView@ member of that element of @pColorAttachments@ -- /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- usage flag set -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06547# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pDepthAttachment->imageView@ /must/ have been created with a format -- that includes a depth component -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06088# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pDepthAttachment->imageView@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #VUID-VkRenderingInfo-pDepthAttachment-09477# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pDepthAttachment->resolveImageView@ /must/ have been created with -- the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #VUID-VkRenderingInfo-pStencilAttachment-06548# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pStencilAttachment->imageView@ /must/ have been created with a -- format that includes a stencil aspect -- -- - #VUID-VkRenderingInfo-pStencilAttachment-06089# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pStencilAttachment->imageView@ /must/ have been created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #VUID-VkRenderingInfo-pStencilAttachment-09478# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pStencilAttachment->resolveImageView@ /must/ have been created with -- the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' -- usage flag set -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06090# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of -- that element of @pColorAttachments@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06091# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@ -- member of that element of @pColorAttachments@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its -- @resolveImageLayout@ member /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06092# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pDepthAttachment->layout@ -- /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06093# If @pDepthAttachment@ -- is not @NULL@, @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pDepthAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pDepthAttachment->resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pStencilAttachment-06094# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pStencilAttachment->layout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' -- -- - #VUID-VkRenderingInfo-flags-11514# If @flags@ contains -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT' -- or -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_FRAGMENT_REGION_BIT_EXT', -- then the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-customResolve customResolve> -- feature /must/ enabled -- -- - #VUID-VkRenderingInfo-pColorAttachments-11515# For any element of -- @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@, if -- @resolveMode@ contains -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT', -- then @flags@ /must/ contain -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT' -- -- - #VUID-VkRenderingInfo-flags-11516# If @flags@ contains -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT', -- then for any element of @pColorAttachments@, @pDepthAttachment@, or -- @pStencilAttachment@, @resolveMode@ /must/ be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT' -- or 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' -- -- - #VUID-VkRenderingInfo-pStencilAttachment-06095# If -- @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@ -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pStencilAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pStencilAttachment->resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' -- -- - #VUID-VkRenderingInfo-layerCount-07817# @layerCount@ /must/ be less -- than or equal to -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers> -- -- - #VUID-VkRenderingInfo-viewMask-10859# If @viewMask@ is @0@, Each -- @pColorAttachment->imageView@ and -- @pColorAttachment->resolveImageView@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@ -- that is greater than or equal to 'RenderingInfo'::@layerCount@ -- -- - #VUID-VkRenderingInfo-viewMask-10860# If @viewMask@ is @0@, Each -- @pDepthAttachment->imageView@ and -- @pDepthAttachment->resolveImageView@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@ -- that is greater than or equal to 'RenderingInfo'::@layerCount@ -- -- - #VUID-VkRenderingInfo-viewMask-10861# If @viewMask@ is @0@, Each -- @pStencilAttachment->imageView@ and -- @pStencilAttachment->resolveImageView@ that is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have a @layerCount@ -- that is greater than or equal to 'RenderingInfo'::@layerCount@ -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06096# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of -- that element of @pColorAttachments@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06097# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@ -- member of that element of @pColorAttachments@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its -- @resolveImageLayout@ member /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06098# If @pDepthAttachment@ -- is not @NULL@, @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pDepthAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pDepthAttachment->resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pStencilAttachment-06099# If -- @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@ -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pStencilAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pStencilAttachment->resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06100# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of -- that element of @pColorAttachments@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL', -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06101# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@ -- member of that element of @pColorAttachments@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its -- @resolveImageLayout@ member /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL', -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pDepthAttachment-07732# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @pDepthAttachment->layout@ -- /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pDepthAttachment-07733# If @pDepthAttachment@ -- is not @NULL@, @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pDepthAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pDepthAttachment->resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pStencilAttachment-07734# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pStencilAttachment->layout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pStencilAttachment-07735# If -- @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@ -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pStencilAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pStencilAttachment->resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06102# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pDepthAttachment->resolveMode@ /must/ be one of the bits set in -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedDepthResolveModes@ -- -- - #VUID-VkRenderingInfo-pStencilAttachment-06103# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pStencilAttachment->resolveMode@ /must/ be one of the bits set in -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedStencilResolveModes@ -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06104# If @pDepthAttachment@ -- or @pStencilAttachment@ are both not @NULL@, -- @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@ -- are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', the @resolveMode@ of both -- structures /must/ be the same value -- -- - #VUID-VkRenderingInfo-pDepthAttachment-06105# If @pDepthAttachment@ -- or @pStencilAttachment@ are both not @NULL@, -- @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@ -- are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', and the @resolveMode@ of -- neither structure is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the -- @resolveMode@ of both structures /must/ be the same value -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-06106# -- @colorAttachmentCount@ /must/ be less than or equal to -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@ -- -- - #VUID-VkRenderingInfo-imageView-06107# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages fragmentDensityMapNonSubsampledImages> -- feature is not enabled, valid @imageView@ and @resolveImageView@ -- members of @pDepthAttachment@, @pStencilAttachment@, and each -- element of @pColorAttachments@ /must/ be a -- 'Vulkan.Core10.Handles.ImageView' created with -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' -- -- - #VUID-VkRenderingInfo-imageView-06108# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@, -- @imageView@ /must/ have a @layerCount@ greater than or equal to the -- index of the most significant bit in @viewMask@ -- -- - #VUID-VkRenderingInfo-imageView-06109# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@, -- @imageView@ /must/ have a @layerCount@ equal to @1@ -- -- - #VUID-VkRenderingInfo-pNext-06112# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0 and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- width greater than or equal to -- \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\) -- -- - #VUID-VkRenderingInfo-pNext-06114# If the @pNext@ chain does not -- contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0 and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- height greater than or equal to -- \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\) -- -- - #VUID-VkRenderingInfo-pNext-06113# If the @pNext@ chain contains a -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- structure, its @deviceRenderAreaCount@ member is not 0, and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- width greater than or equal to -- \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\) -- for each element of @pDeviceRenderAreas@ -- -- - #VUID-VkRenderingInfo-pNext-06115# If the @pNext@ chain contains a -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- structure, its @deviceRenderAreaCount@ member is not 0, and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- height greater than or equal to -- \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\) -- for each element of @pDeviceRenderAreas@ -- -- - #VUID-VkRenderingInfo-imageView-06116# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to -- the @imageView@ or @resolveImageView@ member of @pDepthAttachment@, -- @pStencilAttachment@, or any element of @pColorAttachments@ -- -- - #VUID-VkRenderingInfo-flags-10826# If @flags@ contains -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE', -- then @layerCount@ /must/ be less than or equal to -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxFragmentDensityMapLayers maxFragmentDensityMapLayers> -- -- - #VUID-VkRenderingInfo-fragmentDensityMapLayered-10827# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-fragmentDensityMapLayered fragmentDensityMapLayered> -- feature is not enabled, @flags@ /must/ not contain -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE' -- -- - #VUID-VkRenderingInfo-pNext-06119# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- feature is not enabled or the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess> -- limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@ -- member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure was created with -- 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@ -- greater than 0, the @pNext@ chain does not contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0, and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- width greater than or equal to -- \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\) -- -- - #VUID-VkRenderingInfo-pNext-06121# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- feature is not enabled or the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess> -- limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@ -- member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure was created with -- 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@ -- greater than 0, the @pNext@ chain does not contain -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- or its @deviceRenderAreaCount@ member is equal to 0 and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- height greater than or equal to -- \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\) -- -- - #VUID-VkRenderingInfo-pNext-06120# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- feature is not enabled or the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess> -- limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@ -- member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure was created with -- 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@ -- greater than 0, the @pNext@ chain contains a -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- structure, its @deviceRenderAreaCount@ member is not 0, and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- width greater than or equal to -- \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\) -- for each element of @pDeviceRenderAreas@ -- -- - #VUID-VkRenderingInfo-pNext-06122# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- feature is not enabled or the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-robustFragmentShadingRateAttachmentAccess robustFragmentShadingRateAttachmentAccess> -- limit is 'Vulkan.Core10.FundamentalTypes.FALSE' or the @imageView@ -- member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure was created with -- 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@ -- greater than 0, the @pNext@ chain contains a -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo' -- structure, its @deviceRenderAreaCount@ member is not 0, and the -- @imageView@ member of a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a -- height greater than or equal to -- \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\) -- for each element of @pDeviceRenderAreas@ -- -- - #VUID-VkRenderingInfo-imageView-06123# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@, -- @imageView@ /must/ have a @layerCount@ that is either equal to @1@ -- or greater than or equal to 'RenderingInfo'::@layerCount@ -- -- - #VUID-VkRenderingInfo-imageView-06124# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@, -- @imageView@ /must/ have a @layerCount@ that either equal to @1@ or -- greater than or equal to the index of the most significant bit in -- @viewMask@ -- -- - #VUID-VkRenderingInfo-imageView-06125# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to -- the @imageView@ or @resolveImageView@ member of @pDepthAttachment@, -- @pStencilAttachment@, or any element of @pColorAttachments@ -- -- - #VUID-VkRenderingInfo-imageView-06126# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to -- the @imageView@ member of a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain -- -- - #VUID-VkRenderingInfo-multiview-06127# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview> -- feature is not enabled, @viewMask@ /must/ be @0@ -- -- - #VUID-VkRenderingInfo-viewMask-06128# The index of the most -- significant bit in @viewMask@ /must/ be less than -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount> -- -- - #VUID-VkRenderingInfo-perViewRenderAreaCount-07857# If the -- @perViewRenderAreaCount@ member of a -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM' -- structure included in the @pNext@ chain is not @0@, then the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiviewPerViewRenderAreas multiviewPerViewRenderAreas> -- feature /must/ be enabled -- -- - #VUID-VkRenderingInfo-perViewRenderAreaCount-07858# If the -- @perViewRenderAreaCount@ member of a -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM' -- structure included in the @pNext@ chain is not @0@, then -- @renderArea@ /must/ specify a render area that includes the union of -- all per view render areas -- -- - #VUID-VkRenderingInfo-None-09044# Valid attachments specified by -- this structure /must/ not be bound to memory locations that are -- bound to any other valid attachments specified by this structure -- -- - #VUID-VkRenderingInfo-flags-10012# If @flags@ includes -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_INLINE_BIT_KHR' -- then at least one of the following features /must/ be enabled -- -- - <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance7 maintenance7> -- -- - <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-nestedCommandBuffer nestedCommandBuffer> -- -- - #VUID-VkRenderingInfo-pDepthAttachment-09318# -- @pDepthAttachment->resolveMode@ /must/ not be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- -- - #VUID-VkRenderingInfo-pStencilAttachment-09319# -- @pStencilAttachment->resolveMode@ /must/ not be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-09320# If -- @colorAttachmentCount@ is not @1@, the @resolveMode@ member of any -- element of @pColorAttachments@ /must/ not be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- -- - #VUID-VkRenderingInfo-resolveMode-09321# If the @resolveMode@ of any -- element of @pColorAttachments@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@ -- /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-VkRenderingInfo-resolveMode-09322# If the @resolveMode@ of any -- element of @pColorAttachments@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@ -- /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-VkRenderingInfo-pNext-09535# If the @pNext@ chain contains a -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM' -- structure, the union of stripe areas defined by the elements of -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM'::@pStripeInfos@ -- /must/ cover the @renderArea@ -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-09479# If -- @colorAttachmentCount@ is not @0@ and the @imageView@ member of an -- element of @pColorAttachments@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', that @imageView@ /must/ -- have been created with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-colorAttachmentCount-09480# If -- @colorAttachmentCount@ is not @0@, and there is an element of -- @pColorAttachments@ with either its @resolveMode@ member set to -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- or its @imageView@ member not set to -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' and its @resolveMode@ -- member not set to -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the -- @resolveImageView@ member of that element of @pColorAttachments@ -- /must/ have been created with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-pDepthAttachment-09481# If @pDepthAttachment@ -- is not @NULL@ and @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pDepthAttachment->imageView@ /must/ have been created with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-pDepthAttachment-09482# If @pDepthAttachment@ -- is not @NULL@, @pDepthAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pDepthAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pDepthAttachment->resolveImageView@ /must/ have been created with -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-pStencilAttachment-09483# If -- @pStencilAttachment@ is not @NULL@ and -- @pStencilAttachment->imageView@ is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @pStencilAttachment->imageView@ /must/ have been created with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-pStencilAttachment-09484# If -- @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@ -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and -- @pStencilAttachment->resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @pStencilAttachment->resolveImageView@ /must/ have been created with -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-imageView-09485# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been -- created with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-imageView-09486# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been -- created with the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-image-views-identity-mappings identity swizzle> -- -- - #VUID-VkRenderingInfo-imageView-10643# If the @imageView@ member of -- a -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT' -- structure included in the @pNext@ chain is not -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' -- /must/ not be included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@ -- -- - #VUID-VkRenderingInfo-resolveMode-10644# If the @resolveMode@ of any -- element of @pColorAttachments@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- 'Vulkan.Extensions.VK_QCOM_tile_shading.TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM' -- /must/ not be included in -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM'::@flags@ -- -- == Valid Usage (Implicit) -- -- - #VUID-VkRenderingInfo-sType-sType# @sType@ /must/ be -- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO' -- -- - #VUID-VkRenderingInfo-pNext-pNext# Each @pNext@ member of any -- structure (including this one) in the @pNext@ chain /must/ be either -- @NULL@ or a pointer to a valid instance of -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo', -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT', -- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.MultiviewPerViewAttributesInfoNVX', -- 'Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas.MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM', -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkRenderPassPerformanceCountersByRegionBeginInfoARM VkRenderPassPerformanceCountersByRegionBeginInfoARM>, -- 'Vulkan.Extensions.VK_ARM_render_pass_striped.RenderPassStripeBeginInfoARM', -- 'Vulkan.Extensions.VK_QCOM_tile_shading.RenderPassTileShadingCreateInfoQCOM', -- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT', -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR', -- or -- 'Vulkan.Extensions.VK_QCOM_tile_memory_heap.TileMemorySizeInfoQCOM' -- -- - #VUID-VkRenderingInfo-sType-unique# The @sType@ value of each -- structure in the @pNext@ chain /must/ be unique -- -- - #VUID-VkRenderingInfo-flags-parameter# @flags@ /must/ be a valid -- combination of -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits' values -- -- - #VUID-VkRenderingInfo-pColorAttachments-parameter# If -- @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be a -- valid pointer to an array of @colorAttachmentCount@ valid -- 'RenderingAttachmentInfo' structures -- -- - #VUID-VkRenderingInfo-pDepthAttachment-parameter# If -- @pDepthAttachment@ is not @NULL@, @pDepthAttachment@ /must/ be a -- valid pointer to a valid 'RenderingAttachmentInfo' structure -- -- - #VUID-VkRenderingInfo-pStencilAttachment-parameter# If -- @pStencilAttachment@ is not @NULL@, @pStencilAttachment@ /must/ be a -- valid pointer to a valid 'RenderingAttachmentInfo' structure -- -- = 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_QCOM_tile_properties VK_QCOM_tile_properties>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'RenderingAttachmentInfo', -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlags', -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRendering', -- 'cmdBeginRendering', -- 'Vulkan.Extensions.VK_QCOM_tile_properties.getDynamicRenderingTilePropertiesQCOM' data RenderingInfo (es :: [Type]) = RenderingInfo { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure. forall (es :: [*]). RenderingInfo es -> Chain es next :: Chain es , -- | @flags@ is a bitmask of -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits'. forall (es :: [*]). RenderingInfo es -> RenderingFlags flags :: RenderingFlags , -- | @renderArea@ is the render area that is affected by the render pass -- instance. forall (es :: [*]). RenderingInfo es -> Rect2D renderArea :: Rect2D , -- | @layerCount@ is the number of layers rendered to in each attachment when -- @viewMask@ is @0@. forall (es :: [*]). RenderingInfo es -> Word32 layerCount :: Word32 , -- | @viewMask@ is a bitfield of view indices describing which views are -- active during rendering, when it is not @0@. forall (es :: [*]). RenderingInfo es -> Word32 viewMask :: Word32 , -- | @pColorAttachments@ is a pointer to an array of @colorAttachmentCount@ -- 'RenderingAttachmentInfo' structures describing any color attachments -- used. forall (es :: [*]). RenderingInfo es -> Vector (SomeStruct RenderingAttachmentInfo) colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo) , -- | @pDepthAttachment@ is a pointer to a 'RenderingAttachmentInfo' structure -- describing a depth attachment. forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) , -- | @pStencilAttachment@ is a pointer to a 'RenderingAttachmentInfo' -- structure describing a stencil attachment. forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (RenderingInfo (es :: [Type])) #endif deriving instance Show (Chain es) => Show (RenderingInfo es) instance Extensible RenderingInfo where extensibleTypeName :: String extensibleTypeName = String "RenderingInfo" setNext :: forall (ds :: [*]) (es :: [*]). RenderingInfo ds -> Chain es -> RenderingInfo es setNext RenderingInfo{Maybe (SomeStruct RenderingAttachmentInfo) Word32 Vector (SomeStruct RenderingAttachmentInfo) Rect2D RenderingFlags Chain ds next :: forall (es :: [*]). RenderingInfo es -> Chain es flags :: forall (es :: [*]). RenderingInfo es -> RenderingFlags renderArea :: forall (es :: [*]). RenderingInfo es -> Rect2D layerCount :: forall (es :: [*]). RenderingInfo es -> Word32 viewMask :: forall (es :: [*]). RenderingInfo es -> Word32 colorAttachments :: forall (es :: [*]). RenderingInfo es -> Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) next :: Chain ds flags :: RenderingFlags renderArea :: Rect2D layerCount :: Word32 viewMask :: Word32 colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) ..} Chain es next' = RenderingInfo{next :: Chain es next = Chain es next', Maybe (SomeStruct RenderingAttachmentInfo) Word32 Vector (SomeStruct RenderingAttachmentInfo) Rect2D RenderingFlags flags :: RenderingFlags renderArea :: Rect2D layerCount :: Word32 viewMask :: Word32 colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) flags :: RenderingFlags renderArea :: Rect2D layerCount :: Word32 viewMask :: Word32 colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) ..} getNext :: forall (es :: [*]). RenderingInfo es -> Chain es getNext RenderingInfo{Maybe (SomeStruct RenderingAttachmentInfo) Word32 Vector (SomeStruct RenderingAttachmentInfo) Rect2D RenderingFlags Chain es next :: forall (es :: [*]). RenderingInfo es -> Chain es flags :: forall (es :: [*]). RenderingInfo es -> RenderingFlags renderArea :: forall (es :: [*]). RenderingInfo es -> Rect2D layerCount :: forall (es :: [*]). RenderingInfo es -> Word32 viewMask :: forall (es :: [*]). RenderingInfo es -> Word32 colorAttachments :: forall (es :: [*]). RenderingInfo es -> Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) next :: Chain es flags :: RenderingFlags renderArea :: Rect2D layerCount :: Word32 viewMask :: Word32 colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) ..} = Chain es next extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingInfo e => b) -> Maybe b extends :: forall e b (proxy :: * -> *). Typeable e => proxy e -> (Extends RenderingInfo e => b) -> Maybe b extends proxy e _ Extends RenderingInfo e => b f | Just e :~: RenderPassTileShadingCreateInfoQCOM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderPassTileShadingCreateInfoQCOM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: RenderPassStripeBeginInfoARM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderPassStripeBeginInfoARM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: TileMemorySizeInfoQCOM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @TileMemorySizeInfoQCOM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: MultiviewPerViewAttributesInfoNVX Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @MultiviewPerViewAttributesInfoNVX = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: RenderingFragmentDensityMapAttachmentInfoEXT Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderingFragmentDensityMapAttachmentInfoEXT = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: RenderingFragmentShadingRateAttachmentInfoKHR Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderingFragmentShadingRateAttachmentInfoKHR = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: MultisampledRenderToSingleSampledInfoEXT Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @MultisampledRenderToSingleSampledInfoEXT = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Just e :~: DeviceGroupRenderPassBeginInfo Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @DeviceGroupRenderPassBeginInfo = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingInfo e => b f | Bool otherwise = Maybe b forall a. Maybe a Nothing instance ( Extendss RenderingInfo es , PokeChain es ) => ToCStruct (RenderingInfo es) where withCStruct :: forall b. RenderingInfo es -> (Ptr (RenderingInfo es) -> IO b) -> IO b withCStruct RenderingInfo es x Ptr (RenderingInfo es) -> IO b f = Int -> (Ptr (RenderingInfo es) -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 72 ((Ptr (RenderingInfo es) -> IO b) -> IO b) -> (Ptr (RenderingInfo es) -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr (RenderingInfo es) p -> Ptr (RenderingInfo es) -> RenderingInfo es -> IO b -> IO b forall b. Ptr (RenderingInfo es) -> RenderingInfo es -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr (RenderingInfo es) p RenderingInfo es x (Ptr (RenderingInfo es) -> IO b f Ptr (RenderingInfo es) p) pokeCStruct :: forall b. Ptr (RenderingInfo es) -> RenderingInfo es -> IO b -> IO b pokeCStruct Ptr (RenderingInfo es) p RenderingInfo{Maybe (SomeStruct RenderingAttachmentInfo) Word32 Vector (SomeStruct RenderingAttachmentInfo) Rect2D RenderingFlags Chain es next :: forall (es :: [*]). RenderingInfo es -> Chain es flags :: forall (es :: [*]). RenderingInfo es -> RenderingFlags renderArea :: forall (es :: [*]). RenderingInfo es -> Rect2D layerCount :: forall (es :: [*]). RenderingInfo es -> Word32 viewMask :: forall (es :: [*]). RenderingInfo es -> Word32 colorAttachments :: forall (es :: [*]). RenderingInfo es -> Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: forall (es :: [*]). RenderingInfo es -> Maybe (SomeStruct RenderingAttachmentInfo) next :: Chain es flags :: RenderingFlags renderArea :: Rect2D layerCount :: Word32 viewMask :: Word32 colorAttachments :: Vector (SomeStruct RenderingAttachmentInfo) depthAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) stencilAttachment :: Maybe (SomeStruct RenderingAttachmentInfo) ..} IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr (RenderingInfo es) p Ptr (RenderingInfo es) -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_RENDERING_INFO) pNext'' <- (Ptr (Chain es) -> Ptr ()) -> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> ContT b IO a -> ContT b IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Ptr (Chain es) -> Ptr () forall a b. Ptr a -> Ptr b castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())) -> (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> a -> b $ Chain es -> (Ptr (Chain es) -> IO b) -> IO b forall (es :: [*]) a. PokeChain es => Chain es -> (Ptr (Chain es) -> IO a) -> IO a forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a withChain (Chain es next) lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'' lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlags)) (flags) lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea) lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (layerCount) lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (viewMask) lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachments)) :: Word32)) pPColorAttachments' <- ContT $ allocaBytes @(RenderingAttachmentInfo _) ((Data.Vector.length (colorAttachments)) * 72) Data.Vector.imapM_ (\Int i SomeStruct RenderingAttachmentInfo e -> ((() -> IO b) -> IO b) -> ContT b IO () forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((() -> IO b) -> IO b) -> ContT b IO ()) -> ((() -> IO b) -> IO b) -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr (SomeStruct RenderingAttachmentInfo) -> SomeStruct RenderingAttachmentInfo -> IO b -> IO b forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b pokeSomeCStruct (Ptr (RenderingAttachmentInfo (ZonkAny 1)) -> Ptr (SomeStruct RenderingAttachmentInfo) forall (a :: [*] -> *) (es :: [*]). Ptr (a es) -> Ptr (SomeStruct a) forgetExtensions (Ptr (RenderingAttachmentInfo (ZonkAny 0)) pPColorAttachments' Ptr (RenderingAttachmentInfo (ZonkAny 0)) -> Int -> Ptr (RenderingAttachmentInfo w) forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 72 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr (RenderingAttachmentInfo _))) (SomeStruct RenderingAttachmentInfo e) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b forall b c a. (b -> c) -> (a -> b) -> a -> c . ((() -> IO b) -> () -> IO b forall a b. (a -> b) -> a -> b $ ())) (colorAttachments) lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (RenderingAttachmentInfo _)))) (pPColorAttachments') pDepthAttachment'' <- case (depthAttachment) of Maybe (SomeStruct RenderingAttachmentInfo) Nothing -> Ptr (RenderingAttachmentInfo '[]) -> ContT b IO (Ptr (RenderingAttachmentInfo '[])) forall a. a -> ContT b IO a forall (f :: * -> *) a. Applicative f => a -> f a pure Ptr (RenderingAttachmentInfo '[]) forall a. Ptr a nullPtr Just SomeStruct RenderingAttachmentInfo j -> forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a forall r (m :: * -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT @_ @_ @(Ptr (RenderingAttachmentInfo '[])) (((Ptr (RenderingAttachmentInfo '[]) -> IO b) -> IO b) -> ContT b IO (Ptr (RenderingAttachmentInfo '[]))) -> ((Ptr (RenderingAttachmentInfo '[]) -> IO b) -> IO b) -> ContT b IO (Ptr (RenderingAttachmentInfo '[])) forall a b. (a -> b) -> a -> b $ \Ptr (RenderingAttachmentInfo '[]) -> IO b cont -> forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => SomeStruct a -> (forall (es :: [*]). (Extendss a es, PokeChain es) => Ptr (a es) -> IO b) -> IO b withSomeCStruct @RenderingAttachmentInfo (SomeStruct RenderingAttachmentInfo j) (Ptr (RenderingAttachmentInfo '[]) -> IO b cont (Ptr (RenderingAttachmentInfo '[]) -> IO b) -> (Ptr (RenderingAttachmentInfo es) -> Ptr (RenderingAttachmentInfo '[])) -> Ptr (RenderingAttachmentInfo es) -> IO b forall b c a. (b -> c) -> (a -> b) -> a -> c . Ptr (RenderingAttachmentInfo es) -> Ptr (RenderingAttachmentInfo '[]) forall a b. Ptr a -> Ptr b castPtr) lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (RenderingAttachmentInfo _)))) pDepthAttachment'' pStencilAttachment'' <- case (stencilAttachment) of Maybe (SomeStruct RenderingAttachmentInfo) Nothing -> Ptr (RenderingAttachmentInfo '[]) -> ContT b IO (Ptr (RenderingAttachmentInfo '[])) forall a. a -> ContT b IO a forall (f :: * -> *) a. Applicative f => a -> f a pure Ptr (RenderingAttachmentInfo '[]) forall a. Ptr a nullPtr Just SomeStruct RenderingAttachmentInfo j -> forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a forall r (m :: * -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT @_ @_ @(Ptr (RenderingAttachmentInfo '[])) (((Ptr (RenderingAttachmentInfo '[]) -> IO b) -> IO b) -> ContT b IO (Ptr (RenderingAttachmentInfo '[]))) -> ((Ptr (RenderingAttachmentInfo '[]) -> IO b) -> IO b) -> ContT b IO (Ptr (RenderingAttachmentInfo '[])) forall a b. (a -> b) -> a -> b $ \Ptr (RenderingAttachmentInfo '[]) -> IO b cont -> forall (a :: [*] -> *) b. (forall (es :: [*]). (Extendss a es, PokeChain es) => ToCStruct (a es)) => SomeStruct a -> (forall (es :: [*]). (Extendss a es, PokeChain es) => Ptr (a es) -> IO b) -> IO b withSomeCStruct @RenderingAttachmentInfo (SomeStruct RenderingAttachmentInfo j) (Ptr (RenderingAttachmentInfo '[]) -> IO b cont (Ptr (RenderingAttachmentInfo '[]) -> IO b) -> (Ptr (RenderingAttachmentInfo es) -> Ptr (RenderingAttachmentInfo '[])) -> Ptr (RenderingAttachmentInfo es) -> IO b forall b c a. (b -> c) -> (a -> b) -> a -> c . Ptr (RenderingAttachmentInfo es) -> Ptr (RenderingAttachmentInfo '[]) forall a b. Ptr a -> Ptr b castPtr) lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (RenderingAttachmentInfo _)))) pStencilAttachment'' lift $ f cStructSize :: Int cStructSize = Int 72 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr (RenderingInfo es) -> IO b -> IO b pokeZeroCStruct Ptr (RenderingInfo es) p IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr (RenderingInfo es) p Ptr (RenderingInfo es) -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_RENDERING_INFO) pNext' <- (Ptr (Chain es) -> Ptr ()) -> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> ContT b IO a -> ContT b IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Ptr (Chain es) -> Ptr () forall a b. Ptr a -> Ptr b castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())) -> (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> a -> b $ forall (es :: [*]) a. PokeChain es => (Ptr (Chain es) -> IO a) -> IO a withZeroChain @es lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext' lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (zero) lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero) lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero) lift $ f instance es ~ '[] => Zero (RenderingInfo es) where zero :: RenderingInfo es zero = Chain es -> RenderingFlags -> Rect2D -> Word32 -> Word32 -> Vector (SomeStruct RenderingAttachmentInfo) -> Maybe (SomeStruct RenderingAttachmentInfo) -> Maybe (SomeStruct RenderingAttachmentInfo) -> RenderingInfo es forall (es :: [*]). Chain es -> RenderingFlags -> Rect2D -> Word32 -> Word32 -> Vector (SomeStruct RenderingAttachmentInfo) -> Maybe (SomeStruct RenderingAttachmentInfo) -> Maybe (SomeStruct RenderingAttachmentInfo) -> RenderingInfo es RenderingInfo () RenderingFlags forall a. Zero a => a zero Rect2D forall a. Zero a => a zero Word32 forall a. Zero a => a zero Word32 forall a. Zero a => a zero Vector (SomeStruct RenderingAttachmentInfo) forall a. Monoid a => a mempty Maybe (SomeStruct RenderingAttachmentInfo) forall a. Maybe a Nothing Maybe (SomeStruct RenderingAttachmentInfo) forall a. Maybe a Nothing -- | VkRenderingAttachmentInfo - Structure specifying attachment information -- -- = Description -- -- Values in @imageView@ are loaded and stored according to the values of -- @loadOp@ and @storeOp@, within the render area for each device specified -- in 'RenderingInfo'. If @imageView@ is -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- other members of this structure are ignored; writes to this attachment -- will be discarded, and no -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load>, -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store>, -- or -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations multisample resolve> -- operations will be performed. -- -- If @resolveMode@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', then -- @resolveImageView@ is ignored. If @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', and -- @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', a -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operation> -- is defined for the attachment subresource. If @resolveMode@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- limit is 'Vulkan.Core10.FundamentalTypes.TRUE', values are only -- undefined once -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load operations> -- have completed. -- -- The contents of a resolve attachment within the render area become -- undefined at the time -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT' is -- called if all of the following conditions are true: -- -- - 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT' -- is set. -- -- - The attachment sets @resolveMode@ to -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT'. -- -- This affects color, depth, and stencil attachments. In addition, there -- is an implicit -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store operation> -- of 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_STORE' for -- these attachments. -- -- The resolve mode and store operation are independent; it is valid to -- write both resolved and unresolved values, and equally valid to discard -- the unresolved values while writing the resolved ones. -- -- Store and resolve operations are only performed at the end of a render -- pass instance that does not specify the -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_SUSPENDING_BIT_KHR' -- flag. If the -- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CUSTOM_RESOLVE_BIT_EXT' -- is specified and an attachment uses the -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT' -- resolve mode, the resolve attachment will only be written by draws -- recorded following a call to -- 'Vulkan.Extensions.VK_EXT_custom_resolve.cmdBeginCustomResolveEXT'. -- -- Load operations are only performed at the beginning of a render pass -- instance that does not specify the -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_RESUMING_BIT_KHR' -- flag. -- -- Image contents at the end of a suspended render pass instance remain -- defined for access by a resuming render pass instance. -- -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- limit is 'Vulkan.Core10.FundamentalTypes.TRUE', and @resolveMode@ is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- values in the color attachment will be loaded from the resolve -- attachment at the start of rendering, and /may/ also be reloaded any -- time after a resolve occurs or the resolve attachment is written to; if -- this occurs it /must/ happen-before any writes to the color attachment -- are performed which happen-after the resolve that triggers this. If any -- color component in the external format is subsampled, values will be -- read from the nearest sample in the image when they are loaded. -- -- == Valid Usage -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06129# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has a non-integer -- color format, @resolveMode@ /must/ be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT' -- or -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06130# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has an integer -- color format, @resolveMode@ /must/ be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT' -- or -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06861# If all of the -- following are true: -- -- - @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' -- -- - the @pNext@ chain of 'RenderingInfo' does not include a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with the @multisampledRenderToSingleSampledEnable@ -- field equal to 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- @imageView@ /must/ not have a sample count of -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06862# If all of the -- following are true: -- -- - @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' -- -- - the @pNext@ chain of 'RenderingInfo' does not include a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with the @multisampledRenderToSingleSampledEnable@ -- field equal to 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- @resolveImageView@ /must/ not be -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06863# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @resolveMode@ is not -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the -- @pNext@ chain of 'RenderingInfo' includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with the @multisampledRenderToSingleSampledEnable@ field -- equal to 'Vulkan.Core10.FundamentalTypes.TRUE', and @imageView@ has -- a sample count of -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT', -- @resolveImageView@ /must/ be -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-VkRenderingAttachmentInfo-None-12256# If all of the following -- are true: -- -- - @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - @imageView@ has a sample count of -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - the @pNext@ chain of 'RenderingInfo' includes a -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT' -- structure with the @multisampledRenderToSingleSampledEnable@ -- field equal to 'Vulkan.Core10.FundamentalTypes.TRUE' -- -- then @resolveMode@ /must/ not be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06864# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @resolveImageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageView@ /must/ have a sample count of -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06865# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @resolveImageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and @resolveMode@ is -- neither -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_CUSTOM_BIT_EXT' -- nor 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @imageView@ and @resolveImageView@ /must/ have the same -- 'Vulkan.Core10.Enums.Format.Format' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06135# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/ -- not be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL', -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06136# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ZERO_INITIALIZED_EXT', -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL', -- or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06137# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' -- or -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06138# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/ -- not be -- 'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06139# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06140# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/ -- not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06141# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06142# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06143# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/ -- not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06144# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-10780# If -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop is enabled> -- for the attachment identified by @imageView@, then @imageView@ -- /must/ have been created with a @usage@ value including -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT', -- either -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- or -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT', -- and either -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06145# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/ -- not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR' -- -- - #VUID-VkRenderingAttachmentInfo-imageView-06146# If @imageView@ is -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is -- not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', -- @resolveImageLayout@ /must/ not be -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR' -- -- - #VUID-VkRenderingAttachmentInfo-externalFormatResolve-09323# If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-externalFormatResolve externalFormatResolve> -- feature is not enabled, @resolveMode@ /must/ not be -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-09324# If @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- @resolveImageView@ /must/ be a valid image view -- -- - #VUID-VkRenderingAttachmentInfo-nullColorAttachmentWithExternalFormatResolve-09325# -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- property is 'Vulkan.Core10.FundamentalTypes.TRUE' and @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- @resolveImageView@ /must/ have been created with an image with a -- @samples@ value of -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-09326# If @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- @resolveImageView@ /must/ have been created with an external format -- specified by -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-09327# If @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID', -- @resolveImageView@ /must/ have been created with a -- @subresourceRange.layerCount@ of @1@ -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-09328# If @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- is 'Vulkan.Core10.FundamentalTypes.TRUE', @imageView@ /must/ be -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-09329# If @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', @imageView@ /must/ be a -- valid 'Vulkan.Core10.Handles.ImageView' -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-09330# If @resolveMode@ -- is -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID' -- and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-nullColorAttachmentWithExternalFormatResolve nullColorAttachmentWithExternalFormatResolve> -- is 'Vulkan.Core10.FundamentalTypes.FALSE', @imageView@ /must/ have a -- format equal to the value of -- 'Vulkan.Extensions.VK_ANDROID_external_format_resolve.AndroidHardwareBufferFormatResolvePropertiesANDROID'::@colorAttachmentFormat@ -- as returned by a call to -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID' -- for the Android hardware buffer that was used to create -- @resolveImageView@ -- -- - #VUID-VkRenderingAttachmentInfo-resolveImageView-10728# If -- @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- the underlying resource must not be bound to a -- 'Vulkan.Core10.Handles.DeviceMemory' object allocated from a -- 'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM' -- property -- -- - #VUID-VkRenderingAttachmentInfo-pNext-11752# If the @pNext@ chain -- includes a -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR' -- structure, and @flags@ includes -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR', -- @imageView@ /must/ have a format using sRGB encoding -- -- - #VUID-VkRenderingAttachmentInfo-pNext-11753# If the @pNext@ chain -- includes a -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR' -- structure, and @flags@ includes -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR' -- or -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR', -- @resolveMode@ /must/ be equal to -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT' -- -- - #VUID-VkRenderingAttachmentInfo-pNext-11754# If the @pNext@ chain -- includes a -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR' -- structure, and @flags@ includes -- 'Vulkan.Extensions.VK_KHR_maintenance10.RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR', -- @imageView@ /must/ have an image that was created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- usage flag set -- -- == Valid Usage (Implicit) -- -- - #VUID-VkRenderingAttachmentInfo-sType-sType# @sType@ /must/ be -- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO' -- -- - #VUID-VkRenderingAttachmentInfo-pNext-pNext# Each @pNext@ member of -- any structure (including this one) in the @pNext@ chain /must/ be -- either @NULL@ or a pointer to a valid instance of -- 'Vulkan.Extensions.VK_KHR_unified_image_layouts.AttachmentFeedbackLoopInfoEXT' -- or -- 'Vulkan.Extensions.VK_KHR_maintenance10.RenderingAttachmentFlagsInfoKHR' -- -- - #VUID-VkRenderingAttachmentInfo-sType-unique# The @sType@ value of -- each structure in the @pNext@ chain /must/ be unique -- -- - #VUID-VkRenderingAttachmentInfo-imageView-parameter# If @imageView@ -- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ -- be a valid 'Vulkan.Core10.Handles.ImageView' handle -- -- - #VUID-VkRenderingAttachmentInfo-imageLayout-parameter# @imageLayout@ -- /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' -- value -- -- - #VUID-VkRenderingAttachmentInfo-resolveMode-parameter# If -- @resolveMode@ is not @0@, @resolveMode@ /must/ be a valid -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value -- -- - #VUID-VkRenderingAttachmentInfo-resolveImageView-parameter# If -- @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', -- @resolveImageView@ /must/ be a valid -- 'Vulkan.Core10.Handles.ImageView' handle -- -- - #VUID-VkRenderingAttachmentInfo-resolveImageLayout-parameter# -- @resolveImageLayout@ /must/ be a valid -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value -- -- - #VUID-VkRenderingAttachmentInfo-loadOp-parameter# @loadOp@ /must/ be -- a valid 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp' -- value -- -- - #VUID-VkRenderingAttachmentInfo-storeOp-parameter# @storeOp@ /must/ -- be a valid 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' -- value -- -- - #VUID-VkRenderingAttachmentInfo-clearValue-parameter# @clearValue@ -- /must/ be a valid 'Vulkan.Core10.CommandBufferBuilding.ClearValue' -- union -- -- - #VUID-VkRenderingAttachmentInfo-commonparent# Both of @imageView@, -- and @resolveImageView@ that are valid handles of non-ignored -- parameters /must/ have been created, allocated, or retrieved from -- the same 'Vulkan.Core10.Handles.Device' -- -- = 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_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp', -- 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp', -- 'Vulkan.Core10.CommandBufferBuilding.ClearValue', -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', -- 'Vulkan.Core10.Handles.ImageView', 'RenderingInfo', -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data RenderingAttachmentInfo (es :: [Type]) = RenderingAttachmentInfo { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure. forall (es :: [*]). RenderingAttachmentInfo es -> Chain es next :: Chain es , -- | @imageView@ is the image view that will be used for rendering. forall (es :: [*]). RenderingAttachmentInfo es -> ImageView imageView :: ImageView , -- | @imageLayout@ is the layout that @imageView@ will be in during -- rendering. forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout imageLayout :: ImageLayout , -- | @resolveMode@ is a -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value -- defining how data written to @imageView@ will be resolved into -- @resolveImageView@. forall (es :: [*]). RenderingAttachmentInfo es -> ResolveModeFlagBits resolveMode :: ResolveModeFlagBits , -- | @resolveImageView@ is an image view used to write resolved data at the -- end of rendering. forall (es :: [*]). RenderingAttachmentInfo es -> ImageView resolveImageView :: ImageView , -- | @resolveImageLayout@ is the layout that @resolveImageView@ will be in -- during rendering. forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout resolveImageLayout :: ImageLayout , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp' -- value defining the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-load-operations load operation> -- for the attachment. forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentLoadOp loadOp :: AttachmentLoadOp , -- | @storeOp@ is a 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' -- value defining the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-store-operations store operation> -- for the attachment. forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentStoreOp storeOp :: AttachmentStoreOp , -- | @clearValue@ is a 'Vulkan.Core10.CommandBufferBuilding.ClearValue' -- structure defining values used to clear @imageView@ when @loadOp@ is -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'. forall (es :: [*]). RenderingAttachmentInfo es -> ClearValue clearValue :: ClearValue } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (RenderingAttachmentInfo (es :: [Type])) #endif deriving instance Show (Chain es) => Show (RenderingAttachmentInfo es) instance Extensible RenderingAttachmentInfo where extensibleTypeName :: String extensibleTypeName = String "RenderingAttachmentInfo" setNext :: forall (ds :: [*]) (es :: [*]). RenderingAttachmentInfo ds -> Chain es -> RenderingAttachmentInfo es setNext RenderingAttachmentInfo{ResolveModeFlagBits ImageLayout AttachmentStoreOp AttachmentLoadOp ImageView Chain ds ClearValue next :: forall (es :: [*]). RenderingAttachmentInfo es -> Chain es imageView :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageView imageLayout :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout resolveMode :: forall (es :: [*]). RenderingAttachmentInfo es -> ResolveModeFlagBits resolveImageView :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageView resolveImageLayout :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout loadOp :: forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentLoadOp storeOp :: forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentStoreOp clearValue :: forall (es :: [*]). RenderingAttachmentInfo es -> ClearValue next :: Chain ds imageView :: ImageView imageLayout :: ImageLayout resolveMode :: ResolveModeFlagBits resolveImageView :: ImageView resolveImageLayout :: ImageLayout loadOp :: AttachmentLoadOp storeOp :: AttachmentStoreOp clearValue :: ClearValue ..} Chain es next' = RenderingAttachmentInfo{next :: Chain es next = Chain es next', ResolveModeFlagBits ImageLayout AttachmentStoreOp AttachmentLoadOp ImageView ClearValue imageView :: ImageView imageLayout :: ImageLayout resolveMode :: ResolveModeFlagBits resolveImageView :: ImageView resolveImageLayout :: ImageLayout loadOp :: AttachmentLoadOp storeOp :: AttachmentStoreOp clearValue :: ClearValue imageView :: ImageView imageLayout :: ImageLayout resolveMode :: ResolveModeFlagBits resolveImageView :: ImageView resolveImageLayout :: ImageLayout loadOp :: AttachmentLoadOp storeOp :: AttachmentStoreOp clearValue :: ClearValue ..} getNext :: forall (es :: [*]). RenderingAttachmentInfo es -> Chain es getNext RenderingAttachmentInfo{ResolveModeFlagBits ImageLayout AttachmentStoreOp AttachmentLoadOp ImageView Chain es ClearValue next :: forall (es :: [*]). RenderingAttachmentInfo es -> Chain es imageView :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageView imageLayout :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout resolveMode :: forall (es :: [*]). RenderingAttachmentInfo es -> ResolveModeFlagBits resolveImageView :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageView resolveImageLayout :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout loadOp :: forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentLoadOp storeOp :: forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentStoreOp clearValue :: forall (es :: [*]). RenderingAttachmentInfo es -> ClearValue next :: Chain es imageView :: ImageView imageLayout :: ImageLayout resolveMode :: ResolveModeFlagBits resolveImageView :: ImageView resolveImageLayout :: ImageLayout loadOp :: AttachmentLoadOp storeOp :: AttachmentStoreOp clearValue :: ClearValue ..} = Chain es next extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingAttachmentInfo e => b) -> Maybe b extends :: forall e b (proxy :: * -> *). Typeable e => proxy e -> (Extends RenderingAttachmentInfo e => b) -> Maybe b extends proxy e _ Extends RenderingAttachmentInfo e => b f | Just e :~: RenderingAttachmentFlagsInfoKHR Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @RenderingAttachmentFlagsInfoKHR = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingAttachmentInfo e => b f | Just e :~: AttachmentFeedbackLoopInfoEXT Refl <- forall {k} (a :: k) (b :: k). (Typeable a, Typeable b) => Maybe (a :~: b) forall a b. (Typeable a, Typeable b) => Maybe (a :~: b) eqT @e @AttachmentFeedbackLoopInfoEXT = b -> Maybe b forall a. a -> Maybe a Just b Extends RenderingAttachmentInfo e => b f | Bool otherwise = Maybe b forall a. Maybe a Nothing instance ( Extendss RenderingAttachmentInfo es , PokeChain es ) => ToCStruct (RenderingAttachmentInfo es) where withCStruct :: forall b. RenderingAttachmentInfo es -> (Ptr (RenderingAttachmentInfo es) -> IO b) -> IO b withCStruct RenderingAttachmentInfo es x Ptr (RenderingAttachmentInfo es) -> IO b f = Int -> (Ptr (RenderingAttachmentInfo es) -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 72 ((Ptr (RenderingAttachmentInfo es) -> IO b) -> IO b) -> (Ptr (RenderingAttachmentInfo es) -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr (RenderingAttachmentInfo es) p -> Ptr (RenderingAttachmentInfo es) -> RenderingAttachmentInfo es -> IO b -> IO b forall b. Ptr (RenderingAttachmentInfo es) -> RenderingAttachmentInfo es -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr (RenderingAttachmentInfo es) p RenderingAttachmentInfo es x (Ptr (RenderingAttachmentInfo es) -> IO b f Ptr (RenderingAttachmentInfo es) p) pokeCStruct :: forall b. Ptr (RenderingAttachmentInfo es) -> RenderingAttachmentInfo es -> IO b -> IO b pokeCStruct Ptr (RenderingAttachmentInfo es) p RenderingAttachmentInfo{ResolveModeFlagBits ImageLayout AttachmentStoreOp AttachmentLoadOp ImageView Chain es ClearValue next :: forall (es :: [*]). RenderingAttachmentInfo es -> Chain es imageView :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageView imageLayout :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout resolveMode :: forall (es :: [*]). RenderingAttachmentInfo es -> ResolveModeFlagBits resolveImageView :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageView resolveImageLayout :: forall (es :: [*]). RenderingAttachmentInfo es -> ImageLayout loadOp :: forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentLoadOp storeOp :: forall (es :: [*]). RenderingAttachmentInfo es -> AttachmentStoreOp clearValue :: forall (es :: [*]). RenderingAttachmentInfo es -> ClearValue next :: Chain es imageView :: ImageView imageLayout :: ImageLayout resolveMode :: ResolveModeFlagBits resolveImageView :: ImageView resolveImageLayout :: ImageLayout loadOp :: AttachmentLoadOp storeOp :: AttachmentStoreOp clearValue :: ClearValue ..} IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr (RenderingAttachmentInfo es) p Ptr (RenderingAttachmentInfo es) -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO) pNext'' <- (Ptr (Chain es) -> Ptr ()) -> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> ContT b IO a -> ContT b IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Ptr (Chain es) -> Ptr () forall a b. Ptr a -> Ptr b castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())) -> (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> a -> b $ Chain es -> (Ptr (Chain es) -> IO b) -> IO b forall (es :: [*]) a. PokeChain es => Chain es -> (Ptr (Chain es) -> IO a) -> IO a forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a withChain (Chain es next) lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'' lift $ poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView) lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout) lift $ poke ((p `plusPtr` 28 :: Ptr ResolveModeFlagBits)) (resolveMode) lift $ poke ((p `plusPtr` 32 :: Ptr ImageView)) (resolveImageView) lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (resolveImageLayout) lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (loadOp) lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (storeOp) ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (clearValue) . ($ ()) lift $ f cStructSize :: Int cStructSize = Int 72 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr (RenderingAttachmentInfo es) -> IO b -> IO b pokeZeroCStruct Ptr (RenderingAttachmentInfo es) p IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr (RenderingAttachmentInfo es) p Ptr (RenderingAttachmentInfo es) -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO) pNext' <- (Ptr (Chain es) -> Ptr ()) -> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> ContT b IO a -> ContT b IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Ptr (Chain es) -> Ptr () forall a b. Ptr a -> Ptr b castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())) -> (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall b c a. (b -> c) -> (a -> b) -> a -> c . ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es)) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())) -> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()) forall a b. (a -> b) -> a -> b $ forall (es :: [*]) a. PokeChain es => (Ptr (Chain es) -> IO a) -> IO a withZeroChain @es lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext' lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero) lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero) lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (zero) lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (zero) ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (zero) . ($ ()) lift $ f instance es ~ '[] => Zero (RenderingAttachmentInfo es) where zero :: RenderingAttachmentInfo es zero = Chain es -> ImageView -> ImageLayout -> ResolveModeFlagBits -> ImageView -> ImageLayout -> AttachmentLoadOp -> AttachmentStoreOp -> ClearValue -> RenderingAttachmentInfo es forall (es :: [*]). Chain es -> ImageView -> ImageLayout -> ResolveModeFlagBits -> ImageView -> ImageLayout -> AttachmentLoadOp -> AttachmentStoreOp -> ClearValue -> RenderingAttachmentInfo es RenderingAttachmentInfo () ImageView forall a. Zero a => a zero ImageLayout forall a. Zero a => a zero ResolveModeFlagBits forall a. Zero a => a zero ImageView forall a. Zero a => a zero ImageLayout forall a. Zero a => a zero AttachmentLoadOp forall a. Zero a => a zero AttachmentStoreOp forall a. Zero a => a zero ClearValue forall a. Zero a => a zero -- | VkPhysicalDeviceDynamicRenderingFeatures - Structure indicating support -- for dynamic render pass instances -- -- = Members -- -- This structure describes the following feature: -- -- = Description -- -- If the 'PhysicalDeviceDynamicRenderingFeatures' structure is included in -- the @pNext@ chain of the -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2' -- structure passed to -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2', -- it is filled in to indicate whether each corresponding feature is -- supported. If the application wishes to use a -- 'Vulkan.Core10.Handles.Device' with any features described by -- 'PhysicalDeviceDynamicRenderingFeatures', it /must/ add an instance of -- the structure, with the desired feature members set to -- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of -- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the -- 'Vulkan.Core10.Handles.Device'. -- -- == 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_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.FundamentalTypes.Bool32', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDeviceDynamicRenderingFeatures = PhysicalDeviceDynamicRenderingFeatures { -- | #extension-features-dynamicRendering# @dynamicRendering@ specifies that -- the implementation supports dynamic render pass instances using the -- 'cmdBeginRendering' command. PhysicalDeviceDynamicRenderingFeatures -> Bool dynamicRendering :: Bool } deriving (Typeable, PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool (PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool) -> (PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool) -> Eq PhysicalDeviceDynamicRenderingFeatures forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool == :: PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool $c/= :: PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool /= :: PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> Bool Eq) #if defined(GENERIC_INSTANCES) deriving instance Generic (PhysicalDeviceDynamicRenderingFeatures) #endif deriving instance Show PhysicalDeviceDynamicRenderingFeatures instance ToCStruct PhysicalDeviceDynamicRenderingFeatures where withCStruct :: forall b. PhysicalDeviceDynamicRenderingFeatures -> (Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b) -> IO b withCStruct PhysicalDeviceDynamicRenderingFeatures x Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b f = Int -> (Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 24 ((Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b) -> IO b) -> (Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr PhysicalDeviceDynamicRenderingFeatures p -> Ptr PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> IO b -> IO b forall b. Ptr PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceDynamicRenderingFeatures p PhysicalDeviceDynamicRenderingFeatures x (Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b f Ptr PhysicalDeviceDynamicRenderingFeatures p) pokeCStruct :: forall b. Ptr PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceDynamicRenderingFeatures p PhysicalDeviceDynamicRenderingFeatures{Bool dynamicRendering :: PhysicalDeviceDynamicRenderingFeatures -> Bool dynamicRendering :: Bool ..} IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool dynamicRendering)) IO b f cStructSize :: Int cStructSize = Int 24 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr PhysicalDeviceDynamicRenderingFeatures -> IO b -> IO b pokeZeroCStruct Ptr PhysicalDeviceDynamicRenderingFeatures p IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr Bool32 -> Bool32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Bool32)) (Bool -> Bool32 boolToBool32 (Bool forall a. Zero a => a zero)) IO b f instance FromCStruct PhysicalDeviceDynamicRenderingFeatures where peekCStruct :: Ptr PhysicalDeviceDynamicRenderingFeatures -> IO PhysicalDeviceDynamicRenderingFeatures peekCStruct Ptr PhysicalDeviceDynamicRenderingFeatures p = do dynamicRendering <- forall a. Storable a => Ptr a -> IO a peek @Bool32 ((Ptr PhysicalDeviceDynamicRenderingFeatures p Ptr PhysicalDeviceDynamicRenderingFeatures -> Int -> Ptr Bool32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr Bool32)) pure $ PhysicalDeviceDynamicRenderingFeatures (bool32ToBool dynamicRendering) instance Storable PhysicalDeviceDynamicRenderingFeatures where sizeOf :: PhysicalDeviceDynamicRenderingFeatures -> Int sizeOf ~PhysicalDeviceDynamicRenderingFeatures _ = Int 24 alignment :: PhysicalDeviceDynamicRenderingFeatures -> Int alignment ~PhysicalDeviceDynamicRenderingFeatures _ = Int 8 peek :: Ptr PhysicalDeviceDynamicRenderingFeatures -> IO PhysicalDeviceDynamicRenderingFeatures peek = Ptr PhysicalDeviceDynamicRenderingFeatures -> IO PhysicalDeviceDynamicRenderingFeatures forall a. FromCStruct a => Ptr a -> IO a peekCStruct poke :: Ptr PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> IO () poke Ptr PhysicalDeviceDynamicRenderingFeatures ptr PhysicalDeviceDynamicRenderingFeatures poked = Ptr PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> IO () -> IO () forall b. Ptr PhysicalDeviceDynamicRenderingFeatures -> PhysicalDeviceDynamicRenderingFeatures -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr PhysicalDeviceDynamicRenderingFeatures ptr PhysicalDeviceDynamicRenderingFeatures poked (() -> IO () forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ()) instance Zero PhysicalDeviceDynamicRenderingFeatures where zero :: PhysicalDeviceDynamicRenderingFeatures zero = Bool -> PhysicalDeviceDynamicRenderingFeatures PhysicalDeviceDynamicRenderingFeatures Bool forall a. Zero a => a zero -- | VkCommandBufferInheritanceRenderingInfo - Structure specifying command -- buffer inheritance info for dynamic render pass instances -- -- = Description -- -- If the @pNext@ chain of -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes a -- 'CommandBufferInheritanceRenderingInfo' structure, then that structure -- controls parameters of dynamic render pass instances that the -- 'Vulkan.Core10.Handles.CommandBuffer' /can/ be executed within. 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. -- -- If @colorAttachmentCount@ is @0@ and the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate> -- feature is enabled, @rasterizationSamples@ is ignored. -- -- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of -- @pColorAttachmentFormats@ is -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the -- corresponding attachment is unused within the render pass and writes to -- those attachments are discarded. -- -- == Valid Usage -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-colorAttachmentCount-06004# -- If @colorAttachmentCount@ is not @0@, @rasterizationSamples@ /must/ -- be a valid -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-variableMultisampleRate-06005# -- If the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate> -- feature is not enabled, @rasterizationSamples@ /must/ be a valid -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06540# -- If @depthAttachmentFormat@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format -- that includes a depth component -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06007# -- If @depthAttachmentFormat@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format -- with -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features> -- that include -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-06492# -- If any element of @pColorAttachmentFormats@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format -- with -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features> -- that include -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' -- , or -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' -- if the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-linearColorAttachment linearColorAttachment> -- feature is enabled -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06541# -- If @stencilAttachmentFormat@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format -- that includes a stencil aspect -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06199# -- If @stencilAttachmentFormat@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format -- with -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#potential-format-features potential format features> -- that include -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06200# -- If @depthAttachmentFormat@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and -- @stencilAttachmentFormat@ is not -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', -- @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@ -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-multiview-06008# If -- the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-multiview multiview> -- feature is not enabled, @viewMask@ /must/ be @0@ -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-viewMask-06009# The -- index of the most significant bit in @viewMask@ /must/ be less than -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount> -- -- == Valid Usage (Implicit) -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-sType-sType# @sType@ -- /must/ be -- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO' -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-flags-parameter# -- @flags@ /must/ be a valid combination of -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits' values -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-parameter# -- If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@ -- /must/ be a valid pointer to an array of @colorAttachmentCount@ -- valid 'Vulkan.Core10.Enums.Format.Format' values -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-parameter# -- @depthAttachmentFormat@ /must/ be a valid -- 'Vulkan.Core10.Enums.Format.Format' value -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-parameter# -- @stencilAttachmentFormat@ /must/ be a valid -- 'Vulkan.Core10.Enums.Format.Format' value -- -- - #VUID-VkCommandBufferInheritanceRenderingInfo-rasterizationSamples-parameter# -- If @rasterizationSamples@ is not @0@, @rasterizationSamples@ /must/ -- be a valid -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' 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_VERSION_1_3 VK_VERSION_1_3>, -- 'Vulkan.Core10.Enums.Format.Format', -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlags', -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data CommandBufferInheritanceRenderingInfo = CommandBufferInheritanceRenderingInfo { -- | @flags@ is a bitmask of -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits' used by the -- render pass instance. CommandBufferInheritanceRenderingInfo -> RenderingFlags flags :: RenderingFlags , -- | @viewMask@ is the view mask used for rendering. CommandBufferInheritanceRenderingInfo -> Word32 viewMask :: Word32 , -- | @pColorAttachmentFormats@ is a pointer to an array of -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color -- attachments. CommandBufferInheritanceRenderingInfo -> Vector Format colorAttachmentFormats :: Vector Format , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value -- defining the format of the depth attachment. CommandBufferInheritanceRenderingInfo -> Format depthAttachmentFormat :: Format , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value -- defining the format of the stencil attachment. CommandBufferInheritanceRenderingInfo -> Format stencilAttachmentFormat :: Format , -- | @rasterizationSamples@ is a -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying -- the number of samples used in rasterization. CommandBufferInheritanceRenderingInfo -> SampleCountFlagBits rasterizationSamples :: SampleCountFlagBits } deriving (Typeable) #if defined(GENERIC_INSTANCES) deriving instance Generic (CommandBufferInheritanceRenderingInfo) #endif deriving instance Show CommandBufferInheritanceRenderingInfo instance ToCStruct CommandBufferInheritanceRenderingInfo where withCStruct :: forall b. CommandBufferInheritanceRenderingInfo -> (Ptr CommandBufferInheritanceRenderingInfo -> IO b) -> IO b withCStruct CommandBufferInheritanceRenderingInfo x Ptr CommandBufferInheritanceRenderingInfo -> IO b f = Int -> (Ptr CommandBufferInheritanceRenderingInfo -> IO b) -> IO b forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes Int 56 ((Ptr CommandBufferInheritanceRenderingInfo -> IO b) -> IO b) -> (Ptr CommandBufferInheritanceRenderingInfo -> IO b) -> IO b forall a b. (a -> b) -> a -> b $ \Ptr CommandBufferInheritanceRenderingInfo p -> Ptr CommandBufferInheritanceRenderingInfo -> CommandBufferInheritanceRenderingInfo -> IO b -> IO b forall b. Ptr CommandBufferInheritanceRenderingInfo -> CommandBufferInheritanceRenderingInfo -> IO b -> IO b forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b pokeCStruct Ptr CommandBufferInheritanceRenderingInfo p CommandBufferInheritanceRenderingInfo x (Ptr CommandBufferInheritanceRenderingInfo -> IO b f Ptr CommandBufferInheritanceRenderingInfo p) pokeCStruct :: forall b. Ptr CommandBufferInheritanceRenderingInfo -> CommandBufferInheritanceRenderingInfo -> IO b -> IO b pokeCStruct Ptr CommandBufferInheritanceRenderingInfo p CommandBufferInheritanceRenderingInfo{Word32 Vector Format RenderingFlags SampleCountFlagBits Format flags :: CommandBufferInheritanceRenderingInfo -> RenderingFlags viewMask :: CommandBufferInheritanceRenderingInfo -> Word32 colorAttachmentFormats :: CommandBufferInheritanceRenderingInfo -> Vector Format depthAttachmentFormat :: CommandBufferInheritanceRenderingInfo -> Format stencilAttachmentFormat :: CommandBufferInheritanceRenderingInfo -> Format rasterizationSamples :: CommandBufferInheritanceRenderingInfo -> SampleCountFlagBits flags :: RenderingFlags viewMask :: Word32 colorAttachmentFormats :: Vector Format depthAttachmentFormat :: Format stencilAttachmentFormat :: Format rasterizationSamples :: SampleCountFlagBits ..} IO b f = ContT b IO b -> IO b forall (m :: * -> *) r. Monad m => ContT r m r -> m r evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b forall a b. (a -> b) -> a -> b $ do IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr RenderingFlags -> RenderingFlags -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr RenderingFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr RenderingFlags)) (RenderingFlags flags) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr Word32 -> Word32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) (Word32 viewMask) IO () -> ContT b IO () forall (m :: * -> *) a. Monad m => m a -> ContT b m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO () forall a b. (a -> b) -> a -> b $ Ptr Word32 -> Word32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 24 :: Ptr Word32)) ((Int -> Word32 forall a b. (Integral a, Num b) => a -> b fromIntegral (Vector Format -> Int forall a. Vector a -> Int Data.Vector.length (Vector Format -> Int) -> Vector Format -> Int forall a b. (a -> b) -> a -> b $ (Vector Format colorAttachmentFormats)) :: Word32)) pPColorAttachmentFormats' <- ((Ptr Format -> IO b) -> IO b) -> ContT b IO (Ptr Format) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr Format -> IO b) -> IO b) -> ContT b IO (Ptr Format)) -> ((Ptr Format -> IO b) -> IO b) -> ContT b IO (Ptr Format) forall a b. (a -> b) -> a -> b $ forall a b. Int -> (Ptr a -> IO b) -> IO b allocaBytes @Format ((Vector Format -> Int forall a. Vector a -> Int Data.Vector.length (Vector Format colorAttachmentFormats)) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 4) lift $ Data.Vector.imapM_ (\Int i Format e -> Ptr Format -> Format -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr Format pPColorAttachmentFormats' Ptr Format -> Int -> Ptr Format forall a b. Ptr a -> Int -> Ptr b `plusPtr` (Int 4 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Format) (Format e)) (colorAttachmentFormats) lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Format))) (pPColorAttachmentFormats') lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (depthAttachmentFormat) lift $ poke ((p `plusPtr` 44 :: Ptr Format)) (stencilAttachmentFormat) lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (rasterizationSamples) lift $ f cStructSize :: Int cStructSize = Int 56 cStructAlignment :: Int cStructAlignment = Int 8 pokeZeroCStruct :: forall b. Ptr CommandBufferInheritanceRenderingInfo -> IO b -> IO b pokeZeroCStruct Ptr CommandBufferInheritanceRenderingInfo p IO b f = do Ptr StructureType -> StructureType -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr StructureType forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 0 :: Ptr StructureType)) (StructureType STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO) Ptr (Ptr ()) -> Ptr () -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr (Ptr ()) forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 8 :: Ptr (Ptr ()))) (Ptr () forall a. Ptr a nullPtr) Ptr Word32 -> Word32 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr Word32 forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 20 :: Ptr Word32)) (Word32 forall a. Zero a => a zero) Ptr Format -> Format -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr Format forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 40 :: Ptr Format)) (Format forall a. Zero a => a zero) Ptr Format -> Format -> IO () forall a. Storable a => Ptr a -> a -> IO () poke ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr Format forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 44 :: Ptr Format)) (Format forall a. Zero a => a zero) IO b f instance FromCStruct CommandBufferInheritanceRenderingInfo where peekCStruct :: Ptr CommandBufferInheritanceRenderingInfo -> IO CommandBufferInheritanceRenderingInfo peekCStruct Ptr CommandBufferInheritanceRenderingInfo p = do flags <- forall a. Storable a => Ptr a -> IO a peek @RenderingFlags ((Ptr CommandBufferInheritanceRenderingInfo p Ptr CommandBufferInheritanceRenderingInfo -> Int -> Ptr RenderingFlags forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int 16 :: Ptr RenderingFlags)) viewMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32)) colorAttachmentCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32)) pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 32 :: Ptr (Ptr Format))) pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\Int i -> forall a. Storable a => Ptr a -> IO a peek @Format ((Ptr Format pColorAttachmentFormats Ptr Format -> Int -> Ptr Format forall a. Ptr a -> Int -> Ptr a `advancePtrBytes` (Int 4 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int i)) :: Ptr Format))) depthAttachmentFormat <- peek @Format ((p `plusPtr` 40 :: Ptr Format)) stencilAttachmentFormat <- peek @Format ((p `plusPtr` 44 :: Ptr Format)) rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) pure $ CommandBufferInheritanceRenderingInfo flags viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat rasterizationSamples instance Zero CommandBufferInheritanceRenderingInfo where zero :: CommandBufferInheritanceRenderingInfo zero = RenderingFlags -> Word32 -> Vector Format -> Format -> Format -> SampleCountFlagBits -> CommandBufferInheritanceRenderingInfo CommandBufferInheritanceRenderingInfo RenderingFlags forall a. Zero a => a zero Word32 forall a. Zero a => a zero Vector Format forall a. Monoid a => a mempty Format forall a. Zero a => a zero Format forall a. Zero a => a zero SampleCountFlagBits forall a. Zero a => a zero