vulkan-2.1.0.0: src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs
{-# language Strict #-}
{-# language CPP #-}
{-# language PatternSynonyms #-}
{-# language OverloadedStrings #-}
{-# language DataKinds #-}
{-# language TypeOperators #-}
{-# language DuplicateRecordFields #-}
module Graphics.Vulkan.Extensions.VK_EXT_sample_locations
( pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, pattern VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
, pattern VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT
, pattern VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT
, pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
, pattern VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
, pattern VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
, pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION
, pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
, vkCmdSetSampleLocationsEXT
, vkGetPhysicalDeviceMultisamplePropertiesEXT
, VkSampleLocationEXT(..)
, VkSampleLocationsInfoEXT(..)
, VkAttachmentSampleLocationsEXT(..)
, VkSubpassSampleLocationsEXT(..)
, VkRenderPassSampleLocationsBeginInfoEXT(..)
, VkPipelineSampleLocationsStateCreateInfoEXT(..)
, VkPhysicalDeviceSampleLocationsPropertiesEXT(..)
, VkMultisamplePropertiesEXT(..)
) where
import Data.String
( IsString
)
import Data.Vector.Storable.Sized
( Vector
)
import Data.Word
( Word32
)
import Foreign.C.Types
( CFloat(..)
)
import Foreign.Ptr
( Ptr
, plusPtr
)
import Foreign.Storable
( Storable
, Storable(..)
)
import Graphics.Vulkan.NamedType
( (:::)
)
import Graphics.Vulkan.Core10.Core
( VkBool32(..)
, VkStructureType(..)
)
import Graphics.Vulkan.Core10.DeviceInitialization
( VkImageCreateFlagBits(..)
, VkSampleCountFlagBits(..)
, VkPhysicalDevice
, VkSampleCountFlags
)
import Graphics.Vulkan.Core10.Pipeline
( VkDynamicState(..)
, VkExtent2D(..)
)
import Graphics.Vulkan.Core10.Queue
( VkCommandBuffer
)
-- | @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ specifies that the
-- @sampleLocationsInfo@ state in
-- 'VkPipelineSampleLocationsStateCreateInfoEXT' will be ignored and /must/
-- be set dynamically with 'vkCmdSetSampleLocationsEXT' before any draw or
-- clear commands. Enabling custom sample locations is still indicated by
-- the @sampleLocationsEnable@ member of
-- @VkPipelineSampleLocationsStateCreateInfoEXT@.
pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT :: VkDynamicState
pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = VkDynamicState 1000143000
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"
pattern VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = VkStructureType 1000143000
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"
pattern VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = VkStructureType 1000143001
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"
pattern VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = VkStructureType 1000143002
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"
pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = VkStructureType 1000143003
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"
pattern VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = VkStructureType 1000143004
-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"
pattern VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT :: VkImageCreateFlagBits
pattern VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = VkImageCreateFlagBits 0x00001000
-- No documentation found for TopLevel "VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"
pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: Integral a => a
pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1
-- No documentation found for TopLevel "VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"
pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: (Eq a ,IsString a) => a
pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations"
-- | vkCmdSetSampleLocationsEXT - Set the dynamic sample locations state
--
-- = Parameters
--
-- - @commandBuffer@ is the command buffer into which the command will be
-- recorded.
--
-- - @pSampleLocationsInfo@ is the sample locations state to set.
--
-- == Valid Usage
--
-- - The bound graphics pipeline /must/ have been created with the
-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ dynamic state enabled
--
-- - The @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@
-- /must/ equal the @rasterizationSamples@ member of the
-- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo'
-- structure the bound graphics pipeline has been created with
--
-- - If
-- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
-- is @VK_FALSE@ then the current render pass /must/ have been begun by
-- specifying a 'VkRenderPassSampleLocationsBeginInfoEXT' structure
-- whose @pPostSubpassSampleLocations@ member contains an element with
-- a @subpassIndex@ matching the current subpass index and the
-- @sampleLocationsInfo@ member of that element /must/ match the sample
-- locations state pointed to by @pSampleLocationsInfo@
--
-- == Valid Usage (Implicit)
--
-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle
--
-- - @pSampleLocationsInfo@ /must/ be a valid pointer to a valid
-- @VkSampleLocationsInfoEXT@ structure
--
-- - @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
--
-- == 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',
-- 'VkSampleLocationsInfoEXT'
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"vkCmdSetSampleLocationsEXT" vkCmdSetSampleLocationsEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ()
-- | vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count
-- specific multisampling capabilities of a physical device
--
-- = Parameters
--
-- - @physicalDevice@ is the physical device from which to query the
-- additional multisampling capabilities.
--
-- - @samples@ is the sample count to query the capabilities for.
--
-- - @pMultisampleProperties@ is a pointer to a structure of type
-- 'VkMultisamplePropertiesEXT', in which information about the
-- additional multisampling capabilities specific to the sample count
-- is returned.
--
-- == Valid Usage (Implicit)
--
-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle
--
-- - @samples@ /must/ be a valid
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-- value
--
-- - @pMultisampleProperties@ /must/ be a valid pointer to a
-- @VkMultisamplePropertiesEXT@ structure
--
-- = See Also
--
-- 'VkMultisamplePropertiesEXT',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"vkGetPhysicalDeviceMultisamplePropertiesEXT" vkGetPhysicalDeviceMultisamplePropertiesEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ()
-- | VkSampleLocationEXT - Structure specifying the coordinates of a sample
-- location
--
-- = Description
--
-- The domain space of the sample location coordinates has an upper-left
-- origin within the pixel in framebuffer space.
--
-- The values specified in a @VkSampleLocationEXT@ structure are always
-- clamped to the implementation-dependent sample location coordinate range
-- [@sampleLocationCoordinateRange@[0],@sampleLocationCoordinateRange@[1]]
-- that /can/ be queried by chaining the
-- 'VkPhysicalDeviceSampleLocationsPropertiesEXT' structure to the @pNext@
-- chain of
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'.
--
-- = See Also
--
-- 'VkSampleLocationsInfoEXT'
data VkSampleLocationEXT = VkSampleLocationEXT
{ -- | @x@ is the horizontal coordinate of the sample’s location.
vkX :: CFloat
, -- | @y@ is the vertical coordinate of the sample’s location.
vkY :: CFloat
}
deriving (Eq, Show)
instance Storable VkSampleLocationEXT where
sizeOf ~_ = 8
alignment ~_ = 4
peek ptr = VkSampleLocationEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkSampleLocationEXT))
*> poke (ptr `plusPtr` 4) (vkY (poked :: VkSampleLocationEXT))
-- | VkSampleLocationsInfoEXT - Structure specifying a set of sample
-- locations
--
-- = Description
--
-- This structure /can/ be used either to specify the sample locations to
-- be used for rendering or to specify the set of sample locations an image
-- subresource has been last rendered with for the purposes of layout
-- transitions of depth\/stencil images created with
-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@.
--
-- The sample locations in @pSampleLocations@ specify
-- @sampleLocationsPerPixel@ number of sample locations for each pixel in
-- the grid of the size specified in @sampleLocationGridSize@. The sample
-- location for sample i at the pixel grid location (x,y) is taken from
-- @pSampleLocations@[(x + y * @sampleLocationGridSize.width@) *
-- @sampleLocationsPerPixel@ + i].
--
-- == Valid Usage
--
-- - @sampleLocationsPerPixel@ /must/ be a bit value that is set in
-- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@sampleLocationSampleCounts@
--
-- - @sampleLocationsCount@ /must/ equal @sampleLocationsPerPixel@ ×
-- @sampleLocationGridSize.width@ × @sampleLocationGridSize.height@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT@
--
-- - @sampleLocationsPerPixel@ /must/ be a valid
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-- value
--
-- - @pSampleLocations@ /must/ be a valid pointer to an array of
-- @sampleLocationsCount@ @VkSampleLocationEXT@ structures
--
-- - @sampleLocationsCount@ /must/ be greater than @0@
--
-- = See Also
--
-- 'VkAttachmentSampleLocationsEXT',
-- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',
-- 'VkPipelineSampleLocationsStateCreateInfoEXT',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',
-- 'VkSampleLocationEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'VkSubpassSampleLocationsEXT', 'vkCmdSetSampleLocationsEXT'
data VkSampleLocationsInfoEXT = VkSampleLocationsInfoEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @sampleLocationsPerPixel@ is a
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-- specifying the number of sample locations per pixel.
vkSampleLocationsPerPixel :: VkSampleCountFlagBits
, -- | @sampleLocationGridSize@ is the size of the sample location grid to
-- select custom sample locations for.
vkSampleLocationGridSize :: VkExtent2D
, -- | @sampleLocationsCount@ is the number of sample locations in
-- @pSampleLocations@.
vkSampleLocationsCount :: Word32
, -- | @pSampleLocations@ is an array of @sampleLocationsCount@
-- 'VkSampleLocationEXT' structures.
vkPSampleLocations :: Ptr VkSampleLocationEXT
}
deriving (Eq, Show)
instance Storable VkSampleLocationsInfoEXT where
sizeOf ~_ = 40
alignment ~_ = 8
peek ptr = VkSampleLocationsInfoEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSampleLocationsInfoEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSampleLocationsInfoEXT))
*> poke (ptr `plusPtr` 16) (vkSampleLocationsPerPixel (poked :: VkSampleLocationsInfoEXT))
*> poke (ptr `plusPtr` 20) (vkSampleLocationGridSize (poked :: VkSampleLocationsInfoEXT))
*> poke (ptr `plusPtr` 28) (vkSampleLocationsCount (poked :: VkSampleLocationsInfoEXT))
*> poke (ptr `plusPtr` 32) (vkPSampleLocations (poked :: VkSampleLocationsInfoEXT))
-- | VkAttachmentSampleLocationsEXT - Structure specifying the sample
-- locations state to use in the initial layout transition of attachments
--
-- = Description
--
-- If the image referenced by the framebuffer attachment at index
-- @attachmentIndex@ was not created with
-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ then the
-- values specified in @sampleLocationsInfo@ are ignored.
--
-- == Valid Usage
--
-- - @attachmentIndex@ /must/ be less than the @attachmentCount@
-- specified in 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo'
-- the render pass specified by
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderPass@
-- was created with
--
-- == Valid Usage (Implicit)
--
-- - @sampleLocationsInfo@ /must/ be a valid @VkSampleLocationsInfoEXT@
-- structure
--
-- = See Also
--
-- 'VkRenderPassSampleLocationsBeginInfoEXT', 'VkSampleLocationsInfoEXT'
data VkAttachmentSampleLocationsEXT = VkAttachmentSampleLocationsEXT
{ -- | @attachmentIndex@ is the index of the attachment for which the sample
-- locations state is provided.
vkAttachmentIndex :: Word32
, -- | @sampleLocationsInfo@ is the sample locations state to use for the
-- layout transition of the given attachment from the initial layout of the
-- attachment to the image layout specified for the attachment in the first
-- subpass using it.
vkSampleLocationsInfo :: VkSampleLocationsInfoEXT
}
deriving (Eq, Show)
instance Storable VkAttachmentSampleLocationsEXT where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkAttachmentSampleLocationsEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkAttachmentIndex (poked :: VkAttachmentSampleLocationsEXT))
*> poke (ptr `plusPtr` 8) (vkSampleLocationsInfo (poked :: VkAttachmentSampleLocationsEXT))
-- | VkSubpassSampleLocationsEXT - Structure specifying the sample locations
-- state to use for layout transitions of attachments performed after a
-- given subpass
--
-- = Description
--
-- If the image referenced by the depth\/stencil attachment used in the
-- subpass identified by @subpassIndex@ was not created with
-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ or if the
-- subpass does not use a depth\/stencil attachment, and
-- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
-- is @VK_TRUE@ then the values specified in @sampleLocationsInfo@ are
-- ignored.
--
-- == Valid Usage
--
-- - @subpassIndex@ /must/ be less than the @subpassCount@ specified in
-- 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo' the render pass
-- specified by
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderPass@
-- was created with
--
-- == Valid Usage (Implicit)
--
-- - @sampleLocationsInfo@ /must/ be a valid @VkSampleLocationsInfoEXT@
-- structure
--
-- = See Also
--
-- 'VkRenderPassSampleLocationsBeginInfoEXT', 'VkSampleLocationsInfoEXT'
data VkSubpassSampleLocationsEXT = VkSubpassSampleLocationsEXT
{ -- | @subpassIndex@ is the index of the subpass for which the sample
-- locations state is provided.
vkSubpassIndex :: Word32
, -- | @sampleLocationsInfo@ is the sample locations state to use for the
-- layout transition of the depth\/stencil attachment away from the image
-- layout the attachment is used with in the subpass specified in
-- @subpassIndex@.
vkSampleLocationsInfo :: VkSampleLocationsInfoEXT
}
deriving (Eq, Show)
instance Storable VkSubpassSampleLocationsEXT where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkSubpassSampleLocationsEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSubpassIndex (poked :: VkSubpassSampleLocationsEXT))
*> poke (ptr `plusPtr` 8) (vkSampleLocationsInfo (poked :: VkSubpassSampleLocationsEXT))
-- | VkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample
-- locations to use for the layout transition of custom sample locations
-- compatible depth\/stencil attachments
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT@
--
-- - If @attachmentInitialSampleLocationsCount@ is not @0@,
-- @pAttachmentInitialSampleLocations@ /must/ be a valid pointer to an
-- array of @attachmentInitialSampleLocationsCount@ valid
-- @VkAttachmentSampleLocationsEXT@ structures
--
-- - If @postSubpassSampleLocationsCount@ is not @0@,
-- @pPostSubpassSampleLocations@ /must/ be a valid pointer to an array
-- of @postSubpassSampleLocationsCount@ valid
-- @VkSubpassSampleLocationsEXT@ structures
--
-- = See Also
--
-- 'VkAttachmentSampleLocationsEXT',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'VkSubpassSampleLocationsEXT'
data VkRenderPassSampleLocationsBeginInfoEXT = VkRenderPassSampleLocationsBeginInfoEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @attachmentInitialSampleLocationsCount@ is the number of elements in the
-- @pAttachmentInitialSampleLocations@ array.
vkAttachmentInitialSampleLocationsCount :: Word32
, -- | @pAttachmentInitialSampleLocations@ is an array of
-- @attachmentInitialSampleLocationsCount@ 'VkAttachmentSampleLocationsEXT'
-- structures specifying the attachment indices and their corresponding
-- sample location state. Each element of
-- @pAttachmentInitialSampleLocations@ /can/ specify the sample location
-- state to use in the automatic layout transition performed to transition
-- a depth\/stencil attachment from the initial layout of the attachment to
-- the image layout specified for the attachment in the first subpass using
-- it.
vkPAttachmentInitialSampleLocations :: Ptr VkAttachmentSampleLocationsEXT
, -- | @postSubpassSampleLocationsCount@ is the number of elements in the
-- @pPostSubpassSampleLocations@ array.
vkPostSubpassSampleLocationsCount :: Word32
, -- | @pPostSubpassSampleLocations@ is an array of
-- @postSubpassSampleLocationsCount@ 'VkSubpassSampleLocationsEXT'
-- structures specifying the subpass indices and their corresponding sample
-- location state. Each element of @pPostSubpassSampleLocations@ /can/
-- specify the sample location state to use in the automatic layout
-- transition performed to transition the depth\/stencil attachment used by
-- the specified subpass to the image layout specified in a dependent
-- subpass or to the final layout of the attachment in case the specified
-- subpass is the last subpass using that attachment. In addition, if
-- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
-- is @VK_FALSE@, each element of @pPostSubpassSampleLocations@ /must/
-- specify the sample location state that matches the sample locations used
-- by all pipelines that will be bound to a command buffer during the
-- specified subpass. If @variableSampleLocations@ is @VK_TRUE@, the sample
-- locations used for rasterization do not depend on
-- @pPostSubpassSampleLocations@.
vkPPostSubpassSampleLocations :: Ptr VkSubpassSampleLocationsEXT
}
deriving (Eq, Show)
instance Storable VkRenderPassSampleLocationsBeginInfoEXT where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkRenderPassSampleLocationsBeginInfoEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassSampleLocationsBeginInfoEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassSampleLocationsBeginInfoEXT))
*> poke (ptr `plusPtr` 16) (vkAttachmentInitialSampleLocationsCount (poked :: VkRenderPassSampleLocationsBeginInfoEXT))
*> poke (ptr `plusPtr` 24) (vkPAttachmentInitialSampleLocations (poked :: VkRenderPassSampleLocationsBeginInfoEXT))
*> poke (ptr `plusPtr` 32) (vkPostSubpassSampleLocationsCount (poked :: VkRenderPassSampleLocationsBeginInfoEXT))
*> poke (ptr `plusPtr` 40) (vkPPostSubpassSampleLocations (poked :: VkRenderPassSampleLocationsBeginInfoEXT))
-- | VkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying
-- sample locations for a pipeline
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT@
--
-- - @sampleLocationsInfo@ /must/ be a valid @VkSampleLocationsInfoEXT@
-- structure
--
-- = See Also
--
-- @VkBool32@, 'VkSampleLocationsInfoEXT',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineSampleLocationsStateCreateInfoEXT = VkPipelineSampleLocationsStateCreateInfoEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @sampleLocationsEnable@ controls whether custom sample locations are
-- used. If @sampleLocationsEnable@ is @VK_FALSE@, the default sample
-- locations are used and the values specified in @sampleLocationsInfo@ are
-- ignored.
vkSampleLocationsEnable :: VkBool32
, -- | @sampleLocationsInfo@ is the sample locations to use during
-- rasterization if @sampleLocationsEnable@ is @VK_TRUE@ and the graphics
-- pipeline isn’t created with @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@.
vkSampleLocationsInfo :: VkSampleLocationsInfoEXT
}
deriving (Eq, Show)
instance Storable VkPipelineSampleLocationsStateCreateInfoEXT where
sizeOf ~_ = 64
alignment ~_ = 8
peek ptr = VkPipelineSampleLocationsStateCreateInfoEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))
*> poke (ptr `plusPtr` 16) (vkSampleLocationsEnable (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))
*> poke (ptr `plusPtr` 24) (vkSampleLocationsInfo (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))
-- | VkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing
-- sample location limits that can be supported by an implementation
--
-- = Members
--
-- The members of the @VkPhysicalDeviceSampleLocationsPropertiesEXT@
-- structure describe the following implementation-dependent limits:
--
-- = Description
--
-- - @sampleLocationSampleCounts@ is a bitmask of
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-- indicating the sample counts supporting custom sample locations.
--
-- - @maxSampleLocationGridSize@ is the maximum size of the pixel grid in
-- which sample locations /can/ vary that is supported for all sample
-- counts in @sampleLocationSampleCounts@.
--
-- - @sampleLocationCoordinateRange@[2] is the range of supported sample
-- location coordinates.
--
-- - @sampleLocationSubPixelBits@ is the number of bits of subpixel
-- precision for sample locations.
--
-- - @variableSampleLocations@ specifies whether the sample locations
-- used by all pipelines that will be bound to a command buffer during
-- a subpass /must/ match. If set to @VK_TRUE@, the implementation
-- supports variable sample locations in a subpass. If set to
-- @VK_FALSE@, then the sample locations /must/ stay constant in each
-- subpass.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT@
--
-- If the @VkPhysicalDeviceSampleLocationsPropertiesEXT@ structure is
-- included in the @pNext@ chain of
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',
-- it is filled with the implementation-dependent limits.
--
-- = See Also
--
-- @VkBool32@, 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlags',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPhysicalDeviceSampleLocationsPropertiesEXT = VkPhysicalDeviceSampleLocationsPropertiesEXT
{ -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sType"
vkSType :: VkStructureType
, -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "pNext"
vkPNext :: Ptr ()
, -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationSampleCounts"
vkSampleLocationSampleCounts :: VkSampleCountFlags
, -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "maxSampleLocationGridSize"
vkMaxSampleLocationGridSize :: VkExtent2D
, -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationCoordinateRange"
vkSampleLocationCoordinateRange :: Vector 2 CFloat
, -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationSubPixelBits"
vkSampleLocationSubPixelBits :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "variableSampleLocations"
vkVariableSampleLocations :: VkBool32
}
deriving (Eq, Show)
instance Storable VkPhysicalDeviceSampleLocationsPropertiesEXT where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkPhysicalDeviceSampleLocationsPropertiesEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
*> poke (ptr `plusPtr` 16) (vkSampleLocationSampleCounts (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
*> poke (ptr `plusPtr` 20) (vkMaxSampleLocationGridSize (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
*> poke (ptr `plusPtr` 28) (vkSampleLocationCoordinateRange (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
*> poke (ptr `plusPtr` 36) (vkSampleLocationSubPixelBits (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
*> poke (ptr `plusPtr` 40) (vkVariableSampleLocations (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))
-- | VkMultisamplePropertiesEXT - Structure returning information about
-- sample count specific additional multisampling capabilities
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT@
--
-- - @pNext@ /must/ be @NULL@
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'vkGetPhysicalDeviceMultisamplePropertiesEXT'
data VkMultisamplePropertiesEXT = VkMultisamplePropertiesEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @maxSampleLocationGridSize@ is the maximum size of the pixel grid in
-- which sample locations /can/ vary.
vkMaxSampleLocationGridSize :: VkExtent2D
}
deriving (Eq, Show)
instance Storable VkMultisamplePropertiesEXT where
sizeOf ~_ = 24
alignment ~_ = 8
peek ptr = VkMultisamplePropertiesEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMultisamplePropertiesEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMultisamplePropertiesEXT))
*> poke (ptr `plusPtr` 16) (vkMaxSampleLocationGridSize (poked :: VkMultisamplePropertiesEXT))