vulkan-2.0.0.1: src/Graphics/Vulkan/Core10/Pipeline.hs
{-# language Strict #-}
{-# language CPP #-}
{-# language GeneralizedNewtypeDeriving #-}
{-# language PatternSynonyms #-}
{-# language DataKinds #-}
{-# language TypeOperators #-}
{-# language DuplicateRecordFields #-}
module Graphics.Vulkan.Core10.Pipeline
( VkBlendFactor(..)
, pattern VK_BLEND_FACTOR_ZERO
, pattern VK_BLEND_FACTOR_ONE
, pattern VK_BLEND_FACTOR_SRC_COLOR
, pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR
, pattern VK_BLEND_FACTOR_DST_COLOR
, pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR
, pattern VK_BLEND_FACTOR_SRC_ALPHA
, pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
, pattern VK_BLEND_FACTOR_DST_ALPHA
, pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA
, pattern VK_BLEND_FACTOR_CONSTANT_COLOR
, pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
, pattern VK_BLEND_FACTOR_CONSTANT_ALPHA
, pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
, pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE
, pattern VK_BLEND_FACTOR_SRC1_COLOR
, pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
, pattern VK_BLEND_FACTOR_SRC1_ALPHA
, pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
, VkBlendOp(..)
, pattern VK_BLEND_OP_ADD
, pattern VK_BLEND_OP_SUBTRACT
, pattern VK_BLEND_OP_REVERSE_SUBTRACT
, pattern VK_BLEND_OP_MIN
, pattern VK_BLEND_OP_MAX
, VkCompareOp(..)
, pattern VK_COMPARE_OP_NEVER
, pattern VK_COMPARE_OP_LESS
, pattern VK_COMPARE_OP_EQUAL
, pattern VK_COMPARE_OP_LESS_OR_EQUAL
, pattern VK_COMPARE_OP_GREATER
, pattern VK_COMPARE_OP_NOT_EQUAL
, pattern VK_COMPARE_OP_GREATER_OR_EQUAL
, pattern VK_COMPARE_OP_ALWAYS
, VkDynamicState(..)
, pattern VK_DYNAMIC_STATE_VIEWPORT
, pattern VK_DYNAMIC_STATE_SCISSOR
, pattern VK_DYNAMIC_STATE_LINE_WIDTH
, pattern VK_DYNAMIC_STATE_DEPTH_BIAS
, pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS
, pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS
, pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
, pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
, pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE
, VkPolygonMode(..)
, pattern VK_POLYGON_MODE_FILL
, pattern VK_POLYGON_MODE_LINE
, pattern VK_POLYGON_MODE_POINT
, VkFrontFace(..)
, pattern VK_FRONT_FACE_COUNTER_CLOCKWISE
, pattern VK_FRONT_FACE_CLOCKWISE
, VkLogicOp(..)
, pattern VK_LOGIC_OP_CLEAR
, pattern VK_LOGIC_OP_AND
, pattern VK_LOGIC_OP_AND_REVERSE
, pattern VK_LOGIC_OP_COPY
, pattern VK_LOGIC_OP_AND_INVERTED
, pattern VK_LOGIC_OP_NO_OP
, pattern VK_LOGIC_OP_XOR
, pattern VK_LOGIC_OP_OR
, pattern VK_LOGIC_OP_NOR
, pattern VK_LOGIC_OP_EQUIVALENT
, pattern VK_LOGIC_OP_INVERT
, pattern VK_LOGIC_OP_OR_REVERSE
, pattern VK_LOGIC_OP_COPY_INVERTED
, pattern VK_LOGIC_OP_OR_INVERTED
, pattern VK_LOGIC_OP_NAND
, pattern VK_LOGIC_OP_SET
, VkPrimitiveTopology(..)
, pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST
, pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST
, pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
, pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
, pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
, pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
, pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
, pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
, pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
, pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
, pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
, VkStencilOp(..)
, pattern VK_STENCIL_OP_KEEP
, pattern VK_STENCIL_OP_ZERO
, pattern VK_STENCIL_OP_REPLACE
, pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP
, pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP
, pattern VK_STENCIL_OP_INVERT
, pattern VK_STENCIL_OP_INCREMENT_AND_WRAP
, pattern VK_STENCIL_OP_DECREMENT_AND_WRAP
, VkVertexInputRate(..)
, pattern VK_VERTEX_INPUT_RATE_VERTEX
, pattern VK_VERTEX_INPUT_RATE_INSTANCE
, VkPipelineDepthStencilStateCreateFlags(..)
, VkPipelineDynamicStateCreateFlags(..)
, VkPipelineColorBlendStateCreateFlags(..)
, VkPipelineMultisampleStateCreateFlags(..)
, VkPipelineRasterizationStateCreateFlags(..)
, VkPipelineViewportStateCreateFlags(..)
, VkPipelineTessellationStateCreateFlags(..)
, VkPipelineInputAssemblyStateCreateFlags(..)
, VkPipelineVertexInputStateCreateFlags(..)
, VkPipelineShaderStageCreateFlags(..)
, VkShaderStageFlagBits(..)
, pattern VK_SHADER_STAGE_VERTEX_BIT
, pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
, pattern VK_SHADER_STAGE_GEOMETRY_BIT
, pattern VK_SHADER_STAGE_FRAGMENT_BIT
, pattern VK_SHADER_STAGE_COMPUTE_BIT
, pattern VK_SHADER_STAGE_ALL_GRAPHICS
, pattern VK_SHADER_STAGE_ALL
, VkPipelineCreateFlagBits(..)
, pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
, pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
, pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT
, VkColorComponentFlagBits(..)
, pattern VK_COLOR_COMPONENT_R_BIT
, pattern VK_COLOR_COMPONENT_G_BIT
, pattern VK_COLOR_COMPONENT_B_BIT
, pattern VK_COLOR_COMPONENT_A_BIT
, VkCullModeFlagBits(..)
, pattern VK_CULL_MODE_FRONT_BIT
, pattern VK_CULL_MODE_BACK_BIT
, pattern VK_CULL_MODE_NONE
, pattern VK_CULL_MODE_FRONT_AND_BACK
, VkPipeline
, VkPipelineLayout
, VkRenderPass
, vkCreateGraphicsPipelines
, vkCreateComputePipelines
, vkDestroyPipeline
, VkOffset2D(..)
, VkExtent2D(..)
, VkViewport(..)
, VkRect2D(..)
, VkSpecializationMapEntry(..)
, VkSpecializationInfo(..)
, VkPipelineShaderStageCreateInfo(..)
, VkComputePipelineCreateInfo(..)
, VkVertexInputBindingDescription(..)
, VkVertexInputAttributeDescription(..)
, VkPipelineVertexInputStateCreateInfo(..)
, VkPipelineInputAssemblyStateCreateInfo(..)
, VkPipelineTessellationStateCreateInfo(..)
, VkPipelineViewportStateCreateInfo(..)
, VkPipelineRasterizationStateCreateInfo(..)
, VkPipelineMultisampleStateCreateInfo(..)
, VkPipelineColorBlendAttachmentState(..)
, VkPipelineColorBlendStateCreateInfo(..)
, VkPipelineDynamicStateCreateInfo(..)
, VkStencilOpState(..)
, VkPipelineDepthStencilStateCreateInfo(..)
, VkGraphicsPipelineCreateInfo(..)
, VkPipelineCreateFlags
, VkColorComponentFlags
, VkCullModeFlags
, VkSampleMask
) where
import Data.Bits
( Bits
, FiniteBits
)
import Data.Int
( Int32
)
import Data.Vector.Storable.Sized
( Vector
)
import Data.Word
( Word32
)
import Foreign.C.Types
( CFloat(..)
, CChar(..)
, CSize(..)
)
import Foreign.Ptr
( plusPtr
, Ptr
)
import Foreign.Storable
( Storable(..)
, Storable
)
import GHC.Read
( expectP
, choose
)
import Graphics.Vulkan.NamedType
( (:::)
)
import Text.ParserCombinators.ReadPrec
( (+++)
, prec
, step
)
import Text.Read
( Read(..)
, parens
)
import Text.Read.Lex
( Lexeme(Ident)
)
import Graphics.Vulkan.Core10.Core
( VkBool32(..)
, VkFormat(..)
, VkStructureType(..)
, VkResult(..)
, VkFlags
)
import Graphics.Vulkan.Core10.DeviceInitialization
( VkSampleCountFlagBits(..)
, VkAllocationCallbacks(..)
, VkDevice
)
import Graphics.Vulkan.Core10.PipelineCache
( VkPipelineCache
)
import Graphics.Vulkan.Core10.Shader
( VkShaderModule
)
-- ** VkBlendFactor
-- | VkBlendFactor - Framebuffer blending factors
--
-- = Description
--
-- The semantics of each enum value is described in the table below:
--
-- +--------------------------------------------+---------------------+--------+
-- | VkBlendFactor | RGB Blend Factors | Alpha |
-- | | (Sr,Sg,Sb) or | Blend |
-- | | (Dr,Dg,Db) | Factor |
-- | | | (Sa or |
-- | | | Da) |
-- +============================================+=====================+========+
-- | @VK_BLEND_FACTOR_ZERO@ | (0,0,0) | 0 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE@ | (1,1,1) | 1 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_SRC_COLOR@ | (Rs0,Gs0,Bs0) | As0 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR@ | (1-Rs0,1-Gs0,1-Bs0) | 1-As0 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_DST_COLOR@ | (Rd,Gd,Bd) | Ad |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR@ | (1-Rd,1-Gd,1-Bd) | 1-Ad |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_SRC_ALPHA@ | (As0,As0,As0) | As0 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA@ | (1-As0,1-As0,1-As0) | 1-As0 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_DST_ALPHA@ | (Ad,Ad,Ad) | Ad |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA@ | (1-Ad,1-Ad,1-Ad) | 1-Ad |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_CONSTANT_COLOR@ | (Rc,Gc,Bc) | Ac |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR@ | (1-Rc,1-Gc,1-Bc) | 1-Ac |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_CONSTANT_ALPHA@ | (Ac,Ac,Ac) | Ac |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA@ | (1-Ac,1-Ac,1-Ac) | 1-Ac |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_SRC_ALPHA_SATURATE@ | (f,f,f); f = | 1 |
-- | | min(As0,1-Ad) | |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_SRC1_COLOR@ | (Rs1,Gs1,Bs1) | As1 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@ | (1-Rs1,1-Gs1,1-Bs1) | 1-As1 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_SRC1_ALPHA@ | (As1,As1,As1) | As1 |
-- +--------------------------------------------+---------------------+--------+
-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ | (1-As1,1-As1,1-As1) | 1-As1 |
-- +--------------------------------------------+---------------------+--------+
--
-- Blend Factors
--
-- In this table, the following conventions are used:
--
-- - Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A
-- components, respectively, for the fragment output location
-- corresponding to the color attachment being blended.
--
-- - Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A
-- components, respectively, used in dual source blending modes, for
-- the fragment output location corresponding to the color attachment
-- being blended.
--
-- - Rd,Gd,Bd and Ad represent the R, G, B, and A components of the
-- destination color. That is, the color currently in the corresponding
-- color attachment for this fragment\/sample.
--
-- - Rc,Gc,Bc and Ac represent the blend constant R, G, B, and A
-- components, respectively.
--
-- = See Also
--
-- 'VkPipelineColorBlendAttachmentState'
newtype VkBlendFactor = VkBlendFactor Int32
deriving (Eq, Ord, Storable)
instance Show VkBlendFactor where
showsPrec _ VK_BLEND_FACTOR_ZERO = showString "VK_BLEND_FACTOR_ZERO"
showsPrec _ VK_BLEND_FACTOR_ONE = showString "VK_BLEND_FACTOR_ONE"
showsPrec _ VK_BLEND_FACTOR_SRC_COLOR = showString "VK_BLEND_FACTOR_SRC_COLOR"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"
showsPrec _ VK_BLEND_FACTOR_DST_COLOR = showString "VK_BLEND_FACTOR_DST_COLOR"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"
showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA = showString "VK_BLEND_FACTOR_SRC_ALPHA"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"
showsPrec _ VK_BLEND_FACTOR_DST_ALPHA = showString "VK_BLEND_FACTOR_DST_ALPHA"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"
showsPrec _ VK_BLEND_FACTOR_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_CONSTANT_COLOR"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"
showsPrec _ VK_BLEND_FACTOR_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_CONSTANT_ALPHA"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"
showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = showString "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"
showsPrec _ VK_BLEND_FACTOR_SRC1_COLOR = showString "VK_BLEND_FACTOR_SRC1_COLOR"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"
showsPrec _ VK_BLEND_FACTOR_SRC1_ALPHA = showString "VK_BLEND_FACTOR_SRC1_ALPHA"
showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"
showsPrec p (VkBlendFactor x) = showParen (p >= 11) (showString "VkBlendFactor " . showsPrec 11 x)
instance Read VkBlendFactor where
readPrec = parens ( choose [ ("VK_BLEND_FACTOR_ZERO", pure VK_BLEND_FACTOR_ZERO)
, ("VK_BLEND_FACTOR_ONE", pure VK_BLEND_FACTOR_ONE)
, ("VK_BLEND_FACTOR_SRC_COLOR", pure VK_BLEND_FACTOR_SRC_COLOR)
, ("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR)
, ("VK_BLEND_FACTOR_DST_COLOR", pure VK_BLEND_FACTOR_DST_COLOR)
, ("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR)
, ("VK_BLEND_FACTOR_SRC_ALPHA", pure VK_BLEND_FACTOR_SRC_ALPHA)
, ("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA)
, ("VK_BLEND_FACTOR_DST_ALPHA", pure VK_BLEND_FACTOR_DST_ALPHA)
, ("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA)
, ("VK_BLEND_FACTOR_CONSTANT_COLOR", pure VK_BLEND_FACTOR_CONSTANT_COLOR)
, ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR)
, ("VK_BLEND_FACTOR_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_CONSTANT_ALPHA)
, ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA)
, ("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE", pure VK_BLEND_FACTOR_SRC_ALPHA_SATURATE)
, ("VK_BLEND_FACTOR_SRC1_COLOR", pure VK_BLEND_FACTOR_SRC1_COLOR)
, ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR)
, ("VK_BLEND_FACTOR_SRC1_ALPHA", pure VK_BLEND_FACTOR_SRC1_ALPHA)
, ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)
] +++
prec 10 (do
expectP (Ident "VkBlendFactor")
v <- step readPrec
pure (VkBlendFactor v)
)
)
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ZERO"
pattern VK_BLEND_FACTOR_ZERO :: VkBlendFactor
pattern VK_BLEND_FACTOR_ZERO = VkBlendFactor 0
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE"
pattern VK_BLEND_FACTOR_ONE :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE = VkBlendFactor 1
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_COLOR"
pattern VK_BLEND_FACTOR_SRC_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_SRC_COLOR = VkBlendFactor 2
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = VkBlendFactor 3
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_COLOR"
pattern VK_BLEND_FACTOR_DST_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_DST_COLOR = VkBlendFactor 4
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"
pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = VkBlendFactor 5
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA"
pattern VK_BLEND_FACTOR_SRC_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_SRC_ALPHA = VkBlendFactor 6
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = VkBlendFactor 7
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_ALPHA"
pattern VK_BLEND_FACTOR_DST_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_DST_ALPHA = VkBlendFactor 8
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"
pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = VkBlendFactor 9
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_COLOR"
pattern VK_BLEND_FACTOR_CONSTANT_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_CONSTANT_COLOR = VkBlendFactor 10
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"
pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = VkBlendFactor 11
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_ALPHA"
pattern VK_BLEND_FACTOR_CONSTANT_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_CONSTANT_ALPHA = VkBlendFactor 12
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"
pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = VkBlendFactor 13
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"
pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE :: VkBlendFactor
pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = VkBlendFactor 14
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_COLOR"
pattern VK_BLEND_FACTOR_SRC1_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_SRC1_COLOR = VkBlendFactor 15
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = VkBlendFactor 16
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_ALPHA"
pattern VK_BLEND_FACTOR_SRC1_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_SRC1_ALPHA = VkBlendFactor 17
-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: VkBlendFactor
pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = VkBlendFactor 18
-- ** VkBlendOp
-- | VkBlendOp - Framebuffer blending operations
--
-- = Description
--
-- The semantics of each basic blend operations is described in the table
-- below:
--
-- +--------------------------------+--------------------+----------------+
-- | VkBlendOp | RGB Components | Alpha |
-- | | | Component |
-- +================================+====================+================+
-- | @VK_BLEND_OP_ADD@ | R = Rs0 × Sr + Rd | A = As0 × Sa + |
-- | | × Dr | Ad × Da |
-- | | G = Gs0 × Sg + Gd | |
-- | | × Dg | |
-- | | B = Bs0 × Sb + Bd | |
-- | | × Db | |
-- +--------------------------------+--------------------+----------------+
-- | @VK_BLEND_OP_SUBTRACT@ | R = Rs0 × Sr - Rd | A = As0 × Sa - |
-- | | × Dr | Ad × Da |
-- | | G = Gs0 × Sg - Gd | |
-- | | × Dg | |
-- | | B = Bs0 × Sb - Bd | |
-- | | × Db | |
-- +--------------------------------+--------------------+----------------+
-- | @VK_BLEND_OP_REVERSE_SUBTRACT@ | R = Rd × Dr - Rs0 | A = Ad × Da - |
-- | | × Sr | As0 × Sa |
-- | | G = Gd × Dg - Gs0 | |
-- | | × Sg | |
-- | | B = Bd × Db - Bs0 | |
-- | | × Sb | |
-- +--------------------------------+--------------------+----------------+
-- | @VK_BLEND_OP_MIN@ | R = min(Rs0,Rd) | A = |
-- | | G = min(Gs0,Gd) | min(As0,Ad) |
-- | | B = min(Bs0,Bd) | |
-- +--------------------------------+--------------------+----------------+
-- | @VK_BLEND_OP_MAX@ | R = max(Rs0,Rd) | A = |
-- | | G = max(Gs0,Gd) | max(As0,Ad) |
-- | | B = max(Bs0,Bd) | |
-- +--------------------------------+--------------------+----------------+
--
-- Basic Blend Operations
--
-- In this table, the following conventions are used:
--
-- - Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and
-- A components, respectively.
--
-- - Rd, Gd, Bd and Ad represent the R, G, B, and A components of the
-- destination color. That is, the color currently in the corresponding
-- color attachment for this fragment\/sample.
--
-- - Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A
-- components, respectively.
--
-- - Dr, Dg, Db and Da represent the destination blend factor R, G, B,
-- and A components, respectively.
--
-- The blending operation produces a new set of values R, G, B and A, which
-- are written to the framebuffer attachment. If blending is not enabled
-- for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and
-- As0, respectively.
--
-- If the color attachment is fixed-point, the components of the source and
-- destination values and blend factors are each clamped to [0,1] or [-1,1]
-- respectively for an unsigned normalized or signed normalized color
-- attachment prior to evaluating the blend operations. If the color
-- attachment is floating-point, no clamping occurs.
--
-- = See Also
--
-- 'VkPipelineColorBlendAttachmentState'
newtype VkBlendOp = VkBlendOp Int32
deriving (Eq, Ord, Storable)
instance Show VkBlendOp where
showsPrec _ VK_BLEND_OP_ADD = showString "VK_BLEND_OP_ADD"
showsPrec _ VK_BLEND_OP_SUBTRACT = showString "VK_BLEND_OP_SUBTRACT"
showsPrec _ VK_BLEND_OP_REVERSE_SUBTRACT = showString "VK_BLEND_OP_REVERSE_SUBTRACT"
showsPrec _ VK_BLEND_OP_MIN = showString "VK_BLEND_OP_MIN"
showsPrec _ VK_BLEND_OP_MAX = showString "VK_BLEND_OP_MAX"
-- The following values are from extensions, the patterns themselves are exported from the extension modules
showsPrec _ (VkBlendOp 1000148000) = showString "VK_BLEND_OP_ZERO_EXT"
showsPrec _ (VkBlendOp 1000148001) = showString "VK_BLEND_OP_SRC_EXT"
showsPrec _ (VkBlendOp 1000148002) = showString "VK_BLEND_OP_DST_EXT"
showsPrec _ (VkBlendOp 1000148003) = showString "VK_BLEND_OP_SRC_OVER_EXT"
showsPrec _ (VkBlendOp 1000148004) = showString "VK_BLEND_OP_DST_OVER_EXT"
showsPrec _ (VkBlendOp 1000148005) = showString "VK_BLEND_OP_SRC_IN_EXT"
showsPrec _ (VkBlendOp 1000148006) = showString "VK_BLEND_OP_DST_IN_EXT"
showsPrec _ (VkBlendOp 1000148007) = showString "VK_BLEND_OP_SRC_OUT_EXT"
showsPrec _ (VkBlendOp 1000148008) = showString "VK_BLEND_OP_DST_OUT_EXT"
showsPrec _ (VkBlendOp 1000148009) = showString "VK_BLEND_OP_SRC_ATOP_EXT"
showsPrec _ (VkBlendOp 1000148010) = showString "VK_BLEND_OP_DST_ATOP_EXT"
showsPrec _ (VkBlendOp 1000148011) = showString "VK_BLEND_OP_XOR_EXT"
showsPrec _ (VkBlendOp 1000148012) = showString "VK_BLEND_OP_MULTIPLY_EXT"
showsPrec _ (VkBlendOp 1000148013) = showString "VK_BLEND_OP_SCREEN_EXT"
showsPrec _ (VkBlendOp 1000148014) = showString "VK_BLEND_OP_OVERLAY_EXT"
showsPrec _ (VkBlendOp 1000148015) = showString "VK_BLEND_OP_DARKEN_EXT"
showsPrec _ (VkBlendOp 1000148016) = showString "VK_BLEND_OP_LIGHTEN_EXT"
showsPrec _ (VkBlendOp 1000148017) = showString "VK_BLEND_OP_COLORDODGE_EXT"
showsPrec _ (VkBlendOp 1000148018) = showString "VK_BLEND_OP_COLORBURN_EXT"
showsPrec _ (VkBlendOp 1000148019) = showString "VK_BLEND_OP_HARDLIGHT_EXT"
showsPrec _ (VkBlendOp 1000148020) = showString "VK_BLEND_OP_SOFTLIGHT_EXT"
showsPrec _ (VkBlendOp 1000148021) = showString "VK_BLEND_OP_DIFFERENCE_EXT"
showsPrec _ (VkBlendOp 1000148022) = showString "VK_BLEND_OP_EXCLUSION_EXT"
showsPrec _ (VkBlendOp 1000148023) = showString "VK_BLEND_OP_INVERT_EXT"
showsPrec _ (VkBlendOp 1000148024) = showString "VK_BLEND_OP_INVERT_RGB_EXT"
showsPrec _ (VkBlendOp 1000148025) = showString "VK_BLEND_OP_LINEARDODGE_EXT"
showsPrec _ (VkBlendOp 1000148026) = showString "VK_BLEND_OP_LINEARBURN_EXT"
showsPrec _ (VkBlendOp 1000148027) = showString "VK_BLEND_OP_VIVIDLIGHT_EXT"
showsPrec _ (VkBlendOp 1000148028) = showString "VK_BLEND_OP_LINEARLIGHT_EXT"
showsPrec _ (VkBlendOp 1000148029) = showString "VK_BLEND_OP_PINLIGHT_EXT"
showsPrec _ (VkBlendOp 1000148030) = showString "VK_BLEND_OP_HARDMIX_EXT"
showsPrec _ (VkBlendOp 1000148031) = showString "VK_BLEND_OP_HSL_HUE_EXT"
showsPrec _ (VkBlendOp 1000148032) = showString "VK_BLEND_OP_HSL_SATURATION_EXT"
showsPrec _ (VkBlendOp 1000148033) = showString "VK_BLEND_OP_HSL_COLOR_EXT"
showsPrec _ (VkBlendOp 1000148034) = showString "VK_BLEND_OP_HSL_LUMINOSITY_EXT"
showsPrec _ (VkBlendOp 1000148035) = showString "VK_BLEND_OP_PLUS_EXT"
showsPrec _ (VkBlendOp 1000148036) = showString "VK_BLEND_OP_PLUS_CLAMPED_EXT"
showsPrec _ (VkBlendOp 1000148037) = showString "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"
showsPrec _ (VkBlendOp 1000148038) = showString "VK_BLEND_OP_PLUS_DARKER_EXT"
showsPrec _ (VkBlendOp 1000148039) = showString "VK_BLEND_OP_MINUS_EXT"
showsPrec _ (VkBlendOp 1000148040) = showString "VK_BLEND_OP_MINUS_CLAMPED_EXT"
showsPrec _ (VkBlendOp 1000148041) = showString "VK_BLEND_OP_CONTRAST_EXT"
showsPrec _ (VkBlendOp 1000148042) = showString "VK_BLEND_OP_INVERT_OVG_EXT"
showsPrec _ (VkBlendOp 1000148043) = showString "VK_BLEND_OP_RED_EXT"
showsPrec _ (VkBlendOp 1000148044) = showString "VK_BLEND_OP_GREEN_EXT"
showsPrec _ (VkBlendOp 1000148045) = showString "VK_BLEND_OP_BLUE_EXT"
showsPrec p (VkBlendOp x) = showParen (p >= 11) (showString "VkBlendOp " . showsPrec 11 x)
instance Read VkBlendOp where
readPrec = parens ( choose [ ("VK_BLEND_OP_ADD", pure VK_BLEND_OP_ADD)
, ("VK_BLEND_OP_SUBTRACT", pure VK_BLEND_OP_SUBTRACT)
, ("VK_BLEND_OP_REVERSE_SUBTRACT", pure VK_BLEND_OP_REVERSE_SUBTRACT)
, ("VK_BLEND_OP_MIN", pure VK_BLEND_OP_MIN)
, ("VK_BLEND_OP_MAX", pure VK_BLEND_OP_MAX)
, -- The following values are from extensions, the patterns themselves are exported from the extension modules
("VK_BLEND_OP_ZERO_EXT", pure (VkBlendOp 1000148000))
, ("VK_BLEND_OP_SRC_EXT", pure (VkBlendOp 1000148001))
, ("VK_BLEND_OP_DST_EXT", pure (VkBlendOp 1000148002))
, ("VK_BLEND_OP_SRC_OVER_EXT", pure (VkBlendOp 1000148003))
, ("VK_BLEND_OP_DST_OVER_EXT", pure (VkBlendOp 1000148004))
, ("VK_BLEND_OP_SRC_IN_EXT", pure (VkBlendOp 1000148005))
, ("VK_BLEND_OP_DST_IN_EXT", pure (VkBlendOp 1000148006))
, ("VK_BLEND_OP_SRC_OUT_EXT", pure (VkBlendOp 1000148007))
, ("VK_BLEND_OP_DST_OUT_EXT", pure (VkBlendOp 1000148008))
, ("VK_BLEND_OP_SRC_ATOP_EXT", pure (VkBlendOp 1000148009))
, ("VK_BLEND_OP_DST_ATOP_EXT", pure (VkBlendOp 1000148010))
, ("VK_BLEND_OP_XOR_EXT", pure (VkBlendOp 1000148011))
, ("VK_BLEND_OP_MULTIPLY_EXT", pure (VkBlendOp 1000148012))
, ("VK_BLEND_OP_SCREEN_EXT", pure (VkBlendOp 1000148013))
, ("VK_BLEND_OP_OVERLAY_EXT", pure (VkBlendOp 1000148014))
, ("VK_BLEND_OP_DARKEN_EXT", pure (VkBlendOp 1000148015))
, ("VK_BLEND_OP_LIGHTEN_EXT", pure (VkBlendOp 1000148016))
, ("VK_BLEND_OP_COLORDODGE_EXT", pure (VkBlendOp 1000148017))
, ("VK_BLEND_OP_COLORBURN_EXT", pure (VkBlendOp 1000148018))
, ("VK_BLEND_OP_HARDLIGHT_EXT", pure (VkBlendOp 1000148019))
, ("VK_BLEND_OP_SOFTLIGHT_EXT", pure (VkBlendOp 1000148020))
, ("VK_BLEND_OP_DIFFERENCE_EXT", pure (VkBlendOp 1000148021))
, ("VK_BLEND_OP_EXCLUSION_EXT", pure (VkBlendOp 1000148022))
, ("VK_BLEND_OP_INVERT_EXT", pure (VkBlendOp 1000148023))
, ("VK_BLEND_OP_INVERT_RGB_EXT", pure (VkBlendOp 1000148024))
, ("VK_BLEND_OP_LINEARDODGE_EXT", pure (VkBlendOp 1000148025))
, ("VK_BLEND_OP_LINEARBURN_EXT", pure (VkBlendOp 1000148026))
, ("VK_BLEND_OP_VIVIDLIGHT_EXT", pure (VkBlendOp 1000148027))
, ("VK_BLEND_OP_LINEARLIGHT_EXT", pure (VkBlendOp 1000148028))
, ("VK_BLEND_OP_PINLIGHT_EXT", pure (VkBlendOp 1000148029))
, ("VK_BLEND_OP_HARDMIX_EXT", pure (VkBlendOp 1000148030))
, ("VK_BLEND_OP_HSL_HUE_EXT", pure (VkBlendOp 1000148031))
, ("VK_BLEND_OP_HSL_SATURATION_EXT", pure (VkBlendOp 1000148032))
, ("VK_BLEND_OP_HSL_COLOR_EXT", pure (VkBlendOp 1000148033))
, ("VK_BLEND_OP_HSL_LUMINOSITY_EXT", pure (VkBlendOp 1000148034))
, ("VK_BLEND_OP_PLUS_EXT", pure (VkBlendOp 1000148035))
, ("VK_BLEND_OP_PLUS_CLAMPED_EXT", pure (VkBlendOp 1000148036))
, ("VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", pure (VkBlendOp 1000148037))
, ("VK_BLEND_OP_PLUS_DARKER_EXT", pure (VkBlendOp 1000148038))
, ("VK_BLEND_OP_MINUS_EXT", pure (VkBlendOp 1000148039))
, ("VK_BLEND_OP_MINUS_CLAMPED_EXT", pure (VkBlendOp 1000148040))
, ("VK_BLEND_OP_CONTRAST_EXT", pure (VkBlendOp 1000148041))
, ("VK_BLEND_OP_INVERT_OVG_EXT", pure (VkBlendOp 1000148042))
, ("VK_BLEND_OP_RED_EXT", pure (VkBlendOp 1000148043))
, ("VK_BLEND_OP_GREEN_EXT", pure (VkBlendOp 1000148044))
, ("VK_BLEND_OP_BLUE_EXT", pure (VkBlendOp 1000148045))
] +++
prec 10 (do
expectP (Ident "VkBlendOp")
v <- step readPrec
pure (VkBlendOp v)
)
)
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"
pattern VK_BLEND_OP_ADD :: VkBlendOp
pattern VK_BLEND_OP_ADD = VkBlendOp 0
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"
pattern VK_BLEND_OP_SUBTRACT :: VkBlendOp
pattern VK_BLEND_OP_SUBTRACT = VkBlendOp 1
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"
pattern VK_BLEND_OP_REVERSE_SUBTRACT :: VkBlendOp
pattern VK_BLEND_OP_REVERSE_SUBTRACT = VkBlendOp 2
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"
pattern VK_BLEND_OP_MIN :: VkBlendOp
pattern VK_BLEND_OP_MIN = VkBlendOp 3
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"
pattern VK_BLEND_OP_MAX :: VkBlendOp
pattern VK_BLEND_OP_MAX = VkBlendOp 4
-- ** VkCompareOp
-- | VkCompareOp - Stencil comparison function
--
-- = See Also
--
-- 'VkPipelineDepthStencilStateCreateInfo',
-- 'Graphics.Vulkan.Core10.Sampler.VkSamplerCreateInfo', 'VkStencilOpState'
newtype VkCompareOp = VkCompareOp Int32
deriving (Eq, Ord, Storable)
instance Show VkCompareOp where
showsPrec _ VK_COMPARE_OP_NEVER = showString "VK_COMPARE_OP_NEVER"
showsPrec _ VK_COMPARE_OP_LESS = showString "VK_COMPARE_OP_LESS"
showsPrec _ VK_COMPARE_OP_EQUAL = showString "VK_COMPARE_OP_EQUAL"
showsPrec _ VK_COMPARE_OP_LESS_OR_EQUAL = showString "VK_COMPARE_OP_LESS_OR_EQUAL"
showsPrec _ VK_COMPARE_OP_GREATER = showString "VK_COMPARE_OP_GREATER"
showsPrec _ VK_COMPARE_OP_NOT_EQUAL = showString "VK_COMPARE_OP_NOT_EQUAL"
showsPrec _ VK_COMPARE_OP_GREATER_OR_EQUAL = showString "VK_COMPARE_OP_GREATER_OR_EQUAL"
showsPrec _ VK_COMPARE_OP_ALWAYS = showString "VK_COMPARE_OP_ALWAYS"
showsPrec p (VkCompareOp x) = showParen (p >= 11) (showString "VkCompareOp " . showsPrec 11 x)
instance Read VkCompareOp where
readPrec = parens ( choose [ ("VK_COMPARE_OP_NEVER", pure VK_COMPARE_OP_NEVER)
, ("VK_COMPARE_OP_LESS", pure VK_COMPARE_OP_LESS)
, ("VK_COMPARE_OP_EQUAL", pure VK_COMPARE_OP_EQUAL)
, ("VK_COMPARE_OP_LESS_OR_EQUAL", pure VK_COMPARE_OP_LESS_OR_EQUAL)
, ("VK_COMPARE_OP_GREATER", pure VK_COMPARE_OP_GREATER)
, ("VK_COMPARE_OP_NOT_EQUAL", pure VK_COMPARE_OP_NOT_EQUAL)
, ("VK_COMPARE_OP_GREATER_OR_EQUAL", pure VK_COMPARE_OP_GREATER_OR_EQUAL)
, ("VK_COMPARE_OP_ALWAYS", pure VK_COMPARE_OP_ALWAYS)
] +++
prec 10 (do
expectP (Ident "VkCompareOp")
v <- step readPrec
pure (VkCompareOp v)
)
)
-- | @VK_COMPARE_OP_NEVER@ specifies that the test never passes.
pattern VK_COMPARE_OP_NEVER :: VkCompareOp
pattern VK_COMPARE_OP_NEVER = VkCompareOp 0
-- | @VK_COMPARE_OP_LESS@ specifies that the test passes when R \< S.
pattern VK_COMPARE_OP_LESS :: VkCompareOp
pattern VK_COMPARE_OP_LESS = VkCompareOp 1
-- | @VK_COMPARE_OP_EQUAL@ specifies that the test passes when R = S.
pattern VK_COMPARE_OP_EQUAL :: VkCompareOp
pattern VK_COMPARE_OP_EQUAL = VkCompareOp 2
-- | @VK_COMPARE_OP_LESS_OR_EQUAL@ specifies that the test passes when R ≤ S.
pattern VK_COMPARE_OP_LESS_OR_EQUAL :: VkCompareOp
pattern VK_COMPARE_OP_LESS_OR_EQUAL = VkCompareOp 3
-- | @VK_COMPARE_OP_GREATER@ specifies that the test passes when R > S.
pattern VK_COMPARE_OP_GREATER :: VkCompareOp
pattern VK_COMPARE_OP_GREATER = VkCompareOp 4
-- | @VK_COMPARE_OP_NOT_EQUAL@ specifies that the test passes when R ≠ S.
pattern VK_COMPARE_OP_NOT_EQUAL :: VkCompareOp
pattern VK_COMPARE_OP_NOT_EQUAL = VkCompareOp 5
-- | @VK_COMPARE_OP_GREATER_OR_EQUAL@ specifies that the test passes when R ≥
-- S.
pattern VK_COMPARE_OP_GREATER_OR_EQUAL :: VkCompareOp
pattern VK_COMPARE_OP_GREATER_OR_EQUAL = VkCompareOp 6
-- | @VK_COMPARE_OP_ALWAYS@ specifies that the test always passes.
pattern VK_COMPARE_OP_ALWAYS :: VkCompareOp
pattern VK_COMPARE_OP_ALWAYS = VkCompareOp 7
-- ** VkDynamicState
-- | VkDynamicState - Indicate which dynamic state is taken from dynamic
-- state commands
--
-- = See Also
--
-- 'VkPipelineDynamicStateCreateInfo'
newtype VkDynamicState = VkDynamicState Int32
deriving (Eq, Ord, Storable)
instance Show VkDynamicState where
showsPrec _ VK_DYNAMIC_STATE_VIEWPORT = showString "VK_DYNAMIC_STATE_VIEWPORT"
showsPrec _ VK_DYNAMIC_STATE_SCISSOR = showString "VK_DYNAMIC_STATE_SCISSOR"
showsPrec _ VK_DYNAMIC_STATE_LINE_WIDTH = showString "VK_DYNAMIC_STATE_LINE_WIDTH"
showsPrec _ VK_DYNAMIC_STATE_DEPTH_BIAS = showString "VK_DYNAMIC_STATE_DEPTH_BIAS"
showsPrec _ VK_DYNAMIC_STATE_BLEND_CONSTANTS = showString "VK_DYNAMIC_STATE_BLEND_CONSTANTS"
showsPrec _ VK_DYNAMIC_STATE_DEPTH_BOUNDS = showString "VK_DYNAMIC_STATE_DEPTH_BOUNDS"
showsPrec _ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"
showsPrec _ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"
showsPrec _ VK_DYNAMIC_STATE_STENCIL_REFERENCE = showString "VK_DYNAMIC_STATE_STENCIL_REFERENCE"
-- The following values are from extensions, the patterns themselves are exported from the extension modules
showsPrec _ (VkDynamicState 1000087000) = showString "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"
showsPrec _ (VkDynamicState 1000099000) = showString "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"
showsPrec _ (VkDynamicState 1000143000) = showString "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"
showsPrec p (VkDynamicState x) = showParen (p >= 11) (showString "VkDynamicState " . showsPrec 11 x)
instance Read VkDynamicState where
readPrec = parens ( choose [ ("VK_DYNAMIC_STATE_VIEWPORT", pure VK_DYNAMIC_STATE_VIEWPORT)
, ("VK_DYNAMIC_STATE_SCISSOR", pure VK_DYNAMIC_STATE_SCISSOR)
, ("VK_DYNAMIC_STATE_LINE_WIDTH", pure VK_DYNAMIC_STATE_LINE_WIDTH)
, ("VK_DYNAMIC_STATE_DEPTH_BIAS", pure VK_DYNAMIC_STATE_DEPTH_BIAS)
, ("VK_DYNAMIC_STATE_BLEND_CONSTANTS", pure VK_DYNAMIC_STATE_BLEND_CONSTANTS)
, ("VK_DYNAMIC_STATE_DEPTH_BOUNDS", pure VK_DYNAMIC_STATE_DEPTH_BOUNDS)
, ("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK", pure VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK)
, ("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK", pure VK_DYNAMIC_STATE_STENCIL_WRITE_MASK)
, ("VK_DYNAMIC_STATE_STENCIL_REFERENCE", pure VK_DYNAMIC_STATE_STENCIL_REFERENCE)
, -- The following values are from extensions, the patterns themselves are exported from the extension modules
("VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", pure (VkDynamicState 1000087000))
, ("VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", pure (VkDynamicState 1000099000))
, ("VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", pure (VkDynamicState 1000143000))
] +++
prec 10 (do
expectP (Ident "VkDynamicState")
v <- step readPrec
pure (VkDynamicState v)
)
)
-- | @VK_DYNAMIC_STATE_VIEWPORT@ specifies that the @pViewports@ state in
-- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set
-- dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport' before
-- any draw commands. The number of viewports used by a pipeline is still
-- specified by the @viewportCount@ member of
-- @VkPipelineViewportStateCreateInfo@.
pattern VK_DYNAMIC_STATE_VIEWPORT :: VkDynamicState
pattern VK_DYNAMIC_STATE_VIEWPORT = VkDynamicState 0
-- | @VK_DYNAMIC_STATE_SCISSOR@ specifies that the @pScissors@ state in
-- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set
-- dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor' before
-- any draw commands. The number of scissor rectangles used by a pipeline
-- is still specified by the @scissorCount@ member of
-- @VkPipelineViewportStateCreateInfo@.
pattern VK_DYNAMIC_STATE_SCISSOR :: VkDynamicState
pattern VK_DYNAMIC_STATE_SCISSOR = VkDynamicState 1
-- | @VK_DYNAMIC_STATE_LINE_WIDTH@ specifies that the @lineWidth@ state in
-- @VkPipelineRasterizationStateCreateInfo@ will be ignored and /must/ be
-- set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetLineWidth' before
-- any draw commands that generate line primitives for the rasterizer.
pattern VK_DYNAMIC_STATE_LINE_WIDTH :: VkDynamicState
pattern VK_DYNAMIC_STATE_LINE_WIDTH = VkDynamicState 2
-- | @VK_DYNAMIC_STATE_DEPTH_BIAS@ specifies that the
-- @depthBiasConstantFactor@, @depthBiasClamp@ and @depthBiasSlopeFactor@
-- states in @VkPipelineRasterizationStateCreateInfo@ will be ignored and
-- /must/ be set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBias' before
-- any draws are performed with @depthBiasEnable@ in
-- @VkPipelineRasterizationStateCreateInfo@ set to @VK_TRUE@.
pattern VK_DYNAMIC_STATE_DEPTH_BIAS :: VkDynamicState
pattern VK_DYNAMIC_STATE_DEPTH_BIAS = VkDynamicState 3
-- | @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ specifies that the @blendConstants@
-- state in @VkPipelineColorBlendStateCreateInfo@ will be ignored and
-- /must/ be set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetBlendConstants'
-- before any draws are performed with a pipeline state with
-- @VkPipelineColorBlendAttachmentState@ member @blendEnable@ set to
-- @VK_TRUE@ and any of the blend functions using a constant blend color.
pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS :: VkDynamicState
pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS = VkDynamicState 4
-- | @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ specifies that the @minDepthBounds@ and
-- @maxDepthBounds@ states of 'VkPipelineDepthStencilStateCreateInfo' will
-- be ignored and /must/ be set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBounds'
-- before any draws are performed with a pipeline state with
-- @VkPipelineDepthStencilStateCreateInfo@ member @depthBoundsTestEnable@
-- set to @VK_TRUE@.
pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS :: VkDynamicState
pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS = VkDynamicState 5
-- | @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ specifies that the @compareMask@
-- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and
-- @back@ will be ignored and /must/ be set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilCompareMask'
-- before any draws are performed with a pipeline state with
-- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set
-- to @VK_TRUE@
pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK :: VkDynamicState
pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = VkDynamicState 6
-- | @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ specifies that the @writeMask@
-- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and
-- @back@ will be ignored and /must/ be set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilWriteMask'
-- before any draws are performed with a pipeline state with
-- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set
-- to @VK_TRUE@
pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK :: VkDynamicState
pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = VkDynamicState 7
-- | @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ specifies that the @reference@
-- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and
-- @back@ will be ignored and /must/ be set dynamically with
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilReference'
-- before any draws are performed with a pipeline state with
-- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set
-- to @VK_TRUE@
pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE :: VkDynamicState
pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE = VkDynamicState 8
-- ** VkPolygonMode
-- | VkPolygonMode - Control polygon rasterization mode
--
-- = Description
--
-- - @VK_POLYGON_MODE_POINT@ specifies that polygon vertices are drawn as
-- points.
--
-- - @VK_POLYGON_MODE_LINE@ specifies that polygon edges are drawn as
-- line segments.
--
-- - @VK_POLYGON_MODE_FILL@ specifies that polygons are rendered using
-- the polygon rasterization rules in this section.
--
-- - @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ specifies that polygons are
-- rendered using polygon rasterization rules, modified to consider a
-- sample within the primitive if the sample location is inside the
-- axis-aligned bounding box of the triangle after projection. Note
-- that the barycentric weights used in attribute interpolation /can/
-- extend outside the range [0,1] when these primitives are shaded.
-- Special treatment is given to a sample position on the boundary edge
-- of the bounding box. In such a case, if two rectangles lie on either
-- side of a common edge (with identical endpoints) on which a sample
-- position lies, then exactly one of the triangles /must/ produce a
-- fragment that covers that sample during rasterization.
--
-- Polygons rendered in @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ mode /may/
-- be clipped by the frustum or by user clip planes. If clipping is
-- applied, the triangle is culled rather than clipped.
--
-- Area calculation and facingness are determined for
-- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ mode using the triangle’s
-- vertices.
--
-- These modes affect only the final rasterization of polygons: in
-- particular, a polygon’s vertices are shaded and the polygon is clipped
-- and possibly culled before these modes are applied.
--
-- = See Also
--
-- 'VkPipelineRasterizationStateCreateInfo'
newtype VkPolygonMode = VkPolygonMode Int32
deriving (Eq, Ord, Storable)
instance Show VkPolygonMode where
showsPrec _ VK_POLYGON_MODE_FILL = showString "VK_POLYGON_MODE_FILL"
showsPrec _ VK_POLYGON_MODE_LINE = showString "VK_POLYGON_MODE_LINE"
showsPrec _ VK_POLYGON_MODE_POINT = showString "VK_POLYGON_MODE_POINT"
-- The following values are from extensions, the patterns themselves are exported from the extension modules
showsPrec _ (VkPolygonMode 1000153000) = showString "VK_POLYGON_MODE_FILL_RECTANGLE_NV"
showsPrec p (VkPolygonMode x) = showParen (p >= 11) (showString "VkPolygonMode " . showsPrec 11 x)
instance Read VkPolygonMode where
readPrec = parens ( choose [ ("VK_POLYGON_MODE_FILL", pure VK_POLYGON_MODE_FILL)
, ("VK_POLYGON_MODE_LINE", pure VK_POLYGON_MODE_LINE)
, ("VK_POLYGON_MODE_POINT", pure VK_POLYGON_MODE_POINT)
, -- The following values are from extensions, the patterns themselves are exported from the extension modules
("VK_POLYGON_MODE_FILL_RECTANGLE_NV", pure (VkPolygonMode 1000153000))
] +++
prec 10 (do
expectP (Ident "VkPolygonMode")
v <- step readPrec
pure (VkPolygonMode v)
)
)
-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL"
pattern VK_POLYGON_MODE_FILL :: VkPolygonMode
pattern VK_POLYGON_MODE_FILL = VkPolygonMode 0
-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_LINE"
pattern VK_POLYGON_MODE_LINE :: VkPolygonMode
pattern VK_POLYGON_MODE_LINE = VkPolygonMode 1
-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_POINT"
pattern VK_POLYGON_MODE_POINT :: VkPolygonMode
pattern VK_POLYGON_MODE_POINT = VkPolygonMode 2
-- ** VkFrontFace
-- | VkFrontFace - Interpret polygon front-facing orientation
--
-- = Description
--
-- - @VK_FRONT_FACE_COUNTER_CLOCKWISE@ specifies that a triangle with
-- positive area is considered front-facing.
--
-- - @VK_FRONT_FACE_CLOCKWISE@ specifies that a triangle with negative
-- area is considered front-facing.
--
-- Any triangle which is not front-facing is back-facing, including
-- zero-area triangles.
--
-- = See Also
--
-- 'VkPipelineRasterizationStateCreateInfo'
newtype VkFrontFace = VkFrontFace Int32
deriving (Eq, Ord, Storable)
instance Show VkFrontFace where
showsPrec _ VK_FRONT_FACE_COUNTER_CLOCKWISE = showString "VK_FRONT_FACE_COUNTER_CLOCKWISE"
showsPrec _ VK_FRONT_FACE_CLOCKWISE = showString "VK_FRONT_FACE_CLOCKWISE"
showsPrec p (VkFrontFace x) = showParen (p >= 11) (showString "VkFrontFace " . showsPrec 11 x)
instance Read VkFrontFace where
readPrec = parens ( choose [ ("VK_FRONT_FACE_COUNTER_CLOCKWISE", pure VK_FRONT_FACE_COUNTER_CLOCKWISE)
, ("VK_FRONT_FACE_CLOCKWISE", pure VK_FRONT_FACE_CLOCKWISE)
] +++
prec 10 (do
expectP (Ident "VkFrontFace")
v <- step readPrec
pure (VkFrontFace v)
)
)
-- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_COUNTER_CLOCKWISE"
pattern VK_FRONT_FACE_COUNTER_CLOCKWISE :: VkFrontFace
pattern VK_FRONT_FACE_COUNTER_CLOCKWISE = VkFrontFace 0
-- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_CLOCKWISE"
pattern VK_FRONT_FACE_CLOCKWISE :: VkFrontFace
pattern VK_FRONT_FACE_CLOCKWISE = VkFrontFace 1
-- ** VkLogicOp
-- | VkLogicOp - Framebuffer logical operations
--
-- = Description
--
-- The logical operations supported by Vulkan are summarized in the
-- following table in which
--
-- - ¬ is bitwise invert,
--
-- - ∧ is bitwise and,
--
-- - ∨ is bitwise or,
--
-- - ⊕ is bitwise exclusive or,
--
-- - s is the fragment’s Rs0, Gs0, Bs0 or As0 component value for the
-- fragment output corresponding to the color attachment being updated,
-- and
--
-- - d is the color attachment’s R, G, B or A component value:
--
-- +-----------------------------------+-----------------------------------+
-- | Mode | Operation |
-- +===================================+===================================+
-- | @VK_LOGIC_OP_CLEAR@ | 0 |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_AND@ | s ∧ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_AND_REVERSE@ | s ∧ ¬ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_COPY@ | s |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_AND_INVERTED@ | ¬ s ∧ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_NO_OP@ | d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_XOR@ | s ⊕ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_OR@ | s ∨ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_NOR@ | ¬ (s ∨ d) |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_EQUIVALENT@ | ¬ (s ⊕ d) |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_INVERT@ | ¬ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_OR_REVERSE@ | s ∨ ¬ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_COPY_INVERTED@ | ¬ s |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_OR_INVERTED@ | ¬ s ∨ d |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_NAND@ | ¬ (s ∧ d) |
-- +-----------------------------------+-----------------------------------+
-- | @VK_LOGIC_OP_SET@ | all 1s |
-- +-----------------------------------+-----------------------------------+
--
-- Logical Operations
--
-- The result of the logical operation is then written to the color
-- attachment as controlled by the component write mask, described in
-- [Blend
-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendoperations).
--
-- = See Also
--
-- 'VkPipelineColorBlendStateCreateInfo'
newtype VkLogicOp = VkLogicOp Int32
deriving (Eq, Ord, Storable)
instance Show VkLogicOp where
showsPrec _ VK_LOGIC_OP_CLEAR = showString "VK_LOGIC_OP_CLEAR"
showsPrec _ VK_LOGIC_OP_AND = showString "VK_LOGIC_OP_AND"
showsPrec _ VK_LOGIC_OP_AND_REVERSE = showString "VK_LOGIC_OP_AND_REVERSE"
showsPrec _ VK_LOGIC_OP_COPY = showString "VK_LOGIC_OP_COPY"
showsPrec _ VK_LOGIC_OP_AND_INVERTED = showString "VK_LOGIC_OP_AND_INVERTED"
showsPrec _ VK_LOGIC_OP_NO_OP = showString "VK_LOGIC_OP_NO_OP"
showsPrec _ VK_LOGIC_OP_XOR = showString "VK_LOGIC_OP_XOR"
showsPrec _ VK_LOGIC_OP_OR = showString "VK_LOGIC_OP_OR"
showsPrec _ VK_LOGIC_OP_NOR = showString "VK_LOGIC_OP_NOR"
showsPrec _ VK_LOGIC_OP_EQUIVALENT = showString "VK_LOGIC_OP_EQUIVALENT"
showsPrec _ VK_LOGIC_OP_INVERT = showString "VK_LOGIC_OP_INVERT"
showsPrec _ VK_LOGIC_OP_OR_REVERSE = showString "VK_LOGIC_OP_OR_REVERSE"
showsPrec _ VK_LOGIC_OP_COPY_INVERTED = showString "VK_LOGIC_OP_COPY_INVERTED"
showsPrec _ VK_LOGIC_OP_OR_INVERTED = showString "VK_LOGIC_OP_OR_INVERTED"
showsPrec _ VK_LOGIC_OP_NAND = showString "VK_LOGIC_OP_NAND"
showsPrec _ VK_LOGIC_OP_SET = showString "VK_LOGIC_OP_SET"
showsPrec p (VkLogicOp x) = showParen (p >= 11) (showString "VkLogicOp " . showsPrec 11 x)
instance Read VkLogicOp where
readPrec = parens ( choose [ ("VK_LOGIC_OP_CLEAR", pure VK_LOGIC_OP_CLEAR)
, ("VK_LOGIC_OP_AND", pure VK_LOGIC_OP_AND)
, ("VK_LOGIC_OP_AND_REVERSE", pure VK_LOGIC_OP_AND_REVERSE)
, ("VK_LOGIC_OP_COPY", pure VK_LOGIC_OP_COPY)
, ("VK_LOGIC_OP_AND_INVERTED", pure VK_LOGIC_OP_AND_INVERTED)
, ("VK_LOGIC_OP_NO_OP", pure VK_LOGIC_OP_NO_OP)
, ("VK_LOGIC_OP_XOR", pure VK_LOGIC_OP_XOR)
, ("VK_LOGIC_OP_OR", pure VK_LOGIC_OP_OR)
, ("VK_LOGIC_OP_NOR", pure VK_LOGIC_OP_NOR)
, ("VK_LOGIC_OP_EQUIVALENT", pure VK_LOGIC_OP_EQUIVALENT)
, ("VK_LOGIC_OP_INVERT", pure VK_LOGIC_OP_INVERT)
, ("VK_LOGIC_OP_OR_REVERSE", pure VK_LOGIC_OP_OR_REVERSE)
, ("VK_LOGIC_OP_COPY_INVERTED", pure VK_LOGIC_OP_COPY_INVERTED)
, ("VK_LOGIC_OP_OR_INVERTED", pure VK_LOGIC_OP_OR_INVERTED)
, ("VK_LOGIC_OP_NAND", pure VK_LOGIC_OP_NAND)
, ("VK_LOGIC_OP_SET", pure VK_LOGIC_OP_SET)
] +++
prec 10 (do
expectP (Ident "VkLogicOp")
v <- step readPrec
pure (VkLogicOp v)
)
)
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_CLEAR"
pattern VK_LOGIC_OP_CLEAR :: VkLogicOp
pattern VK_LOGIC_OP_CLEAR = VkLogicOp 0
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND"
pattern VK_LOGIC_OP_AND :: VkLogicOp
pattern VK_LOGIC_OP_AND = VkLogicOp 1
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_REVERSE"
pattern VK_LOGIC_OP_AND_REVERSE :: VkLogicOp
pattern VK_LOGIC_OP_AND_REVERSE = VkLogicOp 2
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY"
pattern VK_LOGIC_OP_COPY :: VkLogicOp
pattern VK_LOGIC_OP_COPY = VkLogicOp 3
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_INVERTED"
pattern VK_LOGIC_OP_AND_INVERTED :: VkLogicOp
pattern VK_LOGIC_OP_AND_INVERTED = VkLogicOp 4
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NO_OP"
pattern VK_LOGIC_OP_NO_OP :: VkLogicOp
pattern VK_LOGIC_OP_NO_OP = VkLogicOp 5
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_XOR"
pattern VK_LOGIC_OP_XOR :: VkLogicOp
pattern VK_LOGIC_OP_XOR = VkLogicOp 6
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR"
pattern VK_LOGIC_OP_OR :: VkLogicOp
pattern VK_LOGIC_OP_OR = VkLogicOp 7
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NOR"
pattern VK_LOGIC_OP_NOR :: VkLogicOp
pattern VK_LOGIC_OP_NOR = VkLogicOp 8
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_EQUIVALENT"
pattern VK_LOGIC_OP_EQUIVALENT :: VkLogicOp
pattern VK_LOGIC_OP_EQUIVALENT = VkLogicOp 9
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_INVERT"
pattern VK_LOGIC_OP_INVERT :: VkLogicOp
pattern VK_LOGIC_OP_INVERT = VkLogicOp 10
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_REVERSE"
pattern VK_LOGIC_OP_OR_REVERSE :: VkLogicOp
pattern VK_LOGIC_OP_OR_REVERSE = VkLogicOp 11
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY_INVERTED"
pattern VK_LOGIC_OP_COPY_INVERTED :: VkLogicOp
pattern VK_LOGIC_OP_COPY_INVERTED = VkLogicOp 12
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_INVERTED"
pattern VK_LOGIC_OP_OR_INVERTED :: VkLogicOp
pattern VK_LOGIC_OP_OR_INVERTED = VkLogicOp 13
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NAND"
pattern VK_LOGIC_OP_NAND :: VkLogicOp
pattern VK_LOGIC_OP_NAND = VkLogicOp 14
-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_SET"
pattern VK_LOGIC_OP_SET :: VkLogicOp
pattern VK_LOGIC_OP_SET = VkLogicOp 15
-- ** VkPrimitiveTopology
-- | VkPrimitiveTopology - Supported primitive topologies
--
-- = See Also
--
-- 'VkPipelineInputAssemblyStateCreateInfo'
newtype VkPrimitiveTopology = VkPrimitiveTopology Int32
deriving (Eq, Ord, Storable)
instance Show VkPrimitiveTopology where
showsPrec _ VK_PRIMITIVE_TOPOLOGY_POINT_LIST = showString "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"
showsPrec _ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = showString "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"
showsPrec p (VkPrimitiveTopology x) = showParen (p >= 11) (showString "VkPrimitiveTopology " . showsPrec 11 x)
instance Read VkPrimitiveTopology where
readPrec = parens ( choose [ ("VK_PRIMITIVE_TOPOLOGY_POINT_LIST", pure VK_PRIMITIVE_TOPOLOGY_POINT_LIST)
, ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST)
, ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP)
, ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)
, ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP)
, ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN)
, ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY)
, ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY)
, ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY)
, ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY)
, ("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", pure VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)
] +++
prec 10 (do
expectP (Ident "VkPrimitiveTopology")
v <- step readPrec
pure (VkPrimitiveTopology v)
)
)
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"
pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST = VkPrimitiveTopology 0
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"
pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST = VkPrimitiveTopology 1
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"
pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = VkPrimitiveTopology 2
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = VkPrimitiveTopology 3
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = VkPrimitiveTopology 4
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = VkPrimitiveTopology 5
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"
pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 6
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"
pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 7
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 8
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 9
-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"
pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST :: VkPrimitiveTopology
pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = VkPrimitiveTopology 10
-- ** VkStencilOp
-- | VkStencilOp - Stencil comparison function
--
-- = Description
--
-- - @VK_STENCIL_OP_KEEP@ keeps the current value.
--
-- - @VK_STENCIL_OP_ZERO@ sets the value to 0.
--
-- - @VK_STENCIL_OP_REPLACE@ sets the value to @reference@.
--
-- - @VK_STENCIL_OP_INCREMENT_AND_CLAMP@ increments the current value and
-- clamps to the maximum representable unsigned value.
--
-- - @VK_STENCIL_OP_DECREMENT_AND_CLAMP@ decrements the current value and
-- clamps to 0.
--
-- - @VK_STENCIL_OP_INVERT@ bitwise-inverts the current value.
--
-- - @VK_STENCIL_OP_INCREMENT_AND_WRAP@ increments the current value and
-- wraps to 0 when the maximum value would have been exceeded.
--
-- - @VK_STENCIL_OP_DECREMENT_AND_WRAP@ decrements the current value and
-- wraps to the maximum possible value when the value would go below 0.
--
-- For purposes of increment and decrement, the stencil bits are considered
-- as an unsigned integer.
--
-- If the stencil test fails, the sample’s coverage bit is cleared in the
-- fragment. If there is no stencil framebuffer attachment, stencil
-- modification /cannot/ occur, and it is as if the stencil tests always
-- pass.
--
-- If the stencil test passes, the @writeMask@ member of the
-- 'VkStencilOpState' structures controls how the updated stencil value is
-- written to the stencil framebuffer attachment.
--
-- The least significant s bits of @writeMask@, where s is the number of
-- bits in the stencil framebuffer attachment, specify an integer mask.
-- Where a 1 appears in this mask, the corresponding bit in the stencil
-- value in the depth\/stencil attachment is written; where a 0 appears,
-- the bit is not written. The @writeMask@ value uses either the
-- front-facing or back-facing state based on the facingness of the
-- fragment. Fragments generated by front-facing primitives use the front
-- mask and fragments generated by back-facing primitives use the back
-- mask.
--
-- = See Also
--
-- 'VkStencilOpState'
newtype VkStencilOp = VkStencilOp Int32
deriving (Eq, Ord, Storable)
instance Show VkStencilOp where
showsPrec _ VK_STENCIL_OP_KEEP = showString "VK_STENCIL_OP_KEEP"
showsPrec _ VK_STENCIL_OP_ZERO = showString "VK_STENCIL_OP_ZERO"
showsPrec _ VK_STENCIL_OP_REPLACE = showString "VK_STENCIL_OP_REPLACE"
showsPrec _ VK_STENCIL_OP_INCREMENT_AND_CLAMP = showString "VK_STENCIL_OP_INCREMENT_AND_CLAMP"
showsPrec _ VK_STENCIL_OP_DECREMENT_AND_CLAMP = showString "VK_STENCIL_OP_DECREMENT_AND_CLAMP"
showsPrec _ VK_STENCIL_OP_INVERT = showString "VK_STENCIL_OP_INVERT"
showsPrec _ VK_STENCIL_OP_INCREMENT_AND_WRAP = showString "VK_STENCIL_OP_INCREMENT_AND_WRAP"
showsPrec _ VK_STENCIL_OP_DECREMENT_AND_WRAP = showString "VK_STENCIL_OP_DECREMENT_AND_WRAP"
showsPrec p (VkStencilOp x) = showParen (p >= 11) (showString "VkStencilOp " . showsPrec 11 x)
instance Read VkStencilOp where
readPrec = parens ( choose [ ("VK_STENCIL_OP_KEEP", pure VK_STENCIL_OP_KEEP)
, ("VK_STENCIL_OP_ZERO", pure VK_STENCIL_OP_ZERO)
, ("VK_STENCIL_OP_REPLACE", pure VK_STENCIL_OP_REPLACE)
, ("VK_STENCIL_OP_INCREMENT_AND_CLAMP", pure VK_STENCIL_OP_INCREMENT_AND_CLAMP)
, ("VK_STENCIL_OP_DECREMENT_AND_CLAMP", pure VK_STENCIL_OP_DECREMENT_AND_CLAMP)
, ("VK_STENCIL_OP_INVERT", pure VK_STENCIL_OP_INVERT)
, ("VK_STENCIL_OP_INCREMENT_AND_WRAP", pure VK_STENCIL_OP_INCREMENT_AND_WRAP)
, ("VK_STENCIL_OP_DECREMENT_AND_WRAP", pure VK_STENCIL_OP_DECREMENT_AND_WRAP)
] +++
prec 10 (do
expectP (Ident "VkStencilOp")
v <- step readPrec
pure (VkStencilOp v)
)
)
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_KEEP"
pattern VK_STENCIL_OP_KEEP :: VkStencilOp
pattern VK_STENCIL_OP_KEEP = VkStencilOp 0
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_ZERO"
pattern VK_STENCIL_OP_ZERO :: VkStencilOp
pattern VK_STENCIL_OP_ZERO = VkStencilOp 1
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_REPLACE"
pattern VK_STENCIL_OP_REPLACE :: VkStencilOp
pattern VK_STENCIL_OP_REPLACE = VkStencilOp 2
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_CLAMP"
pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP :: VkStencilOp
pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP = VkStencilOp 3
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_CLAMP"
pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP :: VkStencilOp
pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP = VkStencilOp 4
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INVERT"
pattern VK_STENCIL_OP_INVERT :: VkStencilOp
pattern VK_STENCIL_OP_INVERT = VkStencilOp 5
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_WRAP"
pattern VK_STENCIL_OP_INCREMENT_AND_WRAP :: VkStencilOp
pattern VK_STENCIL_OP_INCREMENT_AND_WRAP = VkStencilOp 6
-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_WRAP"
pattern VK_STENCIL_OP_DECREMENT_AND_WRAP :: VkStencilOp
pattern VK_STENCIL_OP_DECREMENT_AND_WRAP = VkStencilOp 7
-- ** VkVertexInputRate
-- | VkVertexInputRate - Specify rate at which vertex attributes are pulled
-- from buffers
--
-- = See Also
--
-- 'VkVertexInputBindingDescription'
newtype VkVertexInputRate = VkVertexInputRate Int32
deriving (Eq, Ord, Storable)
instance Show VkVertexInputRate where
showsPrec _ VK_VERTEX_INPUT_RATE_VERTEX = showString "VK_VERTEX_INPUT_RATE_VERTEX"
showsPrec _ VK_VERTEX_INPUT_RATE_INSTANCE = showString "VK_VERTEX_INPUT_RATE_INSTANCE"
showsPrec p (VkVertexInputRate x) = showParen (p >= 11) (showString "VkVertexInputRate " . showsPrec 11 x)
instance Read VkVertexInputRate where
readPrec = parens ( choose [ ("VK_VERTEX_INPUT_RATE_VERTEX", pure VK_VERTEX_INPUT_RATE_VERTEX)
, ("VK_VERTEX_INPUT_RATE_INSTANCE", pure VK_VERTEX_INPUT_RATE_INSTANCE)
] +++
prec 10 (do
expectP (Ident "VkVertexInputRate")
v <- step readPrec
pure (VkVertexInputRate v)
)
)
-- | @VK_VERTEX_INPUT_RATE_VERTEX@ specifies that vertex attribute addressing
-- is a function of the vertex index.
pattern VK_VERTEX_INPUT_RATE_VERTEX :: VkVertexInputRate
pattern VK_VERTEX_INPUT_RATE_VERTEX = VkVertexInputRate 0
-- | @VK_VERTEX_INPUT_RATE_INSTANCE@ specifies that vertex attribute
-- addressing is a function of the instance index.
pattern VK_VERTEX_INPUT_RATE_INSTANCE :: VkVertexInputRate
pattern VK_VERTEX_INPUT_RATE_INSTANCE = VkVertexInputRate 1
-- ** VkPipelineDepthStencilStateCreateFlags
-- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineDepthStencilStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineDepthStencilStateCreateInfo'
newtype VkPipelineDepthStencilStateCreateFlags = VkPipelineDepthStencilStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineDepthStencilStateCreateFlags where
showsPrec p (VkPipelineDepthStencilStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDepthStencilStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineDepthStencilStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineDepthStencilStateCreateFlags")
v <- step readPrec
pure (VkPipelineDepthStencilStateCreateFlags v)
)
)
-- ** VkPipelineDynamicStateCreateFlags
-- | VkPipelineDynamicStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineDynamicStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineDynamicStateCreateInfo'
newtype VkPipelineDynamicStateCreateFlags = VkPipelineDynamicStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineDynamicStateCreateFlags where
showsPrec p (VkPipelineDynamicStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDynamicStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineDynamicStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineDynamicStateCreateFlags")
v <- step readPrec
pure (VkPipelineDynamicStateCreateFlags v)
)
)
-- ** VkPipelineColorBlendStateCreateFlags
-- | VkPipelineColorBlendStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineColorBlendStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineColorBlendStateCreateInfo'
newtype VkPipelineColorBlendStateCreateFlags = VkPipelineColorBlendStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineColorBlendStateCreateFlags where
showsPrec p (VkPipelineColorBlendStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineColorBlendStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineColorBlendStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineColorBlendStateCreateFlags")
v <- step readPrec
pure (VkPipelineColorBlendStateCreateFlags v)
)
)
-- ** VkPipelineMultisampleStateCreateFlags
-- | VkPipelineMultisampleStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineMultisampleStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineMultisampleStateCreateInfo'
newtype VkPipelineMultisampleStateCreateFlags = VkPipelineMultisampleStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineMultisampleStateCreateFlags where
showsPrec p (VkPipelineMultisampleStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineMultisampleStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineMultisampleStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineMultisampleStateCreateFlags")
v <- step readPrec
pure (VkPipelineMultisampleStateCreateFlags v)
)
)
-- ** VkPipelineRasterizationStateCreateFlags
-- | VkPipelineRasterizationStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineRasterizationStateCreateFlags@ is a bitmask type for setting
-- a mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineRasterizationStateCreateInfo'
newtype VkPipelineRasterizationStateCreateFlags = VkPipelineRasterizationStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineRasterizationStateCreateFlags where
showsPrec p (VkPipelineRasterizationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineRasterizationStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineRasterizationStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineRasterizationStateCreateFlags")
v <- step readPrec
pure (VkPipelineRasterizationStateCreateFlags v)
)
)
-- ** VkPipelineViewportStateCreateFlags
-- | VkPipelineViewportStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineViewportStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineViewportStateCreateInfo'
newtype VkPipelineViewportStateCreateFlags = VkPipelineViewportStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineViewportStateCreateFlags where
showsPrec p (VkPipelineViewportStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineViewportStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineViewportStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineViewportStateCreateFlags")
v <- step readPrec
pure (VkPipelineViewportStateCreateFlags v)
)
)
-- ** VkPipelineTessellationStateCreateFlags
-- | VkPipelineTessellationStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineTessellationStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineTessellationStateCreateInfo'
newtype VkPipelineTessellationStateCreateFlags = VkPipelineTessellationStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineTessellationStateCreateFlags where
showsPrec p (VkPipelineTessellationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineTessellationStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineTessellationStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineTessellationStateCreateFlags")
v <- step readPrec
pure (VkPipelineTessellationStateCreateFlags v)
)
)
-- ** VkPipelineInputAssemblyStateCreateFlags
-- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineInputAssemblyStateCreateFlags@ is a bitmask type for setting
-- a mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineInputAssemblyStateCreateInfo'
newtype VkPipelineInputAssemblyStateCreateFlags = VkPipelineInputAssemblyStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineInputAssemblyStateCreateFlags where
showsPrec p (VkPipelineInputAssemblyStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineInputAssemblyStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineInputAssemblyStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineInputAssemblyStateCreateFlags")
v <- step readPrec
pure (VkPipelineInputAssemblyStateCreateFlags v)
)
)
-- ** VkPipelineVertexInputStateCreateFlags
-- | VkPipelineVertexInputStateCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineVertexInputStateCreateFlags@ is a bitmask type for setting a
-- mask, but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineVertexInputStateCreateInfo'
newtype VkPipelineVertexInputStateCreateFlags = VkPipelineVertexInputStateCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineVertexInputStateCreateFlags where
showsPrec p (VkPipelineVertexInputStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineVertexInputStateCreateFlags " . showsPrec 11 x)
instance Read VkPipelineVertexInputStateCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineVertexInputStateCreateFlags")
v <- step readPrec
pure (VkPipelineVertexInputStateCreateFlags v)
)
)
-- ** VkPipelineShaderStageCreateFlags
-- | VkPipelineShaderStageCreateFlags - Reserved for future use
--
-- = Description
--
-- @VkPipelineShaderStageCreateFlags@ is a bitmask type for setting a mask,
-- but is currently reserved for future use.
--
-- = See Also
--
-- 'VkPipelineShaderStageCreateInfo'
newtype VkPipelineShaderStageCreateFlags = VkPipelineShaderStageCreateFlags VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineShaderStageCreateFlags where
showsPrec p (VkPipelineShaderStageCreateFlags x) = showParen (p >= 11) (showString "VkPipelineShaderStageCreateFlags " . showsPrec 11 x)
instance Read VkPipelineShaderStageCreateFlags where
readPrec = parens ( choose [
] +++
prec 10 (do
expectP (Ident "VkPipelineShaderStageCreateFlags")
v <- step readPrec
pure (VkPipelineShaderStageCreateFlags v)
)
)
-- ** VkShaderStageFlagBits
-- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage
--
-- = See Also
--
-- 'VkPipelineShaderStageCreateInfo',
-- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags',
-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'
newtype VkShaderStageFlagBits = VkShaderStageFlagBits VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkShaderStageFlagBits where
showsPrec _ VK_SHADER_STAGE_VERTEX_BIT = showString "VK_SHADER_STAGE_VERTEX_BIT"
showsPrec _ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = showString "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"
showsPrec _ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = showString "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"
showsPrec _ VK_SHADER_STAGE_GEOMETRY_BIT = showString "VK_SHADER_STAGE_GEOMETRY_BIT"
showsPrec _ VK_SHADER_STAGE_FRAGMENT_BIT = showString "VK_SHADER_STAGE_FRAGMENT_BIT"
showsPrec _ VK_SHADER_STAGE_COMPUTE_BIT = showString "VK_SHADER_STAGE_COMPUTE_BIT"
showsPrec _ VK_SHADER_STAGE_ALL_GRAPHICS = showString "VK_SHADER_STAGE_ALL_GRAPHICS"
showsPrec _ VK_SHADER_STAGE_ALL = showString "VK_SHADER_STAGE_ALL"
showsPrec p (VkShaderStageFlagBits x) = showParen (p >= 11) (showString "VkShaderStageFlagBits " . showsPrec 11 x)
instance Read VkShaderStageFlagBits where
readPrec = parens ( choose [ ("VK_SHADER_STAGE_VERTEX_BIT", pure VK_SHADER_STAGE_VERTEX_BIT)
, ("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT", pure VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT)
, ("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT", pure VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)
, ("VK_SHADER_STAGE_GEOMETRY_BIT", pure VK_SHADER_STAGE_GEOMETRY_BIT)
, ("VK_SHADER_STAGE_FRAGMENT_BIT", pure VK_SHADER_STAGE_FRAGMENT_BIT)
, ("VK_SHADER_STAGE_COMPUTE_BIT", pure VK_SHADER_STAGE_COMPUTE_BIT)
, ("VK_SHADER_STAGE_ALL_GRAPHICS", pure VK_SHADER_STAGE_ALL_GRAPHICS)
, ("VK_SHADER_STAGE_ALL", pure VK_SHADER_STAGE_ALL)
] +++
prec 10 (do
expectP (Ident "VkShaderStageFlagBits")
v <- step readPrec
pure (VkShaderStageFlagBits v)
)
)
-- | @VK_SHADER_STAGE_VERTEX_BIT@ specifies the vertex stage.
pattern VK_SHADER_STAGE_VERTEX_BIT :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_VERTEX_BIT = VkShaderStageFlagBits 0x00000001
-- | @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ specifies the tessellation
-- control stage.
pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = VkShaderStageFlagBits 0x00000002
-- | @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@ specifies the tessellation
-- evaluation stage.
pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = VkShaderStageFlagBits 0x00000004
-- | @VK_SHADER_STAGE_GEOMETRY_BIT@ specifies the geometry stage.
pattern VK_SHADER_STAGE_GEOMETRY_BIT :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_GEOMETRY_BIT = VkShaderStageFlagBits 0x00000008
-- | @VK_SHADER_STAGE_FRAGMENT_BIT@ specifies the fragment stage.
pattern VK_SHADER_STAGE_FRAGMENT_BIT :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_FRAGMENT_BIT = VkShaderStageFlagBits 0x00000010
-- | @VK_SHADER_STAGE_COMPUTE_BIT@ specifies the compute stage.
pattern VK_SHADER_STAGE_COMPUTE_BIT :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_COMPUTE_BIT = VkShaderStageFlagBits 0x00000020
-- | @VK_SHADER_STAGE_ALL_GRAPHICS@ is a combination of bits used as
-- shorthand to specify all graphics stages defined above (excluding the
-- compute stage).
pattern VK_SHADER_STAGE_ALL_GRAPHICS :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_ALL_GRAPHICS = VkShaderStageFlagBits 0x0000001f
-- | @VK_SHADER_STAGE_ALL@ is a combination of bits used as shorthand to
-- specify all shader stages supported by the device, including all
-- additional stages which are introduced by extensions.
pattern VK_SHADER_STAGE_ALL :: VkShaderStageFlagBits
pattern VK_SHADER_STAGE_ALL = VkShaderStageFlagBits 0x7fffffff
-- ** VkPipelineCreateFlagBits
-- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created
--
-- = Description
--
-- - @VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT@ specifies that the
-- created pipeline will not be optimized. Using this flag /may/ reduce
-- the time taken to create the pipeline.
--
-- - @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ specifies that the
-- pipeline to be created is allowed to be the parent of a pipeline
-- that will be created in a subsequent call to
-- 'vkCreateGraphicsPipelines' or 'vkCreateComputePipelines'.
--
-- - @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ specifies that the pipeline to
-- be created will be a child of a previously created parent pipeline.
--
-- - @VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT@ specifies that
-- any shader input variables decorated as @DeviceIndex@ will be
-- assigned values as if they were decorated as @ViewIndex@.
--
-- - @VK_PIPELINE_CREATE_DISPATCH_BASE@ specifies that a compute pipeline
-- /can/ be used with
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkCmdDispatchBase'
-- with a non-zero base workgroup.
--
-- It is valid to set both @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ and
-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@. This allows a pipeline to be both a
-- parent and possibly a child in a pipeline hierarchy. See [Pipeline
-- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives)
-- for more information.
--
-- = See Also
--
-- 'VkPipelineCreateFlags'
newtype VkPipelineCreateFlagBits = VkPipelineCreateFlagBits VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkPipelineCreateFlagBits where
showsPrec _ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = showString "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"
showsPrec _ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = showString "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"
showsPrec _ VK_PIPELINE_CREATE_DERIVATIVE_BIT = showString "VK_PIPELINE_CREATE_DERIVATIVE_BIT"
-- The following values are from extensions, the patterns themselves are exported from the extension modules
showsPrec _ (VkPipelineCreateFlagBits 0x00000008) = showString "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"
showsPrec _ (VkPipelineCreateFlagBits 0x00000010) = showString "VK_PIPELINE_CREATE_DISPATCH_BASE"
showsPrec p (VkPipelineCreateFlagBits x) = showParen (p >= 11) (showString "VkPipelineCreateFlagBits " . showsPrec 11 x)
instance Read VkPipelineCreateFlagBits where
readPrec = parens ( choose [ ("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)
, ("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)
, ("VK_PIPELINE_CREATE_DERIVATIVE_BIT", pure VK_PIPELINE_CREATE_DERIVATIVE_BIT)
, -- The following values are from extensions, the patterns themselves are exported from the extension modules
("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure (VkPipelineCreateFlagBits 0x00000008))
, ("VK_PIPELINE_CREATE_DISPATCH_BASE", pure (VkPipelineCreateFlagBits 0x00000010))
] +++
prec 10 (do
expectP (Ident "VkPipelineCreateFlagBits")
v <- step readPrec
pure (VkPipelineCreateFlagBits v)
)
)
-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"
pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT :: VkPipelineCreateFlagBits
pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = VkPipelineCreateFlagBits 0x00000001
-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"
pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT :: VkPipelineCreateFlagBits
pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = VkPipelineCreateFlagBits 0x00000002
-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT"
pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT :: VkPipelineCreateFlagBits
pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT = VkPipelineCreateFlagBits 0x00000004
-- ** VkColorComponentFlagBits
-- | VkColorComponentFlagBits - Bitmask controlling which components are
-- written to the framebuffer
--
-- = Description
--
-- - @VK_COLOR_COMPONENT_R_BIT@ specifies that the R value is written to
-- the color attachment for the appropriate sample. Otherwise, the
-- value in memory is unmodified.
--
-- - @VK_COLOR_COMPONENT_G_BIT@ specifies that the G value is written to
-- the color attachment for the appropriate sample. Otherwise, the
-- value in memory is unmodified.
--
-- - @VK_COLOR_COMPONENT_B_BIT@ specifies that the B value is written to
-- the color attachment for the appropriate sample. Otherwise, the
-- value in memory is unmodified.
--
-- - @VK_COLOR_COMPONENT_A_BIT@ specifies that the A value is written to
-- the color attachment for the appropriate sample. Otherwise, the
-- value in memory is unmodified.
--
-- The color write mask operation is applied regardless of whether blending
-- is enabled.
--
-- = See Also
--
-- 'VkColorComponentFlags'
newtype VkColorComponentFlagBits = VkColorComponentFlagBits VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkColorComponentFlagBits where
showsPrec _ VK_COLOR_COMPONENT_R_BIT = showString "VK_COLOR_COMPONENT_R_BIT"
showsPrec _ VK_COLOR_COMPONENT_G_BIT = showString "VK_COLOR_COMPONENT_G_BIT"
showsPrec _ VK_COLOR_COMPONENT_B_BIT = showString "VK_COLOR_COMPONENT_B_BIT"
showsPrec _ VK_COLOR_COMPONENT_A_BIT = showString "VK_COLOR_COMPONENT_A_BIT"
showsPrec p (VkColorComponentFlagBits x) = showParen (p >= 11) (showString "VkColorComponentFlagBits " . showsPrec 11 x)
instance Read VkColorComponentFlagBits where
readPrec = parens ( choose [ ("VK_COLOR_COMPONENT_R_BIT", pure VK_COLOR_COMPONENT_R_BIT)
, ("VK_COLOR_COMPONENT_G_BIT", pure VK_COLOR_COMPONENT_G_BIT)
, ("VK_COLOR_COMPONENT_B_BIT", pure VK_COLOR_COMPONENT_B_BIT)
, ("VK_COLOR_COMPONENT_A_BIT", pure VK_COLOR_COMPONENT_A_BIT)
] +++
prec 10 (do
expectP (Ident "VkColorComponentFlagBits")
v <- step readPrec
pure (VkColorComponentFlagBits v)
)
)
-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_R_BIT"
pattern VK_COLOR_COMPONENT_R_BIT :: VkColorComponentFlagBits
pattern VK_COLOR_COMPONENT_R_BIT = VkColorComponentFlagBits 0x00000001
-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_G_BIT"
pattern VK_COLOR_COMPONENT_G_BIT :: VkColorComponentFlagBits
pattern VK_COLOR_COMPONENT_G_BIT = VkColorComponentFlagBits 0x00000002
-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_B_BIT"
pattern VK_COLOR_COMPONENT_B_BIT :: VkColorComponentFlagBits
pattern VK_COLOR_COMPONENT_B_BIT = VkColorComponentFlagBits 0x00000004
-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_A_BIT"
pattern VK_COLOR_COMPONENT_A_BIT :: VkColorComponentFlagBits
pattern VK_COLOR_COMPONENT_A_BIT = VkColorComponentFlagBits 0x00000008
-- ** VkCullModeFlagBits
-- | VkCullModeFlagBits - Bitmask controlling triangle culling
--
-- = Description
--
-- - @VK_CULL_MODE_NONE@ specifies that no triangles are discarded
--
-- - @VK_CULL_MODE_FRONT_BIT@ specifies that front-facing triangles are
-- discarded
--
-- - @VK_CULL_MODE_BACK_BIT@ specifies that back-facing triangles are
-- discarded
--
-- - @VK_CULL_MODE_FRONT_AND_BACK@ specifies that all triangles are
-- discarded.
--
-- Following culling, fragments are produced for any triangles which have
-- not been discarded.
--
-- = See Also
--
-- 'VkCullModeFlags'
newtype VkCullModeFlagBits = VkCullModeFlagBits VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkCullModeFlagBits where
showsPrec _ VK_CULL_MODE_FRONT_BIT = showString "VK_CULL_MODE_FRONT_BIT"
showsPrec _ VK_CULL_MODE_BACK_BIT = showString "VK_CULL_MODE_BACK_BIT"
showsPrec _ VK_CULL_MODE_NONE = showString "VK_CULL_MODE_NONE"
showsPrec _ VK_CULL_MODE_FRONT_AND_BACK = showString "VK_CULL_MODE_FRONT_AND_BACK"
showsPrec p (VkCullModeFlagBits x) = showParen (p >= 11) (showString "VkCullModeFlagBits " . showsPrec 11 x)
instance Read VkCullModeFlagBits where
readPrec = parens ( choose [ ("VK_CULL_MODE_FRONT_BIT", pure VK_CULL_MODE_FRONT_BIT)
, ("VK_CULL_MODE_BACK_BIT", pure VK_CULL_MODE_BACK_BIT)
, ("VK_CULL_MODE_NONE", pure VK_CULL_MODE_NONE)
, ("VK_CULL_MODE_FRONT_AND_BACK", pure VK_CULL_MODE_FRONT_AND_BACK)
] +++
prec 10 (do
expectP (Ident "VkCullModeFlagBits")
v <- step readPrec
pure (VkCullModeFlagBits v)
)
)
-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_BIT"
pattern VK_CULL_MODE_FRONT_BIT :: VkCullModeFlagBits
pattern VK_CULL_MODE_FRONT_BIT = VkCullModeFlagBits 0x00000001
-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_BACK_BIT"
pattern VK_CULL_MODE_BACK_BIT :: VkCullModeFlagBits
pattern VK_CULL_MODE_BACK_BIT = VkCullModeFlagBits 0x00000002
-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_NONE"
pattern VK_CULL_MODE_NONE :: VkCullModeFlagBits
pattern VK_CULL_MODE_NONE = VkCullModeFlagBits 0x00000000
-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_AND_BACK"
pattern VK_CULL_MODE_FRONT_AND_BACK :: VkCullModeFlagBits
pattern VK_CULL_MODE_FRONT_AND_BACK = VkCullModeFlagBits 0x00000003
-- | Dummy data to tag the 'Ptr' with
data VkPipeline_T
-- | VkPipeline - Opaque handle to a pipeline object
--
-- = See Also
--
-- 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',
-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePipelineEntryNVX',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindPipeline',
-- 'vkCreateComputePipelines', 'vkCreateGraphicsPipelines',
-- 'vkDestroyPipeline',
-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'
type VkPipeline = Ptr VkPipeline_T
-- | Dummy data to tag the 'Ptr' with
data VkPipelineLayout_T
-- | VkPipelineLayout - Opaque handle to a pipeline layout object
--
-- = See Also
--
-- 'VkComputePipelineCreateInfo',
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',
-- 'VkGraphicsPipelineCreateInfo',
-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableDescriptorSetEntryNVX',
-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePushConstantEntryNVX',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPushConstants',
-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR',
-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',
-- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',
-- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout'
type VkPipelineLayout = Ptr VkPipelineLayout_T
-- | Dummy data to tag the 'Ptr' with
data VkRenderPass_T
-- | VkRenderPass - Opaque handle to a render pass object
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',
-- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',
-- 'VkGraphicsPipelineCreateInfo',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',
-- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',
-- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',
-- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'
type VkRenderPass = Ptr VkRenderPass_T
-- | vkCreateGraphicsPipelines - Create graphics pipelines
--
-- = Parameters
--
-- - @device@ is the logical device that creates the graphics pipelines.
--
-- - @pipelineCache@ is either
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that
-- pipeline caching is disabled; or the handle of a valid [pipeline
-- cache](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-cache)
-- object, in which case use of that cache is enabled for the duration
-- of the command.
--
-- - @createInfoCount@ is the length of the @pCreateInfos@ and
-- @pPipelines@ arrays.
--
-- - @pCreateInfos@ is an array of @VkGraphicsPipelineCreateInfo@
-- structures.
--
-- - @pAllocator@ controls host memory allocation as described in the
-- [Memory
-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)
-- chapter.
--
-- - @pPipelines@ is a pointer to an array in which the resulting
-- graphics pipeline objects are returned.
--
-- = Description
--
-- The 'VkGraphicsPipelineCreateInfo' structure includes an array of shader
-- create info structures containing all the desired active shader stages,
-- as well as creation info to define all relevant fixed-function stages,
-- and a pipeline layout.
--
-- == Valid Usage
--
-- - If the @flags@ member of any element of @pCreateInfos@ contains the
-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the
-- @basePipelineIndex@ member of that same element is not @-1@,
-- @basePipelineIndex@ /must/ be less than the index into
-- @pCreateInfos@ that corresponds to that element
--
-- - If the @flags@ member of any element of @pCreateInfos@ contains the
-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/
-- have been created with the
-- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set
--
-- == Valid Usage (Implicit)
--
-- - @device@ /must/ be a valid @VkDevice@ handle
--
-- - If @pipelineCache@ is not
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@
-- /must/ be a valid @VkPipelineCache@ handle
--
-- - @pCreateInfos@ /must/ be a valid pointer to an array of
-- @createInfoCount@ valid @VkGraphicsPipelineCreateInfo@ structures
--
-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid
-- pointer to a valid @VkAllocationCallbacks@ structure
--
-- - @pPipelines@ /must/ be a valid pointer to an array of
-- @createInfoCount@ @VkPipeline@ handles
--
-- - @createInfoCount@ /must/ be greater than @0@
--
-- - If @pipelineCache@ is a valid handle, it /must/ have been created,
-- allocated, or retrieved from @device@
--
-- == Return Codes
--
-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]
-- - @VK_SUCCESS@
--
-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]
-- - @VK_ERROR_OUT_OF_HOST_MEMORY@
--
-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@
--
-- - @VK_ERROR_INVALID_SHADER_NV@
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',
-- 'VkGraphicsPipelineCreateInfo', 'VkPipeline',
-- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'
foreign import ccall "vkCreateGraphicsPipelines" vkCreateGraphicsPipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult
-- | vkCreateComputePipelines - Creates a new compute pipeline object
--
-- = Parameters
--
-- - @device@ is the logical device that creates the compute pipelines.
--
-- - @pipelineCache@ is either
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that
-- pipeline caching is disabled; or the handle of a valid [pipeline
-- cache](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-cache)
-- object, in which case use of that cache is enabled for the duration
-- of the command.
--
-- - @createInfoCount@ is the length of the @pCreateInfos@ and
-- @pPipelines@ arrays.
--
-- - @pCreateInfos@ is an array of @VkComputePipelineCreateInfo@
-- structures.
--
-- - @pAllocator@ controls host memory allocation as described in the
-- [Memory
-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)
-- chapter.
--
-- - @pPipelines@ is a pointer to an array in which the resulting compute
-- pipeline objects are returned.
--
-- == Valid Usage
--
-- - If the @flags@ member of any element of @pCreateInfos@ contains the
-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the
-- @basePipelineIndex@ member of that same element is not @-1@,
-- @basePipelineIndex@ /must/ be less than the index into
-- @pCreateInfos@ that corresponds to that element
--
-- - If the @flags@ member of any element of @pCreateInfos@ contains the
-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/
-- have been created with the
-- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set
--
-- == Valid Usage (Implicit)
--
-- - @device@ /must/ be a valid @VkDevice@ handle
--
-- - If @pipelineCache@ is not
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@
-- /must/ be a valid @VkPipelineCache@ handle
--
-- - @pCreateInfos@ /must/ be a valid pointer to an array of
-- @createInfoCount@ valid @VkComputePipelineCreateInfo@ structures
--
-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid
-- pointer to a valid @VkAllocationCallbacks@ structure
--
-- - @pPipelines@ /must/ be a valid pointer to an array of
-- @createInfoCount@ @VkPipeline@ handles
--
-- - @createInfoCount@ /must/ be greater than @0@
--
-- - If @pipelineCache@ is a valid handle, it /must/ have been created,
-- allocated, or retrieved from @device@
--
-- == Return Codes
--
-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]
-- - @VK_SUCCESS@
--
-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]
-- - @VK_ERROR_OUT_OF_HOST_MEMORY@
--
-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@
--
-- - @VK_ERROR_INVALID_SHADER_NV@
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
-- 'VkComputePipelineCreateInfo',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline',
-- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'
foreign import ccall "vkCreateComputePipelines" vkCreateComputePipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult
-- | vkDestroyPipeline - Destroy a pipeline object
--
-- = Parameters
--
-- - @device@ is the logical device that destroys the pipeline.
--
-- - @pipeline@ is the handle of the pipeline to destroy.
--
-- - @pAllocator@ controls host memory allocation as described in the
-- [Memory
-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)
-- chapter.
--
-- == Valid Usage
--
-- - All submitted commands that refer to @pipeline@ /must/ have
-- completed execution
--
-- - If @VkAllocationCallbacks@ were provided when @pipeline@ was
-- created, a compatible set of callbacks /must/ be provided here
--
-- - If no @VkAllocationCallbacks@ were provided when @pipeline@ was
-- created, @pAllocator@ /must/ be @NULL@
--
-- == Valid Usage (Implicit)
--
-- - @device@ /must/ be a valid @VkDevice@ handle
--
-- - If @pipeline@ is not
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipeline@ /must/
-- be a valid @VkPipeline@ handle
--
-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid
-- pointer to a valid @VkAllocationCallbacks@ structure
--
-- - If @pipeline@ is a valid handle, it /must/ have been created,
-- allocated, or retrieved from @device@
--
-- == Host Synchronization
--
-- - Host access to @pipeline@ /must/ be externally synchronized
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline'
foreign import ccall "vkDestroyPipeline" vkDestroyPipeline :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
-- | VkOffset2D - Structure specifying a two-dimensional offset
--
-- = See Also
--
-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',
-- 'VkRect2D',
-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR'
data VkOffset2D = VkOffset2D
{ -- | @x@ is the x offset.
vkX :: Int32
, -- | @y@ is the y offset.
vkY :: Int32
}
deriving (Eq, Show)
instance Storable VkOffset2D where
sizeOf ~_ = 8
alignment ~_ = 4
peek ptr = VkOffset2D <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkOffset2D))
*> poke (ptr `plusPtr` 4) (vkY (poked :: VkOffset2D))
-- | VkExtent2D - Structure specifying a two-dimensional extent
--
-- = See Also
--
-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeParametersKHR',
-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',
-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR',
-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR',
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT',
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',
-- 'VkRect2D',
-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR',
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',
-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',
-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',
-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',
-- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'
data VkExtent2D = VkExtent2D
{ -- | @width@ is the width of the extent.
vkWidth :: Word32
, -- | @height@ is the height of the extent.
vkHeight :: Word32
}
deriving (Eq, Show)
instance Storable VkExtent2D where
sizeOf ~_ = 8
alignment ~_ = 4
peek ptr = VkExtent2D <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent2D))
*> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent2D))
-- | VkViewport - Structure specifying a viewport
--
-- = Description
--
-- The framebuffer depth coordinate @z@f /may/ be represented using either
-- a fixed-point or floating-point representation. However, a
-- floating-point representation /must/ be used if the depth\/stencil
-- attachment has a floating-point depth component. If an m-bit fixed-point
-- representation is used, we assume that it represents each value
-- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …, 2m-1 }, as k (e.g. 1.0 is
-- represented in binary as a string of all ones).
--
-- The viewport parameters shown in the above equations are found from
-- these values as
--
-- - ox = @x@ + @width@ \/ 2
--
-- - oy = @y@ + @height@ \/ 2
--
-- - oz = @minDepth@
--
-- - px = @width@
--
-- - py = @height@
--
-- - pz = @maxDepth@ - @minDepth@.
--
-- The application /can/ specify a negative term for @height@, which has
-- the effect of negating the y coordinate in clip space before performing
-- the transform. When using a negative @height@, the application /should/
-- also adjust the @y@ value to point to the lower left corner of the
-- viewport instead of the upper left corner. Using the negative @height@
-- allows the application to avoid having to negate the y component of the
-- @Position@ output from the last vertex processing stage in shaders that
-- also target other graphics APIs.
--
-- The width and height of the [implementation-dependent maximum viewport
-- dimensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxViewportDimensions)
-- /must/ be greater than or equal to the width and height of the largest
-- image which /can/ be created and attached to a framebuffer.
--
-- The floating-point viewport bounds are represented with an
-- [implementation-dependent
-- precision](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-viewportSubPixelBits).
--
-- == Valid Usage
--
-- - @width@ /must/ be greater than @0.0@
--
-- - @width@ /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[0]
--
-- - The absolute value of @height@ /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[1]
--
-- - @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]
--
-- - (@x@ + @width@) /must/ be less than or equal to
-- @viewportBoundsRange@[1]
--
-- - @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]
--
-- - @y@ /must/ be less than or equal to @viewportBoundsRange@[1]
--
-- - (@y@ + @height@) /must/ be greater than or equal to
-- @viewportBoundsRange@[0]
--
-- - (@y@ + @height@) /must/ be less than or equal to
-- @viewportBoundsRange@[1]
--
-- - Unless @{html_spec_relative}#VK_EXT_depth_range_unrestricted@
-- extension is enabled @minDepth@ /must/ be between @0.0@ and @1.0@,
-- inclusive
--
-- - Unless @{html_spec_relative}#VK_EXT_depth_range_unrestricted@
-- extension is enabled @maxDepth@ /must/ be between @0.0@ and @1.0@,
-- inclusive
--
-- = See Also
--
-- 'VkPipelineViewportStateCreateInfo',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport'
data VkViewport = VkViewport
{ -- | @x@ and @y@ are the viewport’s upper left corner (x,y).
vkX :: CFloat
, -- No documentation found for Nested "VkViewport" "y"
vkY :: CFloat
, -- | @width@ and @height@ are the viewport’s width and height, respectively.
vkWidth :: CFloat
, -- No documentation found for Nested "VkViewport" "height"
vkHeight :: CFloat
, -- | @minDepth@ and @maxDepth@ are the depth range for the viewport. It is
-- valid for @minDepth@ to be greater than or equal to @maxDepth@.
vkMinDepth :: CFloat
, -- No documentation found for Nested "VkViewport" "maxDepth"
vkMaxDepth :: CFloat
}
deriving (Eq, Show)
instance Storable VkViewport where
sizeOf ~_ = 24
alignment ~_ = 4
peek ptr = VkViewport <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 12)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkViewport))
*> poke (ptr `plusPtr` 4) (vkY (poked :: VkViewport))
*> poke (ptr `plusPtr` 8) (vkWidth (poked :: VkViewport))
*> poke (ptr `plusPtr` 12) (vkHeight (poked :: VkViewport))
*> poke (ptr `plusPtr` 16) (vkMinDepth (poked :: VkViewport))
*> poke (ptr `plusPtr` 20) (vkMaxDepth (poked :: VkViewport))
-- | VkRect2D - Structure specifying a two-dimensional subregion
--
-- = See Also
--
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkClearRect',
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo',
-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',
-- 'VkExtent2D', 'VkOffset2D',
-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT',
-- 'VkPipelineViewportStateCreateInfo',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',
-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.vkCmdSetDiscardRectangleEXT',
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor',
-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR'
data VkRect2D = VkRect2D
{ -- | @offset@ is a 'VkOffset2D' specifying the rectangle offset.
vkOffset :: VkOffset2D
, -- | @extent@ is a 'VkExtent2D' specifying the rectangle extent.
vkExtent :: VkExtent2D
}
deriving (Eq, Show)
instance Storable VkRect2D where
sizeOf ~_ = 16
alignment ~_ = 4
peek ptr = VkRect2D <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkOffset (poked :: VkRect2D))
*> poke (ptr `plusPtr` 8) (vkExtent (poked :: VkRect2D))
-- | VkSpecializationMapEntry - Structure specifying a specialization map
-- entry
--
-- = Description
--
-- If a @constantID@ value is not a specialization constant ID used in the
-- shader, that map entry does not affect the behavior of the pipeline.
--
-- == Valid Usage
--
-- - For a @constantID@ specialization constant declared in a shader,
-- @size@ /must/ match the byte size of the @constantID@. If the
-- specialization constant is of type @boolean@, @size@ /must/ be the
-- byte size of @VkBool32@
--
-- = See Also
--
-- 'VkSpecializationInfo'
data VkSpecializationMapEntry = VkSpecializationMapEntry
{ -- | @constantID@ is the ID of the specialization constant in SPIR-V.
vkConstantID :: Word32
, -- | @offset@ is the byte offset of the specialization constant value within
-- the supplied data buffer.
vkOffset :: Word32
, -- | @size@ is the byte size of the specialization constant value within the
-- supplied data buffer.
vkSize :: CSize
}
deriving (Eq, Show)
instance Storable VkSpecializationMapEntry where
sizeOf ~_ = 16
alignment ~_ = 8
peek ptr = VkSpecializationMapEntry <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkConstantID (poked :: VkSpecializationMapEntry))
*> poke (ptr `plusPtr` 4) (vkOffset (poked :: VkSpecializationMapEntry))
*> poke (ptr `plusPtr` 8) (vkSize (poked :: VkSpecializationMapEntry))
-- | VkSpecializationInfo - Structure specifying specialization info
--
-- = Description
--
-- @pMapEntries@ points to a structure of type 'VkSpecializationMapEntry'.
--
-- == Valid Usage
--
-- - The @offset@ member of each element of @pMapEntries@ /must/ be less
-- than @dataSize@
--
-- - The @size@ member of each element of @pMapEntries@ /must/ be less
-- than or equal to @dataSize@ minus @offset@
--
-- - If @mapEntryCount@ is not @0@, @pMapEntries@ /must/ be a valid
-- pointer to an array of @mapEntryCount@ valid
-- @VkSpecializationMapEntry@ structures
--
-- == Valid Usage (Implicit)
--
-- - If @dataSize@ is not @0@, @pData@ /must/ be a valid pointer to an
-- array of @dataSize@ bytes
--
-- = See Also
--
-- 'VkPipelineShaderStageCreateInfo', 'VkSpecializationMapEntry'
data VkSpecializationInfo = VkSpecializationInfo
{ -- | @mapEntryCount@ is the number of entries in the @pMapEntries@ array.
vkMapEntryCount :: Word32
, -- | @pMapEntries@ is a pointer to an array of @VkSpecializationMapEntry@
-- which maps constant IDs to offsets in @pData@.
vkPMapEntries :: Ptr VkSpecializationMapEntry
, -- | @dataSize@ is the byte size of the @pData@ buffer.
vkDataSize :: CSize
, -- | @pData@ contains the actual constant values to specialize with.
vkPData :: Ptr ()
}
deriving (Eq, Show)
instance Storable VkSpecializationInfo where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkSpecializationInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
poke ptr poked = poke (ptr `plusPtr` 0) (vkMapEntryCount (poked :: VkSpecializationInfo))
*> poke (ptr `plusPtr` 8) (vkPMapEntries (poked :: VkSpecializationInfo))
*> poke (ptr `plusPtr` 16) (vkDataSize (poked :: VkSpecializationInfo))
*> poke (ptr `plusPtr` 24) (vkPData (poked :: VkSpecializationInfo))
-- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a
-- newly created pipeline shader stage
--
-- == Valid Usage
--
-- - If the [geometry
-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)
-- feature is not enabled, @stage@ /must/ not be
-- @VK_SHADER_STAGE_GEOMETRY_BIT@
--
-- - If the [tessellation
-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)
-- feature is not enabled, @stage@ /must/ not be
-- @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or
-- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@
--
-- - @stage@ /must/ not be @VK_SHADER_STAGE_ALL_GRAPHICS@, or
-- @VK_SHADER_STAGE_ALL@
--
-- - @pName@ /must/ be the name of an @OpEntryPoint@ in @module@ with an
-- execution model that matches @stage@
--
-- - If the identified entry point includes any variable in its interface
-- that is declared with the @ClipDistance@ @BuiltIn@ decoration, that
-- variable /must/ not have an array size greater than
-- @VkPhysicalDeviceLimits@::@maxClipDistances@
--
-- - If the identified entry point includes any variable in its interface
-- that is declared with the @CullDistance@ @BuiltIn@ decoration, that
-- variable /must/ not have an array size greater than
-- @VkPhysicalDeviceLimits@::@maxCullDistances@
--
-- - If the identified entry point includes any variables in its
-- interface that are declared with the @ClipDistance@ or
-- @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have
-- array sizes which sum to more than
-- @VkPhysicalDeviceLimits@::@maxCombinedClipAndCullDistances@
--
-- - If the identified entry point includes any variable in its interface
-- that is declared with the @SampleMask@ @BuiltIn@ decoration, that
-- variable /must/ not have an array size greater than
-- @VkPhysicalDeviceLimits@::@maxSampleMaskWords@
--
-- - If @stage@ is @VK_SHADER_STAGE_VERTEX_BIT@, the identified entry
-- point /must/ not include any input variable in its interface that is
-- decorated with @CullDistance@
--
-- - If @stage@ is @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or
-- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@, and the identified
-- entry point has an @OpExecutionMode@ instruction that specifies a
-- patch size with @OutputVertices@, the patch size /must/ be greater
-- than @0@ and less than or equal to
-- @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@
--
-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry
-- point /must/ have an @OpExecutionMode@ instruction that specifies a
-- maximum output vertex count that is greater than @0@ and less than
-- or equal to @VkPhysicalDeviceLimits@::@maxGeometryOutputVertices@
--
-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry
-- point /must/ have an @OpExecutionMode@ instruction that specifies an
-- invocation count that is greater than @0@ and less than or equal to
-- @VkPhysicalDeviceLimits@::@maxGeometryShaderInvocations@
--
-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified
-- entry point writes to @Layer@ for any primitive, it /must/ write the
-- same value to @Layer@ for all vertices of a given primitive
--
-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified
-- entry point writes to @ViewportIndex@ for any primitive, it /must/
-- write the same value to @ViewportIndex@ for all vertices of a given
-- primitive
--
-- - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, the identified entry
-- point /must/ not include any output variables in its interface
-- decorated with @CullDistance@
--
-- - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified
-- entry point writes to @FragDepth@ in any execution path, it /must/
-- write to @FragDepth@ in all execution paths
--
-- - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified
-- entry point writes to @FragStencilRefEXT@ in any execution path, it
-- /must/ write to @FragStencilRefEXT@ in all execution paths
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@
--
-- - @flags@ /must/ be @0@
--
-- - @stage@ /must/ be a valid 'VkShaderStageFlagBits' value
--
-- - @module@ /must/ be a valid @VkShaderModule@ handle
--
-- - @pName@ /must/ be a null-terminated UTF-8 string
--
-- - If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/
-- be a valid pointer to a valid @VkSpecializationInfo@ structure
--
-- = See Also
--
-- 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineShaderStageCreateFlags',
-- 'Graphics.Vulkan.Core10.Shader.VkShaderModule', 'VkShaderStageFlagBits',
-- 'VkSpecializationInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineShaderStageCreateInfo = VkPipelineShaderStageCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineShaderStageCreateFlags
, -- | @stage@ is a 'VkShaderStageFlagBits' value specifying a single pipeline
-- stage.
vkStage :: VkShaderStageFlagBits
, -- | @module@ is a @VkShaderModule@ object that contains the shader for this
-- stage.
vkModule :: VkShaderModule
, -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the
-- entry point name of the shader for this stage.
vkPName :: Ptr CChar
, -- | @pSpecializationInfo@ is a pointer to 'VkSpecializationInfo', as
-- described in [Specialization
-- Constants](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-specialization-constants),
-- and /can/ be @NULL@.
vkPSpecializationInfo :: Ptr VkSpecializationInfo
}
deriving (Eq, Show)
instance Storable VkPipelineShaderStageCreateInfo where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkPipelineShaderStageCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineShaderStageCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineShaderStageCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineShaderStageCreateInfo))
*> poke (ptr `plusPtr` 20) (vkStage (poked :: VkPipelineShaderStageCreateInfo))
*> poke (ptr `plusPtr` 24) (vkModule (poked :: VkPipelineShaderStageCreateInfo))
*> poke (ptr `plusPtr` 32) (vkPName (poked :: VkPipelineShaderStageCreateInfo))
*> poke (ptr `plusPtr` 40) (vkPSpecializationInfo (poked :: VkPipelineShaderStageCreateInfo))
-- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly
-- created compute pipeline
--
-- = Description
--
-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
-- described in more detail in [Pipeline
-- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives).
--
-- @stage@ points to a structure of type @VkPipelineShaderStageCreateInfo@.
--
-- == Valid Usage
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a
-- valid handle to a compute @VkPipeline@
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineHandle@ is
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',
-- @basePipelineIndex@ /must/ be a valid index into the calling
-- command’s @pCreateInfos@ parameter
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineHandle@ is not
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',
-- @basePipelineIndex@ /must/ be -1
--
-- - The @stage@ member of @stage@ /must/ be
-- @VK_SHADER_STAGE_COMPUTE_BIT@
--
-- - The shader code for the entry point identified by @stage@ and the
-- rest of the state identified by this structure /must/ adhere to the
-- pipeline linking rules described in the [Shader
-- Interfaces](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces)
-- chapter
--
-- - @layout@ /must/ be
-- [consistent](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency)
-- with the layout of the compute shader specified in @stage@
--
-- - The number of resources in @layout@ accessible to the compute shader
-- stage /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxPerStageResources@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@
--
-- - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'
-- values
--
-- - @stage@ /must/ be a valid @VkPipelineShaderStageCreateInfo@
-- structure
--
-- - @layout@ /must/ be a valid @VkPipelineLayout@ handle
--
-- - Both of @basePipelineHandle@, and @layout@ that are valid handles
-- /must/ have been created, allocated, or retrieved from the same
-- @VkDevice@
--
-- = See Also
--
-- 'VkPipeline', 'VkPipelineCreateFlags', 'VkPipelineLayout',
-- 'VkPipelineShaderStageCreateInfo',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'vkCreateComputePipelines'
data VkComputePipelineCreateInfo = VkComputePipelineCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is a bitmask of 'VkPipelineCreateFlagBits' specifying how the
-- pipeline will be generated.
vkFlags :: VkPipelineCreateFlags
, -- | @stage@ is a 'VkPipelineShaderStageCreateInfo' describing the compute
-- shader.
vkStage :: VkPipelineShaderStageCreateInfo
, -- | @layout@ is the description of binding locations used by both the
-- pipeline and descriptor sets used with the pipeline.
vkLayout :: VkPipelineLayout
, -- | @basePipelineHandle@ is a pipeline to derive from
vkBasePipelineHandle :: VkPipeline
, -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-- as a pipeline to derive from
vkBasePipelineIndex :: Int32
}
deriving (Eq, Show)
instance Storable VkComputePipelineCreateInfo where
sizeOf ~_ = 96
alignment ~_ = 8
peek ptr = VkComputePipelineCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 72)
<*> peek (ptr `plusPtr` 80)
<*> peek (ptr `plusPtr` 88)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkComputePipelineCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkComputePipelineCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkComputePipelineCreateInfo))
*> poke (ptr `plusPtr` 24) (vkStage (poked :: VkComputePipelineCreateInfo))
*> poke (ptr `plusPtr` 72) (vkLayout (poked :: VkComputePipelineCreateInfo))
*> poke (ptr `plusPtr` 80) (vkBasePipelineHandle (poked :: VkComputePipelineCreateInfo))
*> poke (ptr `plusPtr` 88) (vkBasePipelineIndex (poked :: VkComputePipelineCreateInfo))
-- | VkVertexInputBindingDescription - Structure specifying vertex input
-- binding description
--
-- == Valid Usage
--
-- - @binding@ /must/ be less than
-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@
--
-- - @stride@ /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxVertexInputBindingStride@
--
-- == Valid Usage (Implicit)
--
-- - @inputRate@ /must/ be a valid 'VkVertexInputRate' value
--
-- = See Also
--
-- 'VkPipelineVertexInputStateCreateInfo', 'VkVertexInputRate'
data VkVertexInputBindingDescription = VkVertexInputBindingDescription
{ -- | @binding@ is the binding number that this structure describes.
vkBinding :: Word32
, -- | @stride@ is the distance in bytes between two consecutive elements
-- within the buffer.
vkStride :: Word32
, -- | @inputRate@ is a 'VkVertexInputRate' value specifying whether vertex
-- attribute addressing is a function of the vertex index or of the
-- instance index.
vkInputRate :: VkVertexInputRate
}
deriving (Eq, Show)
instance Storable VkVertexInputBindingDescription where
sizeOf ~_ = 12
alignment ~_ = 4
peek ptr = VkVertexInputBindingDescription <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkBinding (poked :: VkVertexInputBindingDescription))
*> poke (ptr `plusPtr` 4) (vkStride (poked :: VkVertexInputBindingDescription))
*> poke (ptr `plusPtr` 8) (vkInputRate (poked :: VkVertexInputBindingDescription))
-- | VkVertexInputAttributeDescription - Structure specifying vertex input
-- attribute description
--
-- == Valid Usage
--
-- - @location@ /must/ be less than
-- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@
--
-- - @binding@ /must/ be less than
-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@
--
-- - @offset@ /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxVertexInputAttributeOffset@
--
-- - @format@ /must/ be allowed as a vertex buffer format, as specified
-- by the @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ flag in
-- @VkFormatProperties@::@bufferFeatures@ returned by
-- @vkGetPhysicalDeviceFormatProperties@
--
-- == Valid Usage (Implicit)
--
-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'
-- value
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.Core.VkFormat',
-- 'VkPipelineVertexInputStateCreateInfo'
data VkVertexInputAttributeDescription = VkVertexInputAttributeDescription
{ -- | @location@ is the shader binding location number for this attribute.
vkLocation :: Word32
, -- | @binding@ is the binding number which this attribute takes its data
-- from.
vkBinding :: Word32
, -- | @format@ is the size and type of the vertex attribute data.
vkFormat :: VkFormat
, -- | @offset@ is a byte offset of this attribute relative to the start of an
-- element in the vertex input binding.
vkOffset :: Word32
}
deriving (Eq, Show)
instance Storable VkVertexInputAttributeDescription where
sizeOf ~_ = 16
alignment ~_ = 4
peek ptr = VkVertexInputAttributeDescription <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 12)
poke ptr poked = poke (ptr `plusPtr` 0) (vkLocation (poked :: VkVertexInputAttributeDescription))
*> poke (ptr `plusPtr` 4) (vkBinding (poked :: VkVertexInputAttributeDescription))
*> poke (ptr `plusPtr` 8) (vkFormat (poked :: VkVertexInputAttributeDescription))
*> poke (ptr `plusPtr` 12) (vkOffset (poked :: VkVertexInputAttributeDescription))
-- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters
-- of a newly created pipeline vertex input state
--
-- == Valid Usage
--
-- - @vertexBindingDescriptionCount@ /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@
--
-- - @vertexAttributeDescriptionCount@ /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@
--
-- - For every @binding@ specified by each element of
-- @pVertexAttributeDescriptions@, a @VkVertexInputBindingDescription@
-- /must/ exist in @pVertexBindingDescriptions@ with the same value of
-- @binding@
--
-- - All elements of @pVertexBindingDescriptions@ /must/ describe
-- distinct binding numbers
--
-- - All elements of @pVertexAttributeDescriptions@ /must/ describe
-- distinct attribute locations
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of
-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPipelineVertexInputDivisorStateCreateInfoEXT'
--
-- - @flags@ /must/ be @0@
--
-- - If @vertexBindingDescriptionCount@ is not @0@,
-- @pVertexBindingDescriptions@ /must/ be a valid pointer to an array
-- of @vertexBindingDescriptionCount@ valid
-- @VkVertexInputBindingDescription@ structures
--
-- - If @vertexAttributeDescriptionCount@ is not @0@,
-- @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array
-- of @vertexAttributeDescriptionCount@ valid
-- @VkVertexInputAttributeDescription@ structures
--
-- = See Also
--
-- 'VkGraphicsPipelineCreateInfo', 'VkPipelineVertexInputStateCreateFlags',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'VkVertexInputAttributeDescription', 'VkVertexInputBindingDescription'
data VkPipelineVertexInputStateCreateInfo = VkPipelineVertexInputStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineVertexInputStateCreateFlags
, -- | @vertexBindingDescriptionCount@ is the number of vertex binding
-- descriptions provided in @pVertexBindingDescriptions@.
vkVertexBindingDescriptionCount :: Word32
, -- | @pVertexBindingDescriptions@ is a pointer to an array of
-- @VkVertexInputBindingDescription@ structures.
vkPVertexBindingDescriptions :: Ptr VkVertexInputBindingDescription
, -- | @vertexAttributeDescriptionCount@ is the number of vertex attribute
-- descriptions provided in @pVertexAttributeDescriptions@.
vkVertexAttributeDescriptionCount :: Word32
, -- | @pVertexAttributeDescriptions@ is a pointer to an array of
-- @VkVertexInputAttributeDescription@ structures.
vkPVertexAttributeDescriptions :: Ptr VkVertexInputAttributeDescription
}
deriving (Eq, Show)
instance Storable VkPipelineVertexInputStateCreateInfo where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkPipelineVertexInputStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineVertexInputStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineVertexInputStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineVertexInputStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkVertexBindingDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkPVertexBindingDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))
*> poke (ptr `plusPtr` 32) (vkVertexAttributeDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))
*> poke (ptr `plusPtr` 40) (vkPVertexAttributeDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))
-- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters
-- of a newly created pipeline input assembly state
--
-- = Description
--
-- Restarting the assembly of primitives discards the most recent index
-- values if those elements formed an incomplete primitive, and restarts
-- the primitive assembly using the subsequent indices, but only assembling
-- the immediately following element through the end of the originally
-- specified elements. The primitive restart index value comparison is
-- performed before adding the @vertexOffset@ value to the index value.
--
-- == Valid Usage
--
-- - If @topology@ is @VK_PRIMITIVE_TOPOLOGY_POINT_LIST@,
-- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST@,
-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST@,
-- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,
-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or
-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @primitiveRestartEnable@ /must/
-- be @VK_FALSE@
--
-- - If the [geometry
-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)
-- feature is not enabled, @topology@ /must/ not be any of
-- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,
-- @VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY@,
-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or
-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY@
--
-- - If the [tessellation
-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)
-- feature is not enabled, @topology@ /must/ not be
-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@
--
-- - @flags@ /must/ be @0@
--
-- - @topology@ /must/ be a valid 'VkPrimitiveTopology' value
--
-- = See Also
--
-- @VkBool32@, 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineInputAssemblyStateCreateFlags', 'VkPrimitiveTopology',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineInputAssemblyStateCreateInfo = VkPipelineInputAssemblyStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineInputAssemblyStateCreateFlags
, -- | @topology@ is a 'VkPrimitiveTopology' defining the primitive topology,
-- as described below.
vkTopology :: VkPrimitiveTopology
, -- | @primitiveRestartEnable@ controls whether a special vertex index value
-- is treated as restarting the assembly of primitives. This enable only
-- applies to indexed draws
-- ('Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexed' and
-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect'),
-- and the special index value is either 0xFFFFFFFF when the @indexType@
-- parameter of @vkCmdBindIndexBuffer@ is equal to @VK_INDEX_TYPE_UINT32@,
-- or 0xFFFF when @indexType@ is equal to @VK_INDEX_TYPE_UINT16@. Primitive
-- restart is not allowed for “list” topologies.
vkPrimitiveRestartEnable :: VkBool32
}
deriving (Eq, Show)
instance Storable VkPipelineInputAssemblyStateCreateInfo where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkPipelineInputAssemblyStateCreateInfo <$> 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 :: VkPipelineInputAssemblyStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineInputAssemblyStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineInputAssemblyStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkTopology (poked :: VkPipelineInputAssemblyStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkPrimitiveRestartEnable (poked :: VkPipelineInputAssemblyStateCreateInfo))
-- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters
-- of a newly created pipeline tessellation state
--
-- == Valid Usage
--
-- - @patchControlPoints@ /must/ be greater than zero and less than or
-- equal to @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPipelineTessellationDomainOriginStateCreateInfo'
--
-- - @flags@ /must/ be @0@
--
-- = See Also
--
-- 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineTessellationStateCreateFlags',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineTessellationStateCreateInfo = VkPipelineTessellationStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineTessellationStateCreateFlags
, -- | @patchControlPoints@ number of control points per patch.
vkPatchControlPoints :: Word32
}
deriving (Eq, Show)
instance Storable VkPipelineTessellationStateCreateInfo where
sizeOf ~_ = 24
alignment ~_ = 8
peek ptr = VkPipelineTessellationStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineTessellationStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineTessellationStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineTessellationStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkPatchControlPoints (poked :: VkPipelineTessellationStateCreateInfo))
-- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a
-- newly created pipeline viewport state
--
-- == Valid Usage
--
-- - If the [multiple
-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)
-- feature is not enabled, @viewportCount@ /must/ be @1@
--
-- - If the [multiple
-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)
-- feature is not enabled, @scissorCount@ /must/ be @1@
--
-- - @viewportCount@ /must/ be between @1@ and
-- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive
--
-- - @scissorCount@ /must/ be between @1@ and
-- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive
--
-- - @scissorCount@ and @viewportCount@ /must/ be identical
--
-- - If the @viewportWScalingEnable@ member of a
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'
-- structure chained to the @pNext@ chain is @VK_TRUE@, the
-- @viewportCount@ member of the
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'
-- structure /must/ be equal to @viewportCount@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO@
--
-- - 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
-- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.VkPipelineViewportSwizzleStateCreateInfoNV'
-- or
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'
--
-- - Each @sType@ member in the @pNext@ chain /must/ be unique
--
-- - @flags@ /must/ be @0@
--
-- - @viewportCount@ /must/ be greater than @0@
--
-- - @scissorCount@ /must/ be greater than @0@
--
-- = See Also
--
-- 'VkGraphicsPipelineCreateInfo', 'VkPipelineViewportStateCreateFlags',
-- 'VkRect2D', 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkViewport'
data VkPipelineViewportStateCreateInfo = VkPipelineViewportStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineViewportStateCreateFlags
, -- | @viewportCount@ is the number of viewports used by the pipeline.
vkViewportCount :: Word32
, -- | @pViewports@ is a pointer to an array of 'VkViewport' structures,
-- defining the viewport transforms. If the viewport state is dynamic, this
-- member is ignored.
vkPViewports :: Ptr VkViewport
, -- | @scissorCount@ is the number of
-- [scissors](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-scissor)
-- and /must/ match the number of viewports.
vkScissorCount :: Word32
, -- | @pScissors@ is a pointer to an array of @VkRect2D@ structures which
-- define the rectangular bounds of the scissor for the corresponding
-- viewport. If the scissor state is dynamic, this member is ignored.
vkPScissors :: Ptr VkRect2D
}
deriving (Eq, Show)
instance Storable VkPipelineViewportStateCreateInfo where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkPipelineViewportStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineViewportStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkPViewports (poked :: VkPipelineViewportStateCreateInfo))
*> poke (ptr `plusPtr` 32) (vkScissorCount (poked :: VkPipelineViewportStateCreateInfo))
*> poke (ptr `plusPtr` 40) (vkPScissors (poked :: VkPipelineViewportStateCreateInfo))
-- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters
-- of a newly created pipeline rasterization state
--
-- = Description
--
-- The application /can/ also add a
-- @VkPipelineRasterizationStateRasterizationOrderAMD@ structure to the
-- @pNext@ chain of a @VkPipelineRasterizationStateCreateInfo@ structure.
-- This structure enables selecting the rasterization order to use when
-- rendering with the corresponding graphics pipeline as described in
-- [Rasterization
-- Order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primrast-order).
--
-- == Valid Usage
--
-- - If the [depth
-- clamping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthClamp)
-- feature is not enabled, @depthClampEnable@ /must/ be @VK_FALSE@
--
-- - If the [non-solid fill
-- modes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-fillModeNonSolid)
-- feature is not enabled, @polygonMode@ /must/ be
-- @VK_POLYGON_MODE_FILL@ or @VK_POLYGON_MODE_FILL_RECTANGLE_NV@
--
-- - If the @{html_spec_relative}#VK_NV_fill_rectangle@ extension is not
-- enabled, @polygonMode@ /must/ not be
-- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO@
--
-- - 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
-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPipelineRasterizationConservativeStateCreateInfoEXT'
-- or
-- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.VkPipelineRasterizationStateRasterizationOrderAMD'
--
-- - Each @sType@ member in the @pNext@ chain /must/ be unique
--
-- - @flags@ /must/ be @0@
--
-- - @polygonMode@ /must/ be a valid 'VkPolygonMode' value
--
-- - @cullMode@ /must/ be a valid combination of 'VkCullModeFlagBits'
-- values
--
-- - @frontFace@ /must/ be a valid 'VkFrontFace' value
--
-- = See Also
--
-- @VkBool32@, 'VkCullModeFlags', 'VkFrontFace',
-- 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineRasterizationStateCreateFlags', 'VkPolygonMode',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineRasterizationStateCreateInfo = VkPipelineRasterizationStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineRasterizationStateCreateFlags
, -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values
-- instead of clipping primitives to the z planes of the frustum, as
-- described in [Primitive
-- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping).
vkDepthClampEnable :: VkBool32
, -- | @rasterizerDiscardEnable@ controls whether primitives are discarded
-- immediately before the rasterization stage.
vkRasterizerDiscardEnable :: VkBool32
, -- | @polygonMode@ is the triangle rendering mode. See 'VkPolygonMode'.
vkPolygonMode :: VkPolygonMode
, -- | @cullMode@ is the triangle facing direction used for primitive culling.
-- See 'VkCullModeFlagBits'.
vkCullMode :: VkCullModeFlags
, -- | @frontFace@ is a 'VkFrontFace' value specifying the front-facing
-- triangle orientation to be used for culling.
vkFrontFace :: VkFrontFace
, -- | @depthBiasEnable@ controls whether to bias fragment depth values.
vkDepthBiasEnable :: VkBool32
, -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant
-- depth value added to each fragment.
vkDepthBiasConstantFactor :: CFloat
, -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.
vkDepthBiasClamp :: CFloat
, -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope
-- in depth bias calculations.
vkDepthBiasSlopeFactor :: CFloat
, -- | @lineWidth@ is the width of rasterized line segments.
vkLineWidth :: CFloat
}
deriving (Eq, Show)
instance Storable VkPipelineRasterizationStateCreateInfo where
sizeOf ~_ = 64
alignment ~_ = 8
peek ptr = VkPipelineRasterizationStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 44)
<*> peek (ptr `plusPtr` 48)
<*> peek (ptr `plusPtr` 52)
<*> peek (ptr `plusPtr` 56)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkDepthClampEnable (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkRasterizerDiscardEnable (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 28) (vkPolygonMode (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 32) (vkCullMode (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 36) (vkFrontFace (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 40) (vkDepthBiasEnable (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 44) (vkDepthBiasConstantFactor (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 52) (vkDepthBiasSlopeFactor (poked :: VkPipelineRasterizationStateCreateInfo))
*> poke (ptr `plusPtr` 56) (vkLineWidth (poked :: VkPipelineRasterizationStateCreateInfo))
-- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters
-- of a newly created pipeline multisample state
--
-- == Valid Usage
--
-- - If the [sample rate
-- shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sampleRateShading)
-- feature is not enabled, @sampleShadingEnable@ /must/ be @VK_FALSE@
--
-- - If the [alpha to
-- one](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-alphaToOne)
-- feature is not enabled, @alphaToOneEnable@ /must/ be @VK_FALSE@
--
-- - @minSampleShading@ /must/ be in the range [0,1]
--
-- - If the subpass has any color attachments and @rasterizationSamples@
-- is greater than the number of color samples, then
-- @sampleShadingEnable@ /must/ be @VK_FALSE@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO@
--
-- - 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
-- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.VkPipelineCoverageModulationStateCreateInfoNV',
-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.VkPipelineCoverageToColorStateCreateInfoNV',
-- or
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'
--
-- - Each @sType@ member in the @pNext@ chain /must/ be unique
--
-- - @flags@ /must/ be @0@
--
-- - @rasterizationSamples@ /must/ be a valid
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-- value
--
-- - If @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid
-- pointer to an array of
-- \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)
-- @VkSampleMask@ values
--
-- = See Also
--
-- @VkBool32@, 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineMultisampleStateCreateFlags',
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',
-- @VkSampleMask@, 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineMultisampleStateCreateInfo = VkPipelineMultisampleStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineMultisampleStateCreateFlags
, -- | @rasterizationSamples@ is a
-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'
-- specifying the number of samples per pixel used in rasterization.
vkRasterizationSamples :: VkSampleCountFlagBits
, -- | @sampleShadingEnable@ /can/ be used to enable [Sample
-- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading).
vkSampleShadingEnable :: VkBool32
, -- | @minSampleShading@ specifies a minimum fraction of sample shading if
-- @sampleShadingEnable@ is set to @VK_TRUE@.
vkMinSampleShading :: CFloat
, -- | @pSampleMask@ is a bitmask of static coverage information that is ANDed
-- with the coverage information generated during rasterization, as
-- described in [Sample
-- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-samplemask).
vkPSampleMask :: Ptr VkSampleMask
, -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is
-- generated based on the alpha component of the fragment’s first color
-- output as specified in the [Multisample
-- Coverage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-covg)
-- section.
vkAlphaToCoverageEnable :: VkBool32
, -- | @alphaToOneEnable@ controls whether the alpha component of the
-- fragment’s first color output is replaced with one as described in
-- [Multisample
-- Coverage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-covg).
vkAlphaToOneEnable :: VkBool32
}
deriving (Eq, Show)
instance Storable VkPipelineMultisampleStateCreateInfo where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkPipelineMultisampleStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 44)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkRasterizationSamples (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkSampleShadingEnable (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 28) (vkMinSampleShading (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 32) (vkPSampleMask (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 40) (vkAlphaToCoverageEnable (poked :: VkPipelineMultisampleStateCreateInfo))
*> poke (ptr `plusPtr` 44) (vkAlphaToOneEnable (poked :: VkPipelineMultisampleStateCreateInfo))
-- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline
-- color blend attachment state
--
-- == Valid Usage
--
-- - If the [dual source
-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)
-- feature is not enabled, @srcColorBlendFactor@ /must/ not be
-- @VK_BLEND_FACTOR_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@
--
-- - If the [dual source
-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)
-- feature is not enabled, @dstColorBlendFactor@ /must/ not be
-- @VK_BLEND_FACTOR_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@
--
-- - If the [dual source
-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)
-- feature is not enabled, @srcAlphaBlendFactor@ /must/ not be
-- @VK_BLEND_FACTOR_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@
--
-- - If the [dual source
-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)
-- feature is not enabled, @dstAlphaBlendFactor@ /must/ not be
-- @VK_BLEND_FACTOR_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,
-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or
-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@
--
-- - If either of @colorBlendOp@ or @alphaBlendOp@ is an [advanced blend
-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),
-- then @colorBlendOp@ /must/ equal @alphaBlendOp@
--
-- - If
-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@
-- is @VK_FALSE@ and @colorBlendOp@ is an [advanced blend
-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),
-- then @colorBlendOp@ /must/ be the same for all attachments.
--
-- - If
-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@
-- is @VK_FALSE@ and @alphaBlendOp@ is an [advanced blend
-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),
-- then @alphaBlendOp@ /must/ be the same for all attachments.
--
-- - If
-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@
-- is @VK_FALSE@, then @colorBlendOp@ /must/ not be
-- @VK_BLEND_OP_ZERO_EXT@, @VK_BLEND_OP_SRC_EXT@,
-- @VK_BLEND_OP_DST_EXT@, @VK_BLEND_OP_SRC_OVER_EXT@,
-- @VK_BLEND_OP_DST_OVER_EXT@, @VK_BLEND_OP_SRC_IN_EXT@,
-- @VK_BLEND_OP_DST_IN_EXT@, @VK_BLEND_OP_SRC_OUT_EXT@,
-- @VK_BLEND_OP_DST_OUT_EXT@, @VK_BLEND_OP_SRC_ATOP_EXT@,
-- @VK_BLEND_OP_DST_ATOP_EXT@, @VK_BLEND_OP_XOR_EXT@,
-- @VK_BLEND_OP_INVERT_EXT@, @VK_BLEND_OP_INVERT_RGB_EXT@,
-- @VK_BLEND_OP_LINEARDODGE_EXT@, @VK_BLEND_OP_LINEARBURN_EXT@,
-- @VK_BLEND_OP_VIVIDLIGHT_EXT@, @VK_BLEND_OP_LINEARLIGHT_EXT@,
-- @VK_BLEND_OP_PINLIGHT_EXT@, @VK_BLEND_OP_HARDMIX_EXT@,
-- @VK_BLEND_OP_PLUS_EXT@, @VK_BLEND_OP_PLUS_CLAMPED_EXT@,
-- @VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT@, @VK_BLEND_OP_PLUS_DARKER_EXT@,
-- @VK_BLEND_OP_MINUS_EXT@, @VK_BLEND_OP_MINUS_CLAMPED_EXT@,
-- @VK_BLEND_OP_CONTRAST_EXT@, @VK_BLEND_OP_INVERT_OVG_EXT@,
-- @VK_BLEND_OP_RED_EXT@, @VK_BLEND_OP_GREEN_EXT@, or
-- @VK_BLEND_OP_BLUE_EXT@
--
-- - If @colorBlendOp@ or @alphaBlendOp@ is an [advanced blend
-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),
-- then
-- 'Graphics.Vulkan.Core10.Pass.VkSubpassDescription'::@colorAttachmentCount@
-- of the subpass this pipeline is compiled against /must/ be less than
-- or equal to
-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::advancedBlendMaxColorAttachments
--
-- == Valid Usage (Implicit)
--
-- - @srcColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value
--
-- - @dstColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value
--
-- - @colorBlendOp@ /must/ be a valid 'VkBlendOp' value
--
-- - @srcAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value
--
-- - @dstAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value
--
-- - @alphaBlendOp@ /must/ be a valid 'VkBlendOp' value
--
-- - @colorWriteMask@ /must/ be a valid combination of
-- 'VkColorComponentFlagBits' values
--
-- = See Also
--
-- 'VkBlendFactor', 'VkBlendOp', @VkBool32@, 'VkColorComponentFlags',
-- 'VkPipelineColorBlendStateCreateInfo'
data VkPipelineColorBlendAttachmentState = VkPipelineColorBlendAttachmentState
{ -- | @blendEnable@ controls whether blending is enabled for the corresponding
-- color attachment. If blending is not enabled, the source fragment’s
-- color for that attachment is passed through unmodified.
vkBlendEnable :: VkBool32
, -- | @srcColorBlendFactor@ selects which blend factor is used to determine
-- the source factors (Sr,Sg,Sb).
vkSrcColorBlendFactor :: VkBlendFactor
, -- | @dstColorBlendFactor@ selects which blend factor is used to determine
-- the destination factors (Dr,Dg,Db).
vkDstColorBlendFactor :: VkBlendFactor
, -- | @colorBlendOp@ selects which blend operation is used to calculate the
-- RGB values to write to the color attachment.
vkColorBlendOp :: VkBlendOp
, -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine
-- the source factor Sa.
vkSrcAlphaBlendFactor :: VkBlendFactor
, -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine
-- the destination factor Da.
vkDstAlphaBlendFactor :: VkBlendFactor
, -- | @alphaBlendOp@ selects which blend operation is use to calculate the
-- alpha values to write to the color attachment.
vkAlphaBlendOp :: VkBlendOp
, -- | @colorWriteMask@ is a bitmask of 'VkColorComponentFlagBits' specifying
-- which of the R, G, B, and\/or A components are enabled for writing, as
-- described for the [Color Write
-- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-color-write-mask).
vkColorWriteMask :: VkColorComponentFlags
}
deriving (Eq, Show)
instance Storable VkPipelineColorBlendAttachmentState where
sizeOf ~_ = 32
alignment ~_ = 4
peek ptr = VkPipelineColorBlendAttachmentState <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 12)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
poke ptr poked = poke (ptr `plusPtr` 0) (vkBlendEnable (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 4) (vkSrcColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 8) (vkDstColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 12) (vkColorBlendOp (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 16) (vkSrcAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 20) (vkDstAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 24) (vkAlphaBlendOp (poked :: VkPipelineColorBlendAttachmentState))
*> poke (ptr `plusPtr` 28) (vkColorWriteMask (poked :: VkPipelineColorBlendAttachmentState))
-- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of
-- a newly created pipeline color blend state
--
-- = Description
--
-- Each element of the @pAttachments@ array is a
-- 'VkPipelineColorBlendAttachmentState' structure specifying per-target
-- blending state for each individual color attachment. If the [independent
-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-independentBlend)
-- feature is not enabled on the device, all
-- 'VkPipelineColorBlendAttachmentState' elements in the @pAttachments@
-- array /must/ be identical.
--
-- == Valid Usage
--
-- - If the [independent
-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-independentBlend)
-- feature is not enabled, all elements of @pAttachments@ /must/ be
-- identical
--
-- - If the [logic
-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-logicOp)
-- feature is not enabled, @logicOpEnable@ /must/ be @VK_FALSE@
--
-- - If @logicOpEnable@ is @VK_TRUE@, @logicOp@ /must/ be a valid
-- 'VkLogicOp' value
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of
-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPipelineColorBlendAdvancedStateCreateInfoEXT'
--
-- - @flags@ /must/ be @0@
--
-- - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid
-- pointer to an array of @attachmentCount@ valid
-- @VkPipelineColorBlendAttachmentState@ structures
--
-- = See Also
--
-- @VkBool32@, 'VkGraphicsPipelineCreateInfo', 'VkLogicOp',
-- 'VkPipelineColorBlendAttachmentState',
-- 'VkPipelineColorBlendStateCreateFlags',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineColorBlendStateCreateInfo = VkPipelineColorBlendStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineColorBlendStateCreateFlags
, -- | @logicOpEnable@ controls whether to apply [Logical
-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-logicop).
vkLogicOpEnable :: VkBool32
, -- | @logicOp@ selects which logical operation to apply.
vkLogicOp :: VkLogicOp
, -- | @attachmentCount@ is the number of @VkPipelineColorBlendAttachmentState@
-- elements in @pAttachments@. This value /must/ equal the
-- @colorAttachmentCount@ for the subpass in which this pipeline is used.
vkAttachmentCount :: Word32
, -- | @pAttachments@: is a pointer to array of per target attachment states.
vkPAttachments :: Ptr VkPipelineColorBlendAttachmentState
, -- | @blendConstants@ is an array of four values used as the R, G, B, and A
-- components of the blend constant that are used in blending, depending on
-- the [blend
-- factor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendfactors).
vkBlendConstants :: Vector 4 CFloat
}
deriving (Eq, Show)
instance Storable VkPipelineColorBlendStateCreateInfo where
sizeOf ~_ = 56
alignment ~_ = 8
peek ptr = VkPipelineColorBlendStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkLogicOpEnable (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkLogicOp (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 28) (vkAttachmentCount (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 32) (vkPAttachments (poked :: VkPipelineColorBlendStateCreateInfo))
*> poke (ptr `plusPtr` 40) (vkBlendConstants (poked :: VkPipelineColorBlendStateCreateInfo))
-- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a
-- newly created pipeline dynamic state
--
-- == Valid Usage
--
-- - Each element of @pDynamicStates@ /must/ be unique
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@
--
-- - @flags@ /must/ be @0@
--
-- - @pDynamicStates@ /must/ be a valid pointer to an array of
-- @dynamicStateCount@ valid 'VkDynamicState' values
--
-- - @dynamicStateCount@ /must/ be greater than @0@
--
-- = See Also
--
-- 'VkDynamicState', 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineDynamicStateCreateFlags',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineDynamicStateCreateInfo = VkPipelineDynamicStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineDynamicStateCreateFlags
, -- | @dynamicStateCount@ is the number of elements in the @pDynamicStates@
-- array.
vkDynamicStateCount :: Word32
, -- | @pDynamicStates@ is an array of 'VkDynamicState' values specifying which
-- pieces of pipeline state will use the values from dynamic state commands
-- rather than from pipeline state creation info.
vkPDynamicStates :: Ptr VkDynamicState
}
deriving (Eq, Show)
instance Storable VkPipelineDynamicStateCreateInfo where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkPipelineDynamicStateCreateInfo <$> 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 :: VkPipelineDynamicStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDynamicStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDynamicStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkDynamicStateCount (poked :: VkPipelineDynamicStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkPDynamicStates (poked :: VkPipelineDynamicStateCreateInfo))
-- | VkStencilOpState - Structure specifying stencil operation state
--
-- == Valid Usage (Implicit)
--
-- - @failOp@ /must/ be a valid 'VkStencilOp' value
--
-- - @passOp@ /must/ be a valid 'VkStencilOp' value
--
-- - @depthFailOp@ /must/ be a valid 'VkStencilOp' value
--
-- - @compareOp@ /must/ be a valid 'VkCompareOp' value
--
-- = See Also
--
-- 'VkCompareOp', 'VkPipelineDepthStencilStateCreateInfo', 'VkStencilOp'
data VkStencilOpState = VkStencilOpState
{ -- | @failOp@ is a 'VkStencilOp' value specifying the action performed on
-- samples that fail the stencil test.
vkFailOp :: VkStencilOp
, -- | @passOp@ is a 'VkStencilOp' value specifying the action performed on
-- samples that pass both the depth and stencil tests.
vkPassOp :: VkStencilOp
, -- | @depthFailOp@ is a 'VkStencilOp' value specifying the action performed
-- on samples that pass the stencil test and fail the depth test.
vkDepthFailOp :: VkStencilOp
, -- | @compareOp@ is a 'VkCompareOp' value specifying the comparison operator
-- used in the stencil test.
vkCompareOp :: VkCompareOp
, -- | @compareMask@ selects the bits of the unsigned integer stencil values
-- participating in the stencil test.
vkCompareMask :: Word32
, -- | @writeMask@ selects the bits of the unsigned integer stencil values
-- updated by the stencil test in the stencil framebuffer attachment.
vkWriteMask :: Word32
, -- | @reference@ is an integer reference value that is used in the unsigned
-- stencil comparison.
vkReference :: Word32
}
deriving (Eq, Show)
instance Storable VkStencilOpState where
sizeOf ~_ = 28
alignment ~_ = 4
peek ptr = VkStencilOpState <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 12)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
poke ptr poked = poke (ptr `plusPtr` 0) (vkFailOp (poked :: VkStencilOpState))
*> poke (ptr `plusPtr` 4) (vkPassOp (poked :: VkStencilOpState))
*> poke (ptr `plusPtr` 8) (vkDepthFailOp (poked :: VkStencilOpState))
*> poke (ptr `plusPtr` 12) (vkCompareOp (poked :: VkStencilOpState))
*> poke (ptr `plusPtr` 16) (vkCompareMask (poked :: VkStencilOpState))
*> poke (ptr `plusPtr` 20) (vkWriteMask (poked :: VkStencilOpState))
*> poke (ptr `plusPtr` 24) (vkReference (poked :: VkStencilOpState))
-- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters
-- of a newly created pipeline depth stencil state
--
-- == Valid Usage
--
-- - If the [depth bounds
-- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthBounds)
-- feature is not enabled, @depthBoundsTestEnable@ /must/ be @VK_FALSE@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@
--
-- - @flags@ /must/ be @0@
--
-- - @depthCompareOp@ /must/ be a valid 'VkCompareOp' value
--
-- - @front@ /must/ be a valid @VkStencilOpState@ structure
--
-- - @back@ /must/ be a valid @VkStencilOpState@ structure
--
-- = See Also
--
-- @VkBool32@, 'VkCompareOp', 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineDepthStencilStateCreateFlags', 'VkStencilOpState',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPipelineDepthStencilStateCreateInfo = VkPipelineDepthStencilStateCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is reserved for future use.
vkFlags :: VkPipelineDepthStencilStateCreateFlags
, -- | @depthTestEnable@ controls whether [depth
-- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth)
-- is enabled.
vkDepthTestEnable :: VkBool32
, -- | @depthWriteEnable@ controls whether [depth
-- writes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth-write)
-- are enabled when @depthTestEnable@ is @VK_TRUE@. Depth writes are always
-- disabled when @depthTestEnable@ is @VK_FALSE@.
vkDepthWriteEnable :: VkBool32
, -- | @depthCompareOp@ is the comparison operator used in the [depth
-- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth).
vkDepthCompareOp :: VkCompareOp
, -- | @depthBoundsTestEnable@ controls whether [depth bounds
-- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-dbt)
-- is enabled.
vkDepthBoundsTestEnable :: VkBool32
, -- | @stencilTestEnable@ controls whether [stencil
-- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-stencil)
-- is enabled.
vkStencilTestEnable :: VkBool32
, -- | @front@ and @back@ control the parameters of the [stencil
-- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-stencil).
vkFront :: VkStencilOpState
, -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"
vkBack :: VkStencilOpState
, -- | @minDepthBounds@ and @maxDepthBounds@ define the range of values used in
-- the [depth bounds
-- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-dbt).
vkMinDepthBounds :: CFloat
, -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "maxDepthBounds"
vkMaxDepthBounds :: CFloat
}
deriving (Eq, Show)
instance Storable VkPipelineDepthStencilStateCreateInfo where
sizeOf ~_ = 104
alignment ~_ = 8
peek ptr = VkPipelineDepthStencilStateCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 68)
<*> peek (ptr `plusPtr` 96)
<*> peek (ptr `plusPtr` 100)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 20) (vkDepthTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 24) (vkDepthWriteEnable (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 28) (vkDepthCompareOp (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 32) (vkDepthBoundsTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 36) (vkStencilTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 40) (vkFront (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 68) (vkBack (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 96) (vkMinDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))
*> poke (ptr `plusPtr` 100) (vkMaxDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))
-- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a
-- newly created graphics pipeline
--
-- = Description
--
-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
-- described in more detail in [Pipeline
-- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives).
--
-- @pStages@ points to an array of 'VkPipelineShaderStageCreateInfo'
-- structures, which were previously described in [Compute
-- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-compute).
--
-- @pDynamicState@ points to a structure of type
-- 'VkPipelineDynamicStateCreateInfo'.
--
-- If any shader stage fails to compile, the compile log will be reported
-- back to the application, and @VK_ERROR_INVALID_SHADER_NV@ will be
-- generated.
--
-- == Valid Usage
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a
-- valid handle to a graphics @VkPipeline@
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineHandle@ is
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',
-- @basePipelineIndex@ /must/ be a valid index into the calling
-- command’s @pCreateInfos@ parameter
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'
--
-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,
-- and @basePipelineHandle@ is not
-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',
-- @basePipelineIndex@ /must/ be -1
--
-- - The @stage@ member of each element of @pStages@ /must/ be unique
--
-- - The @stage@ member of one element of @pStages@ /must/ be
-- @VK_SHADER_STAGE_VERTEX_BIT@
--
-- - The @stage@ member of each element of @pStages@ /must/ not be
-- @VK_SHADER_STAGE_COMPUTE_BIT@
--
-- - If @pStages@ includes a tessellation control shader stage, it /must/
-- include a tessellation evaluation shader stage
--
-- - If @pStages@ includes a tessellation evaluation shader stage, it
-- /must/ include a tessellation control shader stage
--
-- - If @pStages@ includes a tessellation control shader stage and a
-- tessellation evaluation shader stage, @pTessellationState@ /must/ be
-- a valid pointer to a valid @VkPipelineTessellationStateCreateInfo@
-- structure
--
-- - If @pStages@ includes tessellation shader stages, the shader code of
-- at least one stage /must/ contain an @OpExecutionMode@ instruction
-- that specifies the type of subdivision in the pipeline
--
-- - If @pStages@ includes tessellation shader stages, and the shader
-- code of both stages contain an @OpExecutionMode@ instruction that
-- specifies the type of subdivision in the pipeline, they /must/ both
-- specify the same subdivision mode
--
-- - If @pStages@ includes tessellation shader stages, the shader code of
-- at least one stage /must/ contain an @OpExecutionMode@ instruction
-- that specifies the output patch size in the pipeline
--
-- - If @pStages@ includes tessellation shader stages, and the shader
-- code of both contain an @OpExecutionMode@ instruction that specifies
-- the out patch size in the pipeline, they /must/ both specify the
-- same patch size
--
-- - If @pStages@ includes tessellation shader stages, the @topology@
-- member of @pInputAssembly@ /must/ be
-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@
--
-- - If the @topology@ member of @pInputAssembly@ is
-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @pStages@ /must/ include
-- tessellation shader stages
--
-- - If @pStages@ includes a geometry shader stage, and does not include
-- any tessellation shader stages, its shader code /must/ contain an
-- @OpExecutionMode@ instruction that specifies an input primitive type
-- that is
-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution)
-- with the primitive topology specified in @pInputAssembly@
--
-- - If @pStages@ includes a geometry shader stage, and also includes
-- tessellation shader stages, its shader code /must/ contain an
-- @OpExecutionMode@ instruction that specifies an input primitive type
-- that is
-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution)
-- with the primitive topology that is output by the tessellation
-- stages
--
-- - If @pStages@ includes a fragment shader stage and a geometry shader
-- stage, and the fragment shader code reads from an input variable
-- that is decorated with @PrimitiveID@, then the geometry shader code
-- /must/ write to a matching output variable, decorated with
-- @PrimitiveID@, in all execution paths
--
-- - If @pStages@ includes a fragment shader stage, its shader code
-- /must/ not read from any input attachment that is defined as
-- @VK_ATTACHMENT_UNUSED@ in @subpass@
--
-- - The shader code for the entry points identified by @pStages@, and
-- the rest of the state identified by this structure /must/ adhere to
-- the pipeline linking rules described in the [Shader
-- Interfaces](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces)
-- chapter
--
-- - If rasterization is not disabled and @subpass@ uses a depth\/stencil
-- attachment in @renderPass@ that has a layout of
-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or
-- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ in the
-- @VkAttachmentReference@ defined by @subpass@, the @depthWriteEnable@
-- member of @pDepthStencilState@ /must/ be @VK_FALSE@
--
-- - If rasterization is not disabled and @subpass@ uses a depth\/stencil
-- attachment in @renderPass@ that has a layout of
-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or
-- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ in the
-- @VkAttachmentReference@ defined by @subpass@, the @failOp@, @passOp@
-- and @depthFailOp@ members of each of the @front@ and @back@ members
-- of @pDepthStencilState@ /must/ be @VK_STENCIL_OP_KEEP@
--
-- - If rasterization is not disabled and the subpass uses color
-- attachments, then for each color attachment in the subpass the
-- @blendEnable@ member of the corresponding element of the
-- @pAttachment@ member of @pColorBlendState@ /must/ be @VK_FALSE@ if
-- the @format@ of the attachment does not support color blend
-- operations, as specified by the
-- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ flag in
-- @VkFormatProperties@::@linearTilingFeatures@ or
-- @VkFormatProperties@::@optimalTilingFeatures@ returned by
-- @vkGetPhysicalDeviceFormatProperties@
--
-- - If rasterization is not disabled and the subpass uses color
-- attachments, the @attachmentCount@ member of @pColorBlendState@
-- /must/ be equal to the @colorAttachmentCount@ used to create
-- @subpass@
--
-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_VIEWPORT@, the @pViewports@ member of
-- @pViewportState@ /must/ be a valid pointer to an array of
-- @pViewportState@::@viewportCount@ @VkViewport@ structures
--
-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_SCISSOR@, the @pScissors@ member of
-- @pViewportState@ /must/ be a valid pointer to an array of
-- @pViewportState@::@scissorCount@ @VkRect2D@ structures
--
-- - If the wide lines feature is not enabled, and no element of the
-- @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_LINE_WIDTH@, the @lineWidth@ member of
-- @pRasterizationState@ /must/ be @1.0@
--
-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
-- @VK_FALSE@, @pViewportState@ /must/ be a valid pointer to a valid
-- @VkPipelineViewportStateCreateInfo@ structure
--
-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
-- @VK_FALSE@, @pMultisampleState@ /must/ be a valid pointer to a valid
-- @VkPipelineMultisampleStateCreateInfo@ structure
--
-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
-- @VK_FALSE@, and @subpass@ uses a depth\/stencil attachment,
-- @pDepthStencilState@ /must/ be a valid pointer to a valid
-- @VkPipelineDepthStencilStateCreateInfo@ structure
--
-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
-- @VK_FALSE@, and @subpass@ uses color attachments, @pColorBlendState@
-- /must/ be a valid pointer to a valid
-- @VkPipelineColorBlendStateCreateInfo@ structure
--
-- - If the depth bias clamping feature is not enabled, no element of the
-- @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_DEPTH_BIAS@, and the @depthBiasEnable@ member of
-- @pRasterizationState@ is @VK_TRUE@, the @depthBiasClamp@ member of
-- @pRasterizationState@ /must/ be @0.0@
--
-- - If the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@
-- extension is not enabled and no element of the @pDynamicStates@
-- member of @pDynamicState@ is @VK_DYNAMIC_STATE_DEPTH_BOUNDS@, and
-- the @depthBoundsTestEnable@ member of @pDepthStencilState@ is
-- @VK_TRUE@, the @minDepthBounds@ and @maxDepthBounds@ members of
-- @pDepthStencilState@ /must/ be between @0.0@ and @1.0@, inclusive
--
-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the
-- @sampleLocationsEnable@ member of a
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'
-- structure chained to the @pNext@ chain of @pMultisampleState@ is
-- @VK_TRUE@, @sampleLocationsInfo.sampleLocationGridSize.width@ /must/
-- evenly divide
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT'::@sampleLocationGridSize.width@
-- as returned by
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT'
-- with a @samples@ parameter equaling @rasterizationSamples@
--
-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the
-- @sampleLocationsEnable@ member of a
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'
-- structure chained to the @pNext@ chain of @pMultisampleState@ is
-- @VK_TRUE@, @sampleLocationsInfo.sampleLocationGridSize.height@
-- /must/ evenly divide
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT'::@sampleLocationGridSize.height@
-- as returned by
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT'
-- with a @samples@ parameter equaling @rasterizationSamples@
--
-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the
-- @sampleLocationsEnable@ member of a
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'
-- structure chained to the @pNext@ chain of @pMultisampleState@ is
-- @VK_TRUE@, @sampleLocationsInfo.sampleLocationsPerPixel@ /must/
-- equal @rasterizationSamples@
--
-- - If the @sampleLocationsEnable@ member of a
-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'
-- structure chained to the @pNext@ chain of @pMultisampleState@ is
-- @VK_TRUE@, the fragment shader code /must/ not statically use the
-- extended instruction @InterpolateAtSample@
--
-- - @layout@ /must/ be
-- [consistent](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency)
-- with all shaders specified in @pStages@
--
-- - If @subpass@ uses color and\/or depth\/stencil attachments, then the
-- @rasterizationSamples@ member of @pMultisampleState@ /must/ equal
-- the maximum of the sample counts of those subpass attachments
--
-- - If @subpass@ has a depth\/stencil attachment and depth test, stencil
-- test, or depth bounds test are enabled, then the
-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be the
-- same as the sample count of the depth\/stencil attachment
--
-- - If @subpass@ has any color attachments, then the
-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be
-- greater than or equal to the sample count for those subpass
-- attachments
--
-- - If @subpass@ does not use any color and\/or depth\/stencil
-- attachments, then the @rasterizationSamples@ member of
-- @pMultisampleState@ /must/ follow the rules for a [zero-attachment
-- subpass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-noattachments)
--
-- - @subpass@ /must/ be a valid subpass within @renderPass@
--
-- - If the @renderPass@ has multiview enabled and @subpass@ has more
-- than one bit set in the view mask and @multiviewTessellationShader@
-- is not enabled, then @pStages@ /must/ not include tessellation
-- shaders.
--
-- - If the @renderPass@ has multiview enabled and @subpass@ has more
-- than one bit set in the view mask and @multiviewGeometryShader@ is
-- not enabled, then @pStages@ /must/ not include a geometry shader.
--
-- - If the @renderPass@ has multiview enabled and @subpass@ has more
-- than one bit set in the view mask, shaders in the pipeline /must/
-- not write to the @Layer@ built-in output
--
-- - If the @renderPass@ has multiview enabled, then all shaders /must/
-- not include variables decorated with the @Layer@ built-in decoration
-- in their interfaces.
--
-- - @flags@ /must/ not contain the @VK_PIPELINE_CREATE_DISPATCH_BASE@
-- flag.
--
-- - If @pStages@ includes a fragment shader stage and an input
-- attachment was referenced by the
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkRenderPassInputAttachmentAspectCreateInfo'
-- at @renderPass@ create time, its shader code /must/ not read from
-- any aspect that was not specified in the @aspectMask@ of the
-- corresponding
-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkInputAttachmentAspectReference'
-- structure.
--
-- - The number of resources in @layout@ accessible to each shader stage
-- that is used by the pipeline /must/ be less than or equal to
-- @VkPhysicalDeviceLimits@::@maxPerStageResources@
--
-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is
-- @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@, and the
-- @viewportWScalingEnable@ member of a
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'
-- structure, chained to the @pNext@ chain of @pViewportState@, is
-- @VK_TRUE@, the @pViewportWScalings@ member of the
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'
-- /must/ be a pointer to an array of
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
-- valid
-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkViewportWScalingNV'
-- structures
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO@
--
-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of
-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT'
--
-- - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'
-- values
--
-- - @pStages@ /must/ be a valid pointer to an array of @stageCount@
-- valid @VkPipelineShaderStageCreateInfo@ structures
--
-- - @pVertexInputState@ /must/ be a valid pointer to a valid
-- @VkPipelineVertexInputStateCreateInfo@ structure
--
-- - @pInputAssemblyState@ /must/ be a valid pointer to a valid
-- @VkPipelineInputAssemblyStateCreateInfo@ structure
--
-- - @pRasterizationState@ /must/ be a valid pointer to a valid
-- @VkPipelineRasterizationStateCreateInfo@ structure
--
-- - If @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid
-- pointer to a valid @VkPipelineDynamicStateCreateInfo@ structure
--
-- - @layout@ /must/ be a valid @VkPipelineLayout@ handle
--
-- - @renderPass@ /must/ be a valid @VkRenderPass@ handle
--
-- - @stageCount@ /must/ be greater than @0@
--
-- - Each of @basePipelineHandle@, @layout@, and @renderPass@ that are
-- valid handles /must/ have been created, allocated, or retrieved from
-- the same @VkDevice@
--
-- = See Also
--
-- 'VkPipeline', 'VkPipelineColorBlendStateCreateInfo',
-- 'VkPipelineCreateFlags', 'VkPipelineDepthStencilStateCreateInfo',
-- 'VkPipelineDynamicStateCreateInfo',
-- 'VkPipelineInputAssemblyStateCreateInfo', 'VkPipelineLayout',
-- 'VkPipelineMultisampleStateCreateInfo',
-- 'VkPipelineRasterizationStateCreateInfo',
-- 'VkPipelineShaderStageCreateInfo',
-- 'VkPipelineTessellationStateCreateInfo',
-- 'VkPipelineVertexInputStateCreateInfo',
-- 'VkPipelineViewportStateCreateInfo', 'VkRenderPass',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType',
-- 'vkCreateGraphicsPipelines'
data VkGraphicsPipelineCreateInfo = VkGraphicsPipelineCreateInfo
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @flags@ is a bitmask of 'VkPipelineCreateFlagBits' specifying how the
-- pipeline will be generated.
vkFlags :: VkPipelineCreateFlags
, -- | @stageCount@ is the number of entries in the @pStages@ array.
vkStageCount :: Word32
, -- | @pStages@ is an array of size @stageCount@ structures of type
-- 'VkPipelineShaderStageCreateInfo' describing the set of the shader
-- stages to be included in the graphics pipeline.
vkPStages :: Ptr VkPipelineShaderStageCreateInfo
, -- | @pVertexInputState@ is a pointer to an instance of the
-- 'VkPipelineVertexInputStateCreateInfo' structure.
vkPVertexInputState :: Ptr VkPipelineVertexInputStateCreateInfo
, -- | @pInputAssemblyState@ is a pointer to an instance of the
-- 'VkPipelineInputAssemblyStateCreateInfo' structure which determines
-- input assembly behavior, as described in [Drawing
-- Commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing).
vkPInputAssemblyState :: Ptr VkPipelineInputAssemblyStateCreateInfo
, -- | @pTessellationState@ is a pointer to an instance of the
-- 'VkPipelineTessellationStateCreateInfo' structure, and is ignored if the
-- pipeline does not include a tessellation control shader stage and
-- tessellation evaluation shader stage.
vkPTessellationState :: Ptr VkPipelineTessellationStateCreateInfo
, -- | @pViewportState@ is a pointer to an instance of the
-- 'VkPipelineViewportStateCreateInfo' structure, and is ignored if the
-- pipeline has rasterization disabled.
vkPViewportState :: Ptr VkPipelineViewportStateCreateInfo
, -- | @pRasterizationState@ is a pointer to an instance of the
-- 'VkPipelineRasterizationStateCreateInfo' structure.
vkPRasterizationState :: Ptr VkPipelineRasterizationStateCreateInfo
, -- | @pMultisampleState@ is a pointer to an instance of the
-- 'VkPipelineMultisampleStateCreateInfo', and is ignored if the pipeline
-- has rasterization disabled.
vkPMultisampleState :: Ptr VkPipelineMultisampleStateCreateInfo
, -- | @pDepthStencilState@ is a pointer to an instance of the
-- 'VkPipelineDepthStencilStateCreateInfo' structure, and is ignored if the
-- pipeline has rasterization disabled or if the subpass of the render pass
-- the pipeline is created against does not use a depth\/stencil
-- attachment.
vkPDepthStencilState :: Ptr VkPipelineDepthStencilStateCreateInfo
, -- | @pColorBlendState@ is a pointer to an instance of the
-- 'VkPipelineColorBlendStateCreateInfo' structure, and is ignored if the
-- pipeline has rasterization disabled or if the subpass of the render pass
-- the pipeline is created against does not use any color attachments.
vkPColorBlendState :: Ptr VkPipelineColorBlendStateCreateInfo
, -- | @pDynamicState@ is a pointer to 'VkPipelineDynamicStateCreateInfo' and
-- is used to indicate which properties of the pipeline state object are
-- dynamic and /can/ be changed independently of the pipeline state. This
-- /can/ be @NULL@, which means no state in the pipeline is considered
-- dynamic.
vkPDynamicState :: Ptr VkPipelineDynamicStateCreateInfo
, -- | @layout@ is the description of binding locations used by both the
-- pipeline and descriptor sets used with the pipeline.
vkLayout :: VkPipelineLayout
, -- | @renderPass@ is a handle to a render pass object describing the
-- environment in which the pipeline will be used; the pipeline /must/ only
-- be used with an instance of any render pass compatible with the one
-- provided. See [Render Pass
-- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)
-- for more information.
vkRenderPass :: VkRenderPass
, -- | @subpass@ is the index of the subpass in the render pass where this
-- pipeline will be used.
vkSubpass :: Word32
, -- | @basePipelineHandle@ is a pipeline to derive from.
vkBasePipelineHandle :: VkPipeline
, -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use
-- as a pipeline to derive from.
vkBasePipelineIndex :: Int32
}
deriving (Eq, Show)
instance Storable VkGraphicsPipelineCreateInfo where
sizeOf ~_ = 144
alignment ~_ = 8
peek ptr = VkGraphicsPipelineCreateInfo <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 48)
<*> peek (ptr `plusPtr` 56)
<*> peek (ptr `plusPtr` 64)
<*> peek (ptr `plusPtr` 72)
<*> peek (ptr `plusPtr` 80)
<*> peek (ptr `plusPtr` 88)
<*> peek (ptr `plusPtr` 96)
<*> peek (ptr `plusPtr` 104)
<*> peek (ptr `plusPtr` 112)
<*> peek (ptr `plusPtr` 120)
<*> peek (ptr `plusPtr` 128)
<*> peek (ptr `plusPtr` 136)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 20) (vkStageCount (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 24) (vkPStages (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 32) (vkPVertexInputState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 40) (vkPInputAssemblyState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 48) (vkPTessellationState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 56) (vkPViewportState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 64) (vkPRasterizationState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 72) (vkPMultisampleState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 80) (vkPDepthStencilState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 88) (vkPColorBlendState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 96) (vkPDynamicState (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 104) (vkLayout (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 112) (vkRenderPass (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 120) (vkSubpass (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 128) (vkBasePipelineHandle (poked :: VkGraphicsPipelineCreateInfo))
*> poke (ptr `plusPtr` 136) (vkBasePipelineIndex (poked :: VkGraphicsPipelineCreateInfo))
-- | VkPipelineCreateFlags - Bitmask of VkPipelineCreateFlagBits
--
-- = Description
--
-- @VkPipelineCreateFlags@ is a bitmask type for setting a mask of zero or
-- more 'VkPipelineCreateFlagBits'.
--
-- = See Also
--
-- 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',
-- 'VkPipelineCreateFlagBits'
type VkPipelineCreateFlags = VkPipelineCreateFlagBits
-- | VkColorComponentFlags - Bitmask of VkColorComponentFlagBits
--
-- = Description
--
-- @VkColorComponentFlags@ is a bitmask type for setting a mask of zero or
-- more 'VkColorComponentFlagBits'.
--
-- = See Also
--
-- 'VkColorComponentFlagBits', 'VkPipelineColorBlendAttachmentState'
type VkColorComponentFlags = VkColorComponentFlagBits
-- | VkCullModeFlags - Bitmask of VkCullModeFlagBits
--
-- = Description
--
-- @VkCullModeFlags@ is a bitmask type for setting a mask of zero or more
-- 'VkCullModeFlagBits'.
--
-- = See Also
--
-- 'VkCullModeFlagBits', 'VkPipelineRasterizationStateCreateInfo'
type VkCullModeFlags = VkCullModeFlagBits
-- | VkSampleMask - Mask of sample coverage information
--
-- = See Also
--
-- 'VkPipelineMultisampleStateCreateInfo'
type VkSampleMask = Word32