vulkan-2.0.0.1: src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
{-# language Strict #-}
{-# language CPP #-}
{-# language PatternSynonyms #-}
{-# language OverloadedStrings #-}
{-# language DataKinds #-}
{-# language TypeOperators #-}
{-# language DuplicateRecordFields #-}
module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling
( pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
, pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
, pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION
, pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
, vkCmdSetViewportWScalingNV
, VkViewportWScalingNV(..)
, VkPipelineViewportWScalingStateCreateInfoNV(..)
) where
import Data.String
( IsString
)
import Data.Word
( Word32
)
import Foreign.C.Types
( CFloat(..)
)
import Foreign.Ptr
( plusPtr
, Ptr
)
import Foreign.Storable
( Storable(..)
, Storable
)
import Graphics.Vulkan.NamedType
( (:::)
)
import Graphics.Vulkan.Core10.Core
( VkBool32(..)
, VkStructureType(..)
)
import Graphics.Vulkan.Core10.Pipeline
( VkDynamicState(..)
)
import Graphics.Vulkan.Core10.Queue
( VkCommandBuffer
)
-- | @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@ specifies that the
-- @pViewportScalings@ state in
-- @VkPipelineViewportWScalingStateCreateInfoNV@ will be ignored and /must/
-- be set dynamically with 'vkCmdSetViewportWScalingNV' before any draws
-- are performed with a pipeline state with
-- @VkPipelineViewportWScalingStateCreateInfo@ member
-- @viewportScalingEnable@ set to @VK_TRUE@
pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: VkDynamicState
pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = VkDynamicState 1000087000
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV :: VkStructureType
pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = VkStructureType 1000087000
-- No documentation found for TopLevel "VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION"
pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: Integral a => a
pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1
-- No documentation found for TopLevel "VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME"
pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME :: (Eq a ,IsString a) => a
pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling"
-- | vkCmdSetViewportWScalingNV - Set the viewport W scaling on a command
-- buffer
--
-- = Parameters
--
-- - @commandBuffer@ is the command buffer into which the command will be
-- recorded.
--
-- - @firstViewport@ is the index of the first viewport whose parameters
-- are updated by the command.
--
-- - @viewportCount@ is the number of viewports whose parameters are
-- updated by the command.
--
-- - @pViewportWScalings@ is a pointer to an array of
-- 'VkViewportWScalingNV' structures specifying viewport parameters.
--
-- = Description
--
-- The viewport parameters taken from element i of @pViewportWScalings@
-- replace the current state for the viewport index @firstViewport@ + i,
-- for i in [0, @viewportCount@).
--
-- == Valid Usage
--
-- - The bound graphics pipeline /must/ have been created with the
-- @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@ dynamic state enabled
--
-- - @firstViewport@ /must/ be less than
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@maxViewports@
--
-- - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@
-- and
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@maxViewports@,
-- inclusive
--
-- == Valid Usage (Implicit)
--
-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle
--
-- - @pViewportWScalings@ /must/ be a valid pointer to an array of
-- @viewportCount@ @VkViewportWScalingNV@ structures
--
-- - @commandBuffer@ /must/ be in the [recording
-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)
--
-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/
-- support graphics operations
--
-- - @viewportCount@ /must/ be greater than @0@
--
-- == Host Synchronization
--
-- - Host access to @commandBuffer@ /must/ be externally synchronized
--
-- - Host access to the @VkCommandPool@ that @commandBuffer@ was
-- allocated from /must/ be externally synchronized
--
-- == Command Properties
--
-- \'
--
-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |
-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |
-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+
-- | Primary | Both | Graphics | |
-- | Secondary | | | |
-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkViewportWScalingNV'
foreign import ccall "vkCmdSetViewportWScalingNV" vkCmdSetViewportWScalingNV :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ()
-- | VkViewportWScalingNV - Structure specifying a viewport
--
-- = See Also
--
-- 'VkPipelineViewportWScalingStateCreateInfoNV',
-- 'vkCmdSetViewportWScalingNV'
data VkViewportWScalingNV = VkViewportWScalingNV
{ -- | @xcoeff@ and @ycoeff@ are the viewport’s W scaling factor for x and y
-- respectively.
vkXcoeff :: CFloat
, -- No documentation found for Nested "VkViewportWScalingNV" "ycoeff"
vkYcoeff :: CFloat
}
deriving (Eq, Show)
instance Storable VkViewportWScalingNV where
sizeOf ~_ = 8
alignment ~_ = 4
peek ptr = VkViewportWScalingNV <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
poke ptr poked = poke (ptr `plusPtr` 0) (vkXcoeff (poked :: VkViewportWScalingNV))
*> poke (ptr `plusPtr` 4) (vkYcoeff (poked :: VkViewportWScalingNV))
-- | VkPipelineViewportWScalingStateCreateInfoNV - Structure specifying
-- parameters of a newly created pipeline viewport W scaling state
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV@
--
-- - @viewportCount@ /must/ be greater than @0@
--
-- = See Also
--
-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'VkViewportWScalingNV'
data VkPipelineViewportWScalingStateCreateInfoNV = VkPipelineViewportWScalingStateCreateInfoNV
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @viewportWScalingEnable@ controls whether viewport __W__ scaling is
-- enabled.
vkViewportWScalingEnable :: VkBool32
, -- | @viewportCount@ is the number of viewports used by __W__ scaling, and
-- /must/ match the number of viewports in the pipeline if viewport __W__
-- scaling is enabled.
vkViewportCount :: Word32
, -- | @pViewportWScalings@ is a pointer to an array of @VkViewportWScalingNV@
-- structures, which define the __W__ scaling parameters for the
-- corresponding viewport. If the viewport __W__ scaling state is dynamic,
-- this member is ignored.
vkPViewportWScalings :: Ptr VkViewportWScalingNV
}
deriving (Eq, Show)
instance Storable VkPipelineViewportWScalingStateCreateInfoNV where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkPipelineViewportWScalingStateCreateInfoNV <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportWScalingStateCreateInfoNV))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportWScalingStateCreateInfoNV))
*> poke (ptr `plusPtr` 16) (vkViewportWScalingEnable (poked :: VkPipelineViewportWScalingStateCreateInfoNV))
*> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportWScalingStateCreateInfoNV))
*> poke (ptr `plusPtr` 24) (vkPViewportWScalings (poked :: VkPipelineViewportWScalingStateCreateInfoNV))