| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.GraphicsPipeline
Synopsis
- createGraphicsPipelines :: MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- withGraphicsPipelines :: MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
- data Viewport = Viewport {}
- data VertexInputBindingDescription = VertexInputBindingDescription {}
- data VertexInputAttributeDescription = VertexInputAttributeDescription {}
- data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo {}
- data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo {}
- data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo {}
- data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo {}
- data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo {
- next :: Chain es
- flags :: PipelineRasterizationStateCreateFlags
- depthClampEnable :: Bool
- rasterizerDiscardEnable :: Bool
- polygonMode :: PolygonMode
- cullMode :: CullModeFlags
- frontFace :: FrontFace
- depthBiasEnable :: Bool
- depthBiasConstantFactor :: Float
- depthBiasClamp :: Float
- depthBiasSlopeFactor :: Float
- lineWidth :: Float
- data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo {}
- data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState {}
- data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo {}
- data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo {}
- data StencilOpState = StencilOpState {}
- data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo {}
- data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo {
- next :: Chain es
- flags :: PipelineCreateFlags
- stageCount :: Word32
- stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
- vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
- inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo
- tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)
- viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)
- rasterizationState :: Maybe (SomeStruct PipelineRasterizationStateCreateInfo)
- multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)
- depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo
- colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)
- dynamicState :: Maybe PipelineDynamicStateCreateInfo
- layout :: PipelineLayout
- renderPass :: RenderPass
- subpass :: Word32
- basePipelineHandle :: Pipeline
- basePipelineIndex :: Int32
- newtype PipelineDynamicStateCreateFlags = PipelineDynamicStateCreateFlags Flags
- newtype PipelineMultisampleStateCreateFlags = PipelineMultisampleStateCreateFlags Flags
- newtype PipelineRasterizationStateCreateFlags = PipelineRasterizationStateCreateFlags Flags
- newtype PipelineViewportStateCreateFlags = PipelineViewportStateCreateFlags Flags
- newtype PipelineTessellationStateCreateFlags = PipelineTessellationStateCreateFlags Flags
- newtype PipelineInputAssemblyStateCreateFlags = PipelineInputAssemblyStateCreateFlags Flags
- newtype PipelineVertexInputStateCreateFlags = PipelineVertexInputStateCreateFlags Flags
- newtype PrimitiveTopology where
- PrimitiveTopology Int32
- pattern PRIMITIVE_TOPOLOGY_LINE_LIST :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_LINE_STRIP :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_PATCH_LIST :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_POINT_LIST :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_TRIANGLE_FAN :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP :: PrimitiveTopology
- pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY :: PrimitiveTopology
- newtype CompareOp where
- CompareOp Int32
- pattern COMPARE_OP_ALWAYS :: CompareOp
- pattern COMPARE_OP_EQUAL :: CompareOp
- pattern COMPARE_OP_GREATER :: CompareOp
- pattern COMPARE_OP_GREATER_OR_EQUAL :: CompareOp
- pattern COMPARE_OP_LESS :: CompareOp
- pattern COMPARE_OP_LESS_OR_EQUAL :: CompareOp
- pattern COMPARE_OP_NEVER :: CompareOp
- pattern COMPARE_OP_NOT_EQUAL :: CompareOp
- newtype PolygonMode where
- PolygonMode Int32
- pattern POLYGON_MODE_FILL :: PolygonMode
- pattern POLYGON_MODE_FILL_RECTANGLE_NV :: PolygonMode
- pattern POLYGON_MODE_LINE :: PolygonMode
- pattern POLYGON_MODE_POINT :: PolygonMode
- newtype FrontFace where
- FrontFace Int32
- pattern FRONT_FACE_CLOCKWISE :: FrontFace
- pattern FRONT_FACE_COUNTER_CLOCKWISE :: FrontFace
- newtype BlendFactor where
- BlendFactor Int32
- pattern BLEND_FACTOR_CONSTANT_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_CONSTANT_COLOR :: BlendFactor
- pattern BLEND_FACTOR_DST_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_DST_COLOR :: BlendFactor
- pattern BLEND_FACTOR_ONE :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_DST_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_DST_COLOR :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_SRC1_COLOR :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_SRC_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_ONE_MINUS_SRC_COLOR :: BlendFactor
- pattern BLEND_FACTOR_SRC1_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_SRC1_COLOR :: BlendFactor
- pattern BLEND_FACTOR_SRC_ALPHA :: BlendFactor
- pattern BLEND_FACTOR_SRC_ALPHA_SATURATE :: BlendFactor
- pattern BLEND_FACTOR_SRC_COLOR :: BlendFactor
- pattern BLEND_FACTOR_ZERO :: BlendFactor
- newtype BlendOp where
- BlendOp Int32
- pattern BLEND_OP_ADD :: BlendOp
- pattern BLEND_OP_BLUE_EXT :: BlendOp
- pattern BLEND_OP_COLORBURN_EXT :: BlendOp
- pattern BLEND_OP_COLORDODGE_EXT :: BlendOp
- pattern BLEND_OP_CONTRAST_EXT :: BlendOp
- pattern BLEND_OP_DARKEN_EXT :: BlendOp
- pattern BLEND_OP_DIFFERENCE_EXT :: BlendOp
- pattern BLEND_OP_DST_ATOP_EXT :: BlendOp
- pattern BLEND_OP_DST_EXT :: BlendOp
- pattern BLEND_OP_DST_IN_EXT :: BlendOp
- pattern BLEND_OP_DST_OUT_EXT :: BlendOp
- pattern BLEND_OP_DST_OVER_EXT :: BlendOp
- pattern BLEND_OP_EXCLUSION_EXT :: BlendOp
- pattern BLEND_OP_GREEN_EXT :: BlendOp
- pattern BLEND_OP_HARDLIGHT_EXT :: BlendOp
- pattern BLEND_OP_HARDMIX_EXT :: BlendOp
- pattern BLEND_OP_HSL_COLOR_EXT :: BlendOp
- pattern BLEND_OP_HSL_HUE_EXT :: BlendOp
- pattern BLEND_OP_HSL_LUMINOSITY_EXT :: BlendOp
- pattern BLEND_OP_HSL_SATURATION_EXT :: BlendOp
- pattern BLEND_OP_INVERT_EXT :: BlendOp
- pattern BLEND_OP_INVERT_OVG_EXT :: BlendOp
- pattern BLEND_OP_INVERT_RGB_EXT :: BlendOp
- pattern BLEND_OP_LIGHTEN_EXT :: BlendOp
- pattern BLEND_OP_LINEARBURN_EXT :: BlendOp
- pattern BLEND_OP_LINEARDODGE_EXT :: BlendOp
- pattern BLEND_OP_LINEARLIGHT_EXT :: BlendOp
- pattern BLEND_OP_MAX :: BlendOp
- pattern BLEND_OP_MIN :: BlendOp
- pattern BLEND_OP_MINUS_CLAMPED_EXT :: BlendOp
- pattern BLEND_OP_MINUS_EXT :: BlendOp
- pattern BLEND_OP_MULTIPLY_EXT :: BlendOp
- pattern BLEND_OP_OVERLAY_EXT :: BlendOp
- pattern BLEND_OP_PINLIGHT_EXT :: BlendOp
- pattern BLEND_OP_PLUS_CLAMPED_ALPHA_EXT :: BlendOp
- pattern BLEND_OP_PLUS_CLAMPED_EXT :: BlendOp
- pattern BLEND_OP_PLUS_DARKER_EXT :: BlendOp
- pattern BLEND_OP_PLUS_EXT :: BlendOp
- pattern BLEND_OP_RED_EXT :: BlendOp
- pattern BLEND_OP_REVERSE_SUBTRACT :: BlendOp
- pattern BLEND_OP_SCREEN_EXT :: BlendOp
- pattern BLEND_OP_SOFTLIGHT_EXT :: BlendOp
- pattern BLEND_OP_SRC_ATOP_EXT :: BlendOp
- pattern BLEND_OP_SRC_EXT :: BlendOp
- pattern BLEND_OP_SRC_IN_EXT :: BlendOp
- pattern BLEND_OP_SRC_OUT_EXT :: BlendOp
- pattern BLEND_OP_SRC_OVER_EXT :: BlendOp
- pattern BLEND_OP_SUBTRACT :: BlendOp
- pattern BLEND_OP_VIVIDLIGHT_EXT :: BlendOp
- pattern BLEND_OP_XOR_EXT :: BlendOp
- pattern BLEND_OP_ZERO_EXT :: BlendOp
- newtype StencilOp where
- StencilOp Int32
- pattern STENCIL_OP_DECREMENT_AND_CLAMP :: StencilOp
- pattern STENCIL_OP_DECREMENT_AND_WRAP :: StencilOp
- pattern STENCIL_OP_INCREMENT_AND_CLAMP :: StencilOp
- pattern STENCIL_OP_INCREMENT_AND_WRAP :: StencilOp
- pattern STENCIL_OP_INVERT :: StencilOp
- pattern STENCIL_OP_KEEP :: StencilOp
- pattern STENCIL_OP_REPLACE :: StencilOp
- pattern STENCIL_OP_ZERO :: StencilOp
- newtype LogicOp where
- LogicOp Int32
- pattern LOGIC_OP_AND :: LogicOp
- pattern LOGIC_OP_AND_INVERTED :: LogicOp
- pattern LOGIC_OP_AND_REVERSE :: LogicOp
- pattern LOGIC_OP_CLEAR :: LogicOp
- pattern LOGIC_OP_COPY :: LogicOp
- pattern LOGIC_OP_COPY_INVERTED :: LogicOp
- pattern LOGIC_OP_EQUIVALENT :: LogicOp
- pattern LOGIC_OP_INVERT :: LogicOp
- pattern LOGIC_OP_NAND :: LogicOp
- pattern LOGIC_OP_NOR :: LogicOp
- pattern LOGIC_OP_NO_OP :: LogicOp
- pattern LOGIC_OP_OR :: LogicOp
- pattern LOGIC_OP_OR_INVERTED :: LogicOp
- pattern LOGIC_OP_OR_REVERSE :: LogicOp
- pattern LOGIC_OP_SET :: LogicOp
- pattern LOGIC_OP_XOR :: LogicOp
- newtype VertexInputRate where
- VertexInputRate Int32
- pattern VERTEX_INPUT_RATE_INSTANCE :: VertexInputRate
- pattern VERTEX_INPUT_RATE_VERTEX :: VertexInputRate
- newtype DynamicState where
- DynamicState Int32
- pattern DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_BLEND_CONSTANTS :: DynamicState
- pattern DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT :: DynamicState
- pattern DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT :: DynamicState
- pattern DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_COLOR_WRITE_MASK_EXT :: DynamicState
- pattern DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT :: DynamicState
- pattern DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV :: DynamicState
- pattern DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV :: DynamicState
- pattern DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV :: DynamicState
- pattern DYNAMIC_STATE_CULL_MODE :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_BIAS :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_BOUNDS :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_COMPARE_OP :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_DISCARD_RECTANGLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT :: DynamicState
- pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV :: DynamicState
- pattern DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT :: DynamicState
- pattern DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR :: DynamicState
- pattern DYNAMIC_STATE_FRONT_FACE :: DynamicState
- pattern DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT :: DynamicState
- pattern DYNAMIC_STATE_LINE_STIPPLE :: DynamicState
- pattern DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_LINE_WIDTH :: DynamicState
- pattern DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_LOGIC_OP_EXT :: DynamicState
- pattern DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT :: DynamicState
- pattern DYNAMIC_STATE_POLYGON_MODE_EXT :: DynamicState
- pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY :: DynamicState
- pattern DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT :: DynamicState
- pattern DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT :: DynamicState
- pattern DYNAMIC_STATE_RASTERIZATION_STREAM_EXT :: DynamicState
- pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR :: DynamicState
- pattern DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT :: DynamicState
- pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT :: DynamicState
- pattern DYNAMIC_STATE_SAMPLE_MASK_EXT :: DynamicState
- pattern DYNAMIC_STATE_SCISSOR :: DynamicState
- pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT :: DynamicState
- pattern DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_STENCIL_COMPARE_MASK :: DynamicState
- pattern DYNAMIC_STATE_STENCIL_OP :: DynamicState
- pattern DYNAMIC_STATE_STENCIL_REFERENCE :: DynamicState
- pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE :: DynamicState
- pattern DYNAMIC_STATE_STENCIL_WRITE_MASK :: DynamicState
- pattern DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT :: DynamicState
- pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE :: DynamicState
- pattern DYNAMIC_STATE_VERTEX_INPUT_EXT :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV :: DynamicState
- pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: DynamicState
- newtype CullModeFlagBits where
- CullModeFlagBits Flags
- pattern CULL_MODE_BACK_BIT :: CullModeFlagBits
- pattern CULL_MODE_FRONT_AND_BACK :: CullModeFlagBits
- pattern CULL_MODE_FRONT_BIT :: CullModeFlagBits
- pattern CULL_MODE_NONE :: CullModeFlagBits
- type CullModeFlags = CullModeFlagBits
- newtype ColorComponentFlagBits where
- type ColorComponentFlags = ColorComponentFlagBits
- newtype PipelineColorBlendStateCreateFlagBits where
- type PipelineColorBlendStateCreateFlags = PipelineColorBlendStateCreateFlagBits
- newtype PipelineDepthStencilStateCreateFlagBits where
- PipelineDepthStencilStateCreateFlagBits Flags
- pattern PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT :: PipelineDepthStencilStateCreateFlagBits
- pattern PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT :: PipelineDepthStencilStateCreateFlagBits
- type PipelineDepthStencilStateCreateFlags = PipelineDepthStencilStateCreateFlagBits
- type SampleMask = Word32
Documentation
createGraphicsPipelines Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> PipelineCache |
|
| -> ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo)) |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io (Result, "pipelines" ::: Vector Pipeline) |
vkCreateGraphicsPipelines - Create graphics pipelines
Description
The GraphicsPipelineCreateInfo structure includes an array of
PipelineShaderStageCreateInfo structures
for each of the desired active shader stages, as well as creation
information for all relevant fixed-function stages, and a pipeline
layout.
Pipelines are created and returned as described for Multiple Pipeline Creation.
Valid Usage
-
devicemust support at least one queue family with theQUEUE_GRAPHICS_BITcapability
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, and thebasePipelineIndexmember of that same element is not-1,basePipelineIndexmust be less than the index intopCreateInfosthat corresponds to that element - If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BITflag set - If
pipelineCachewas created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access topipelineCachemust be externally synchronized - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,pipelineCachemust beNULL_HANDLE - If a
PipelineCreateFlags2CreateInfoKHRstructure with thePIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRflag set is included in thepNextchain of any element ofpCreateInfos,pipelineCachemust beNULL_HANDLE - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BITmust not be set in theflagsof that element - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BITmust not be set in theflagsof that element - If
PipelineBinaryInfoKHR::binaryCountis not0for any element ofpCreateInfos,PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXTmust not be set in theflagsof that element - If any element
of
pCreateInfossetsPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTand includes embedded sampler mappings, there must be less than (maxSamplerAllocationCount - (minSamplerHeapReservedRangeWithEmbedded
/
samplerDescriptorSize))
Samplerobjects currently created on the device - If any element
of
pCreateInfossetsPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXTand includes embedded sampler mappings, this command must not cause the total number of unique embedded samplers in pipelines and shaders on this device to exceed maxDescriptorHeapEmbeddedSamplers
An implicit cache may be provided by the implementation or a layer. For
this reason, it is still valid to set
PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
on flags for any element of pCreateInfos while passing
NULL_HANDLE for pipelineCache.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle -
pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidGraphicsPipelineCreateInfostructures - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pPipelinesmust be a valid pointer to an array ofcreateInfoCountPipelinehandles -
createInfoCountmust be greater than0 - If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
VK_VERSION_1_0,
AllocationCallbacks,
Device, GraphicsPipelineCreateInfo,
Pipeline, PipelineCache
withGraphicsPipelines :: MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createGraphicsPipelines and destroyPipeline
To ensure that destroyPipeline is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
VkViewport - Structure specifying a viewport
Description
Despite their names, minDepth can be less than, equal to, or greater
than maxDepth.
The framebuffer depth coordinate zf 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(or (maxDepth+minDepth) / 2 ifPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOneisTRUE) - px =
width - py =
height - pz =
maxDepth-minDepth(or (maxDepth-minDepth) / 2 ifPipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOneisTRUE)
If a render pass transform is enabled, the values (px,py) and (ox, oy) defining the viewport are transformed as described in render pass transform before participating in the viewport transform.
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
pre-rasterization shader stage.
The width and height of the implementation-dependent maximum viewport dimensions 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.
Valid Usage
-
widthmust be less than or equal toPhysicalDeviceLimits::maxViewportDimensions[0] - If the
VK_KHR_maintenance1
extension is not enabled, the
VK_AMD_negative_viewport_height
extension is not enabled, and
PhysicalDeviceProperties::apiVersionis less than Vulkan 1.1,heightmust be greater than0.0 - The absolute value of
heightmust be less than or equal toPhysicalDeviceLimits::maxViewportDimensions[1] -
xmust be greater than or equal toviewportBoundsRange[0] - (
x+width) must be less than or equal toviewportBoundsRange[1] -
ymust be greater than or equal toviewportBoundsRange[0] -
ymust be less than or equal toviewportBoundsRange[1] - (
y+height) must be greater than or equal toviewportBoundsRange[0] - (
y+height) must be less than or equal toviewportBoundsRange[1] - If the
VK_EXT_depth_range_unrestrictedextension is not enabled,minDepthmust be between0.0and1.0, inclusive - If the
VK_EXT_depth_range_unrestrictedextension is not enabled,maxDepthmust be between0.0and1.0, inclusive
See Also
VK_VERSION_1_0,
CommandBufferInheritanceViewportScissorInfoNV,
PipelineViewportStateCreateInfo,
cmdSetViewport,
cmdSetViewportWithCount,
cmdSetViewportWithCount
Constructors
| Viewport | |
Instances
| Eq Viewport Source # | |
| Storable Viewport Source # | |
Defined in Vulkan.Core10.GraphicsPipeline | |
| Show Viewport Source # | |
| FromCStruct Viewport Source # | |
Defined in Vulkan.Core10.GraphicsPipeline | |
| ToCStruct Viewport Source # | |
Defined in Vulkan.Core10.GraphicsPipeline | |
| Zero Viewport Source # | |
Defined in Vulkan.Core10.GraphicsPipeline | |
data VertexInputBindingDescription Source #
VkVertexInputBindingDescription - Structure specifying vertex input binding description
Valid Usage
-
bindingmust be less thanPhysicalDeviceLimits::maxVertexInputBindings
-
stridemust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindingStride - If the
VK_KHR_portability_subsetextension is enabled,stridemust be a multiple of, and at least as large as,PhysicalDevicePortabilitySubsetPropertiesKHR::minVertexInputBindingStrideAlignment
Valid Usage (Implicit)
-
inputRatemust be a validVertexInputRatevalue
See Also
VK_VERSION_1_0,
PipelineVertexInputStateCreateInfo,
VertexInputRate
Constructors
| VertexInputBindingDescription | |
Fields
| |
Instances
data VertexInputAttributeDescription Source #
VkVertexInputAttributeDescription - Structure specifying vertex input attribute description
Valid Usage
-
locationmust be less thanPhysicalDeviceLimits::maxVertexInputAttributes
-
bindingmust be less thanPhysicalDeviceLimits::maxVertexInputBindings -
offsetmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributeOffset - The
format features
of
formatmust containFORMAT_FEATURE_VERTEX_BUFFER_BIT -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::vertexAttributeAccessBeyondStrideisFALSE, the sum ofoffsetplus the size of the vertex attribute data described byformatmust not be greater thanstridein theVertexInputBindingDescriptionreferenced inbinding
Valid Usage (Implicit)
-
formatmust be a validFormatvalue
See Also
Constructors
| VertexInputAttributeDescription | |
Fields
| |
Instances
data PipelineVertexInputStateCreateInfo (es :: [Type]) Source #
VkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state
Valid Usage
-
vertexBindingDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindings
-
vertexAttributeDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributes - For every
bindingspecified by each element ofpVertexAttributeDescriptions, aVertexInputBindingDescriptionmust exist inpVertexBindingDescriptionswith the same value ofbinding -
All elements of
pVertexBindingDescriptionsmust describe distinct binding numbers -
All elements of
pVertexAttributeDescriptionsmust describe distinct attribute locations
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
-
pNextmust beNULLor a pointer to a valid instance ofPipelineVertexInputDivisorStateCreateInfo - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be0 -
If
vertexBindingDescriptionCountis not0,pVertexBindingDescriptionsmust be a valid pointer to an array ofvertexBindingDescriptionCountvalidVertexInputBindingDescriptionstructures -
If
vertexAttributeDescriptionCountis not0,pVertexAttributeDescriptionsmust be a valid pointer to an array ofvertexAttributeDescriptionCountvalidVertexInputAttributeDescriptionstructures
See Also
VK_VERSION_1_0,
GraphicsPipelineCreateInfo,
GraphicsShaderGroupCreateInfoNV,
PipelineVertexInputStateCreateFlags,
StructureType,
VertexInputAttributeDescription, VertexInputBindingDescription
Constructors
| PipelineVertexInputStateCreateInfo | |
Fields
| |
Instances
data PipelineInputAssemblyStateCreateInfo Source #
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 the
primitiveTopologyListRestart
feature is not enabled, and
topologyisPRIMITIVE_TOPOLOGY_POINT_LIST,PRIMITIVE_TOPOLOGY_LINE_LIST,PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, orPRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,primitiveRestartEnablemust beFALSE
- If the
primitiveTopologyPatchListRestart
feature is not enabled, and
topologyisPRIMITIVE_TOPOLOGY_PATCH_LIST,primitiveRestartEnablemust beFALSE - If the
geometryShader
feature is not enabled,
topologymust not be any ofPRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYorPRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY - If the
tessellationShader
feature is not enabled,
topologymust not bePRIMITIVE_TOPOLOGY_PATCH_LIST - If
the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::triangleFansisFALSE,topologymust not bePRIMITIVE_TOPOLOGY_TRIANGLE_FAN
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
-
pNextmust beNULL -
flagsmust be0 -
topologymust be a validPrimitiveTopologyvalue
See Also
VK_VERSION_1_0,
Bool32, GraphicsPipelineCreateInfo,
PipelineInputAssemblyStateCreateFlags,
PrimitiveTopology,
StructureType
Constructors
| PipelineInputAssemblyStateCreateInfo | |
Fields
| |
Instances
data PipelineTessellationStateCreateInfo (es :: [Type]) Source #
VkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state
Valid Usage
-
patchControlPointsmust be greater than zero and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
-
pNextmust beNULLor a pointer to a valid instance ofPipelineTessellationDomainOriginStateCreateInfo - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be0
See Also
VK_VERSION_1_0,
GraphicsPipelineCreateInfo,
GraphicsShaderGroupCreateInfoNV,
PipelineTessellationStateCreateFlags,
StructureType
Constructors
| PipelineTessellationStateCreateInfo | |
Fields
| |
Instances
data PipelineViewportStateCreateInfo (es :: [Type]) Source #
VkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state
Valid Usage
- If the
multiViewport
feature is not enabled,
viewportCountmust not be greater than1
- If the
multiViewport
feature is not enabled,
scissorCountmust not be greater than1 -
viewportCountmust be less than or equal toPhysicalDeviceLimits::maxViewports -
scissorCountmust be less than or equal toPhysicalDeviceLimits::maxViewports - The
xandymembers ofoffsetmember of any element ofpScissorsmust be greater than or equal to0 - Evaluation of
(
offset.x+extent.width) must not cause a signed integer addition overflow for any element ofpScissors - Evaluation of
(
offset.y+extent.height) must not cause a signed integer addition overflow for any element ofpScissors - If
scissorCountandviewportCountare both not dynamic, thenscissorCountandviewportCountmust be identical - If the
graphics pipeline is being created with
DYNAMIC_STATE_VIEWPORT_WITH_COUNTset thenviewportCountmust be0, otherwiseviewportCountmust be greater than0 - If the
graphics pipeline is being created with
DYNAMIC_STATE_SCISSOR_WITH_COUNTset thenscissorCountmust be0, otherwisescissorCountmust be greater than0 -
If the
viewportWScalingEnablemember of aPipelineViewportWScalingStateCreateInfoNVstructure included in thepNextchain isTRUE, theviewportCountmember of thePipelineViewportWScalingStateCreateInfoNVstructure must be greater than or equal toPipelineViewportStateCreateInfo::viewportCount
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineViewportCoarseSampleOrderStateCreateInfoNV,PipelineViewportDepthClampControlCreateInfoEXT,PipelineViewportDepthClipControlCreateInfoEXT,PipelineViewportExclusiveScissorStateCreateInfoNV,PipelineViewportShadingRateImageStateCreateInfoNV,PipelineViewportSwizzleStateCreateInfoNV, orPipelineViewportWScalingStateCreateInfoNV - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be0
See Also
VK_VERSION_1_0,
GraphicsPipelineCreateInfo,
PipelineViewportStateCreateFlags,
Rect2D,
StructureType, Viewport
Constructors
| PipelineViewportStateCreateInfo | |
Fields
| |
Instances
data PipelineRasterizationStateCreateInfo (es :: [Type]) Source #
VkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state
Description
The application can also add a
PipelineRasterizationStateRasterizationOrderAMD
structure to the pNext chain of a
PipelineRasterizationStateCreateInfo structure. This structure enables
selecting the rasterization order to use when rendering with the
corresponding graphics pipeline as described in
Rasterization Order.
Valid Usage
-
If the
depthClamp
feature is not enabled,
depthClampEnablemust beFALSE
- If
the
fillModeNonSolid
feature is not enabled,
polygonModemust bePOLYGON_MODE_FILLorPOLYGON_MODE_FILL_RECTANGLE_NV - If
the
VK_NV_fill_rectangleextension is not enabled,polygonModemust not bePOLYGON_MODE_FILL_RECTANGLE_NV - If
the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::pointPolygonsisFALSE, andrasterizerDiscardEnableisFALSE,polygonModemust not bePOLYGON_MODE_POINT
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDepthBiasRepresentationInfoEXT,PipelineRasterizationConservativeStateCreateInfoEXT,PipelineRasterizationDepthClipStateCreateInfoEXT,PipelineRasterizationLineStateCreateInfo,PipelineRasterizationProvokingVertexStateCreateInfoEXT,PipelineRasterizationStateRasterizationOrderAMD, orPipelineRasterizationStateStreamCreateInfoEXT - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be0 -
polygonModemust be a validPolygonModevalue -
cullModemust be a valid combination ofCullModeFlagBitsvalues -
frontFacemust be a validFrontFacevalue
See Also
VK_VERSION_1_0,
Bool32,
CullModeFlags,
FrontFace, GraphicsPipelineCreateInfo,
PipelineRasterizationStateCreateFlags,
PolygonMode,
StructureType
Constructors
| PipelineRasterizationStateCreateInfo | |
Fields
| |
Instances
data PipelineMultisampleStateCreateInfo (es :: [Type]) Source #
VkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state
Description
Each bit in the sample mask is associated with a unique
sample index
as defined for the
coverage mask.
Each bit b for mask word w in the sample mask corresponds to sample
index i, where i = 32 × w + b. pSampleMask has a length equal to ⌈
rasterizationSamples / 32 ⌉ words.
If pSampleMask is NULL, it is treated as if the mask has all bits
set to 1.
Valid Usage
-
If the
sampleRateShading
feature is not enabled,
sampleShadingEnablemust beFALSE
-
If the
alphaToOne
feature is not enabled,
alphaToOneEnablemust beFALSE -
minSampleShadingmust be in the range [0,1] -
If the
VK_NV_framebuffer_mixed_samplesextension is enabled, and the coverageReductionMode feature is not enabled, or thepNextchain does not containPipelineCoverageReductionStateCreateInfoNV, orPipelineCoverageReductionStateCreateInfoNV::coverageReductionModeis not set toCOVERAGE_REDUCTION_MODE_TRUNCATE_NV, and the subpass has any color attachments, andrasterizationSamplesis greater than the number of color samples, then sample shading must not be enabled
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineCoverageModulationStateCreateInfoNV,PipelineCoverageReductionStateCreateInfoNV,PipelineCoverageToColorStateCreateInfoNV, orPipelineSampleLocationsStateCreateInfoEXT - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be0 -
rasterizationSamplesmust be a validSampleCountFlagBitsvalue
See Also
VK_VERSION_1_0,
Bool32, GraphicsPipelineCreateInfo,
PipelineMultisampleStateCreateFlags,
SampleCountFlagBits,
SampleMask,
StructureType
Constructors
| PipelineMultisampleStateCreateInfo | |
Fields
| |
Instances
data PipelineColorBlendAttachmentState Source #
VkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state
Valid Usage
-
If the
dualSrcBlend
feature is not enabled,
srcColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
-
If the
dualSrcBlend
feature is not enabled,
dstColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA -
If the
dualSrcBlend
feature is not enabled,
srcAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA -
If the
dualSrcBlend
feature is not enabled,
dstAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If
either of
colorBlendOporalphaBlendOpis an advanced blend operation, thencolorBlendOpmust equalalphaBlendOp -
If
PhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlendisFALSEandcolorBlendOpis an advanced blend operation, thencolorBlendOpmust be the same for all attachments -
If
PhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlendisFALSEandalphaBlendOpis an advanced blend operation, thenalphaBlendOpmust be the same for all attachments -
If
PhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendAllOperationsisFALSE, thencolorBlendOpmust not beBLEND_OP_ZERO_EXT,BLEND_OP_SRC_EXT,BLEND_OP_DST_EXT,BLEND_OP_SRC_OVER_EXT,BLEND_OP_DST_OVER_EXT,BLEND_OP_SRC_IN_EXT,BLEND_OP_DST_IN_EXT,BLEND_OP_SRC_OUT_EXT,BLEND_OP_DST_OUT_EXT,BLEND_OP_SRC_ATOP_EXT,BLEND_OP_DST_ATOP_EXT,BLEND_OP_XOR_EXT,BLEND_OP_INVERT_EXT,BLEND_OP_INVERT_RGB_EXT,BLEND_OP_LINEARDODGE_EXT,BLEND_OP_LINEARBURN_EXT,BLEND_OP_VIVIDLIGHT_EXT,BLEND_OP_LINEARLIGHT_EXT,BLEND_OP_PINLIGHT_EXT,BLEND_OP_HARDMIX_EXT,BLEND_OP_PLUS_EXT,BLEND_OP_PLUS_CLAMPED_EXT,BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,BLEND_OP_PLUS_DARKER_EXT,BLEND_OP_MINUS_EXT,BLEND_OP_MINUS_CLAMPED_EXT,BLEND_OP_CONTRAST_EXT,BLEND_OP_INVERT_OVG_EXT,BLEND_OP_RED_EXT,BLEND_OP_GREEN_EXT, orBLEND_OP_BLUE_EXT - If
colorBlendOporalphaBlendOpis an advanced blend operation, thencolorAttachmentCountof the subpass this pipeline is compiled against must be less than or equal toPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendMaxColorAttachments -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactorsisFALSE,srcColorBlendFactormust not beBLEND_FACTOR_CONSTANT_ALPHAorBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactorsisFALSE,dstColorBlendFactormust not beBLEND_FACTOR_CONSTANT_ALPHAorBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
Valid Usage (Implicit)
-
srcColorBlendFactormust be a validBlendFactorvalue
-
dstColorBlendFactormust be a validBlendFactorvalue -
colorBlendOpmust be a validBlendOpvalue -
srcAlphaBlendFactormust be a validBlendFactorvalue -
dstAlphaBlendFactormust be a validBlendFactorvalue -
alphaBlendOpmust be a validBlendOpvalue -
colorWriteMaskmust be a valid combination ofColorComponentFlagBitsvalues
See Also
VK_VERSION_1_0,
BlendFactor,
BlendOp,
Bool32,
ColorComponentFlags,
PipelineColorBlendStateCreateInfo
Constructors
| PipelineColorBlendAttachmentState | |
Fields
| |
Instances
data PipelineColorBlendStateCreateInfo (es :: [Type]) Source #
VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state
Valid Usage
- If the
independentBlend
feature is not enabled, all elements of
pAttachmentsmust be identical
- If
the
logicOp
feature is not enabled,
logicOpEnablemust beFALSE - If
logicOpEnableisTRUE,logicOpmust be a validLogicOpvalue -
If the
rasterizationOrderColorAttachmentAccess
feature is not enabled,
flagsmust not includePIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT - If
attachmentCountis not0, and any ofDYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT,DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT,DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, orDYNAMIC_STATE_COLOR_WRITE_MASK_EXTare not set,pAttachmentsmust be a valid pointer to an array ofattachmentCountvalidPipelineColorBlendAttachmentStatestructures
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineColorBlendAdvancedStateCreateInfoEXTorPipelineColorWriteCreateInfoEXT - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be a valid combination ofPipelineColorBlendStateCreateFlagBitsvalues - If
attachmentCountis not0, andpAttachmentsis notNULL,pAttachmentsmust be a valid pointer to an array ofattachmentCountvalidPipelineColorBlendAttachmentStatestructures
See Also
VK_VERSION_1_0,
Bool32, GraphicsPipelineCreateInfo,
LogicOp,
PipelineColorBlendAttachmentState,
PipelineColorBlendStateCreateFlags,
StructureType
Constructors
| PipelineColorBlendStateCreateInfo | |
Fields
| |
Instances
data PipelineDynamicStateCreateInfo Source #
VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state
Valid Usage
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
-
pNextmust beNULL -
flagsmust be0 - If
dynamicStateCountis not0,pDynamicStatesmust be a valid pointer to an array ofdynamicStateCountvalidDynamicStatevalues
See Also
VK_VERSION_1_0,
DynamicState,
GraphicsPipelineCreateInfo,
PipelineDynamicStateCreateFlags,
RayTracingPipelineCreateInfoKHR,
StructureType
Constructors
| PipelineDynamicStateCreateInfo | |
Fields
| |
Instances
| Show PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.GraphicsPipeline Methods showsPrec :: Int -> PipelineDynamicStateCreateInfo -> ShowS # show :: PipelineDynamicStateCreateInfo -> String # showList :: [PipelineDynamicStateCreateInfo] -> ShowS # | |
| FromCStruct PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.GraphicsPipeline | |
| ToCStruct PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.GraphicsPipeline Methods withCStruct :: PipelineDynamicStateCreateInfo -> (Ptr PipelineDynamicStateCreateInfo -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineDynamicStateCreateInfo -> PipelineDynamicStateCreateInfo -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineDynamicStateCreateInfo -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineDynamicStateCreateInfo -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.GraphicsPipeline Methods | |
data StencilOpState Source #
VkStencilOpState - Structure specifying stencil operation state
Valid Usage (Implicit)
See Also
VK_VERSION_1_0,
CompareOp,
PipelineDepthStencilStateCreateInfo,
StencilOp
Constructors
| StencilOpState | |
Fields
| |
Instances
data PipelineDepthStencilStateCreateInfo Source #
VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state
Valid Usage
-
If the
depthBounds
feature is not enabled,
depthBoundsTestEnablemust beFALSE
-
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::separateStencilMaskRefisFALSE, and the value ofPipelineDepthStencilStateCreateInfo::stencilTestEnableisTRUE, and the value ofPipelineRasterizationStateCreateInfo::cullModeisCULL_MODE_NONE, the value ofreferencein each of theStencilOpStatestructs infrontandbackmust be the same -
If the
rasterizationOrderDepthAttachmentAccess
feature is not enabled,
flagsmust not includePIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT -
If the
rasterizationOrderStencilAttachmentAccess
feature is not enabled,
flagsmust not includePIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
-
pNextmust beNULL -
flagsmust be a valid combination ofPipelineDepthStencilStateCreateFlagBitsvalues -
depthCompareOpmust be a validCompareOpvalue -
frontmust be a validStencilOpStatestructure -
backmust be a validStencilOpStatestructure
See Also
VK_VERSION_1_0,
Bool32,
CompareOp, GraphicsPipelineCreateInfo,
PipelineDepthStencilStateCreateFlags,
StencilOpState, StructureType
Constructors
| PipelineDepthStencilStateCreateInfo | |
Fields
| |
Instances
data GraphicsPipelineCreateInfo (es :: [Type]) Source #
VkGraphicsPipelineCreateInfo - Structure specifying parameters of a newly created graphics pipeline
Description
The parameters basePipelineHandle and basePipelineIndex are
described in more detail in
Pipeline Derivatives.
If any shader stage fails to compile, the compile log will be reported
back to the application, and
ERROR_INVALID_SHADER_NV will be generated.
With VK_EXT_extended_dynamic_state3, it is possible that many of the
GraphicsPipelineCreateInfo members above can be NULL because all
their state is dynamic and therefore ignored. This is optional so the
application can still use a valid pointer if it needs to set the
pNext or flags fields to specify state for other extensions.
The state required for a graphics pipeline is divided into vertex input state, pre-rasterization shader state, fragment shader state, and fragment output state.
Vertex Input State
Vertex input state is defined by:
If this pipeline specifies
pre-rasterization state
either directly or by including it as a pipeline library and its
pStages includes a vertex shader, this state must be specified to
create a
complete graphics pipeline.
If a pipeline includes
GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT
in
GraphicsPipelineLibraryCreateInfoEXT::flags
either explicitly or as a default, and either the conditions requiring
this state for a
complete graphics pipeline
are met or this pipeline does not specify
pre-rasterization state
in any way, that pipeline must specify this state directly.
Pre-Rasterization Shader State
Pre-rasterization shader state is defined by:
PipelineShaderStageCreateInfoentries for:- Vertex shaders
- Tessellation control shaders
- Tessellation evaluation shaders
- Geometry shaders
- Task shaders
- Mesh shaders
Within the
PipelineLayout, all descriptor sets with pre-rasterization shader bindings ifPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXTwas specified.- If
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXTwas not specified, the full pipeline layout must be specified.
- If
PipelineViewportStateCreateInfoPipelineRasterizationStateCreateInfoPipelineTessellationStateCreateInfoRenderPassandsubpassparameter- The
viewMaskparameter ofPipelineRenderingCreateInfo(formats are ignored) PipelineDiscardRectangleStateCreateInfoEXTPipelineFragmentShadingRateStateCreateInfoKHR- Inclusion/omission of the
PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVEflag
This state must be specified to create a complete graphics pipeline.
If either the pNext chain includes a
GraphicsPipelineLibraryCreateInfoEXT
structure with
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
included in flags, or it is not specified and would default to include
that value, this state must be specified in the pipeline.
Fragment Shader State
Fragment shader state is defined by:
- A
PipelineShaderStageCreateInfoentry for the fragment shader Within the
PipelineLayout, all descriptor sets with fragment shader bindings ifPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXTwas specified.- If
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXTwas not specified, the full pipeline layout must be specified.
- If
PipelineMultisampleStateCreateInfoif sample shading is enabled orrenderpassis notNULL_HANDLEPipelineDepthStencilStateCreateInfoRenderPassandsubpassparameter- The
viewMaskparameter ofPipelineRenderingCreateInfo(formats are ignored) PipelineFragmentShadingRateStateCreateInfoKHRPipelineFragmentShadingRateEnumStateCreateInfoNVPipelineRepresentativeFragmentTestStateCreateInfoNV- Inclusion/omission of the
PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRflag - Inclusion/omission of the
PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXTflag RenderingInputAttachmentIndexInfo- Inclusion/omission of the
PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVEflag - The
customResolveparameter ofCustomResolveCreateInfoEXT. Formats are ignored, and not including the structure behaves identically to settingcustomResolvetoFALSE, unlike in fragment output interface state.
If a pipeline specifies
pre-rasterization state
either directly or by including it as a pipeline library and
rasterizerDiscardEnable is FALSE or
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
is used, this state must be specified to create a
complete graphics pipeline.
If a pipeline includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
in
GraphicsPipelineLibraryCreateInfoEXT::flags
either explicitly or as a default, and either the conditions requiring
this state for a
complete graphics pipeline
are met or this pipeline does not specify
pre-rasterization state
in any way, that pipeline must specify this state directly.
Fragment Output State
Fragment output state is defined by:
PipelineColorBlendStateCreateInfoRenderPassandsubpassparameterPipelineMultisampleStateCreateInfoPipelineRenderingCreateInfoAttachmentSampleCountInfoAMDAttachmentSampleCountInfoNVExternalFormatANDROIDCustomResolveCreateInfoEXT- Inclusion/omission of the
PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTandPIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTflags - Inclusion/omission of the
PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXTflag RenderingAttachmentLocationInfo
If a pipeline specifies
pre-rasterization state
either directly or by including it as a pipeline library and
rasterizerDiscardEnable is FALSE or
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
is used, this state must be specified to create a
complete graphics pipeline.
If a pipeline includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
in
GraphicsPipelineLibraryCreateInfoEXT::flags
either explicitly or as a default, and either the conditions requiring
this state for a
complete graphics pipeline
are met or this pipeline does not specify
pre-rasterization state
in any way, that pipeline must specify this state directly.
Dynamic State
Dynamic state values set via pDynamicState must be ignored if the
state they correspond to is not otherwise statically set by one of the
state subsets used to create the pipeline. Additionally, setting dynamic
state values must not modify whether state in a linked library is
static or dynamic; this is set and unchangeable when the library is
created. For example, if a pipeline only included
pre-rasterization shader state,
then any dynamic state value corresponding to depth or stencil testing
has no effect. Any linked library that has dynamic state enabled that
same dynamic state must also be enabled in all the other linked
libraries to which that dynamic state applies.
Complete Graphics Pipelines
A complete graphics pipeline always includes pre-rasterization shader state, with other subsets included depending on that state as specified in the above sections.
Graphics Pipeline Library Layouts
If different subsets are linked together with pipeline layouts created
with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
the final effective pipeline layout is effectively the union of the
linked pipeline layouts. When binding descriptor sets for this pipeline,
the pipeline layout used must be compatible with this union. This
pipeline layout can be overridden when linking with
PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT
by providing a PipelineLayout that is
compatible
with this union other than
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
or when linking without
PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT
by providing a PipelineLayout that is fully
compatible
with this union.
If the pNext chain includes a
PipelineCreateFlags2CreateInfo
structure,
PipelineCreateFlags2CreateInfo::flags
from that structure is used instead of flags from this structure.
Valid Usage
- If the
pNextchain does not include aPipelineCreateFlags2CreateInfostructure,flagsmust be a valid combination ofPipelineCreateFlagBitsvalues
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis -1,basePipelineHandlemust be a valid graphicsPipelinehandle - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleisNULL_HANDLE,basePipelineIndexmust be a valid index into the calling command’spCreateInfosparameter - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag,basePipelineIndexmust be -1 orbasePipelineHandlemust beNULL_HANDLE - If a push constant
block is declared in a shader and
layoutis notNULL_HANDLE, a push constant range inlayoutmust match the shader stage - If a push constant
block is declared in a shader and
layoutis notNULL_HANDLE, the block must be contained inside the push constant range inlayoutthat matches the stage - If a
resource variable
is declared in a shader and
layoutis notNULL_HANDLE, the corresponding descriptor set inlayoutmust match the shader stage - If a
resource variable
is declared in a shader,
layoutis notNULL_HANDLE, and the descriptor type is notDESCRIPTOR_TYPE_MUTABLE_EXT, the corresponding descriptor set inlayoutmust match the descriptor type - If a
resource variable
is declared in a shader as an array and
layoutis notNULL_HANDLE, the corresponding descriptor binding used to createlayoutmust have adescriptorCountthat is greater than or equal to the length of the array - If a
resource variables
is declared in a shader as an array of descriptors, then the
descriptor type of that variable must not be
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK - If
shader64BitIndexing
feature is not enabled,
flagsmust not containPIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT -
If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BITnorPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT - If
the
pipelineProtectedAccess
feature is not enabled,
flagsmust not includePIPELINE_CREATE_NO_PROTECTED_ACCESS_BITnorPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT -
flagsmust not include bothPIPELINE_CREATE_NO_PROTECTED_ACCESS_BITandPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT - If
PipelineCreateFlags2CreateInfoKHR::flagsincludesPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,layoutmust beNULL_HANDLE - If
PipelineCreateFlags2CreateInfoKHR::flagsincludesPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all shader variables in the shader resource interface with aDescriptorSetandBindingdecoration must have a mapping declared inShaderDescriptorSetAndBindingMappingInfoEXT::pMappings - If the pipeline
requires
pre-rasterization shader state
the
stagemember of one element ofpStagesmust beSHADER_STAGE_VERTEX_BITorSHADER_STAGE_MESH_BIT_EXT - If the pipeline
requires
pre-rasterization shader state
the geometric shader stages provided in
pStagesmust be either from the mesh shading pipeline (stageisSHADER_STAGE_TASK_BIT_EXTorSHADER_STAGE_MESH_BIT_EXT) or from the primitive shading pipeline (stageisSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT, orSHADER_STAGE_GEOMETRY_BIT) - If the pipeline
requires
pre-rasterization shader state
and
pStagescontains bothSHADER_STAGE_TASK_BIT_EXTandSHADER_STAGE_MESH_BIT_EXT, then the mesh shader’s entry point must not declare a variable with aDrawIndexBuiltIndecoration - The shader stages
for
SHADER_STAGE_TASK_BIT_EXTorSHADER_STAGE_MESH_BIT_EXTmust use either theTaskNVandMeshNVExecutionModelor theTaskEXTandMeshEXTExecutionModel, but must not use both - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes a tessellation control shader stage, it must include a tessellation evaluation shader stage - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes a tessellation evaluation shader stage, it must include a tessellation control shader stage - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes a tessellation control shader stage, and theVK_EXT_extended_dynamic_state3extension is not enabled or theDYNAMIC_STATE_PATCH_CONTROL_POINTS_EXTdynamic state is not set,pTessellationStatemust be a valid pointer to a validPipelineTessellationStateCreateInfostructure - If
pTessellationStateis notNULLit must be a pointer to a validPipelineTessellationStateCreateInfostructure - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes tessellation shader stages, the shader code of at least one stage must contain anOpExecutionModeinstruction specifying the type of subdivision in the pipeline - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes tessellation shader stages, and the shader code of both stages contain anOpExecutionModeinstruction specifying the type of subdivision in the pipeline, they must both specify the same subdivision mode - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes tessellation shader stages, the shader code of at least one stage must contain anOpExecutionModeinstruction specifying the output patch size in the pipeline - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes tessellation shader stages, and the shader code of both contain anOpExecutionModeinstruction specifying the out patch size in the pipeline, they must both specify the same patch size - If the pipeline is
being created with
pre-rasterization shader state
and
vertex input state
and
pStagesincludes tessellation shader stages, and eitherDYNAMIC_STATE_PRIMITIVE_TOPOLOGYdynamic state is not enabled or dynamicPrimitiveTopologyUnrestricted isFALSE, thetopologymember ofpInputAssemblymust bePRIMITIVE_TOPOLOGY_PATCH_LIST - If the pipeline
is being created with
pre-rasterization shader state
and
vertex input state
and the
topologymember ofpInputAssemblyisPRIMITIVE_TOPOLOGY_PATCH_LIST, and eitherDYNAMIC_STATE_PRIMITIVE_TOPOLOGYdynamic state is not enabled or dynamicPrimitiveTopologyUnrestricted isFALSE, thenpStagesmust include tessellation shader stages - If
the pipeline is being created with a
TessellationEvaluationExecutionModel, noGeometryExecutionModel, uses thePointModeExecutionMode, and the shaderTessellationAndGeometryPointSize feature is enabled, aPointSizedecorated variable must be written to if the maintenance5 feature is not enabled - If the pipeline
is being created with a
VertexExecutionModeland noTessellationEvaluationorGeometryExecutionModel, and thetopologymember ofpInputAssemblyisPRIMITIVE_TOPOLOGY_POINT_LIST, and eitherDYNAMIC_STATE_PRIMITIVE_TOPOLOGYdynamic state is not enabled or dynamicPrimitiveTopologyUnrestricted isFALSE, aPointSizedecorated variable must be written to if the maintenance5 feature is not enabled - If
the pipeline is being created with a
TessellationEvaluationExecutionModel, noGeometryExecutionModel, uses thePointModeExecutionMode, and the shaderTessellationAndGeometryPointSize feature is not enabled, aPointSizedecorated variable must not be written to -
If the pipeline is being created with a
GeometryExecutionModel, uses theOutputPointsExecutionMode, and the shaderTessellationAndGeometryPointSize feature is enabled, aPointSizedecorated variable must be written to for every vertex emitted if the maintenance5 feature is not enabled - If the pipeline
is being created with a
GeometryExecutionModel, uses theOutputPointsExecutionMode, and the shaderTessellationAndGeometryPointSize feature is not enabled, aPointSizedecorated variable must not be written to - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain anOpExecutionModeinstruction specifying an input primitive type that is compatible with the primitive topology specified inpInputAssembly - If the pipeline
requires
pre-rasterization shader state
and
pStagesincludes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain anOpExecutionModeinstruction specifying an input primitive type that is compatible with the primitive topology that is output by the tessellation stages - If the pipeline
requires
pre-rasterization shader state
and
fragment shader state,
it includes both a fragment shader and a geometry shader, 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 withPrimitiveId, in all execution paths - If the
pipeline requires
pre-rasterization shader state,
it includes a mesh shader and the fragment shader code reads from an
input variable that is decorated with
PrimitiveId, then the mesh shader code must write to a matching output variable, decorated withPrimitiveId, in all execution paths - If
renderPassis notNULL_HANDLEand the pipeline is being created with fragment shader state the fragment shader must not read from any input attachment that is defined asATTACHMENT_UNUSEDinsubpass - If the pipeline
requires
pre-rasterization shader state
and multiple pre-rasterization shader stages are included in
pStages, the shader code for the entry points identified by thosepStagesand the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter - If the pipeline requires pre-rasterization shader state and fragment shader state, the fragment shader and last pre-rasterization shader stage and any relevant state must adhere to the pipeline linking rules described in the Shader Interfaces chapter
- If
renderPassis notNULL_HANDLE, and the pipeline is being created with fragment output interface state, then for each color attachment in the subpass, if the potential format features of the format of the corresponding attachment description do not containFORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then theblendEnablemember of the corresponding element of thepAttachmentsmember ofpColorBlendStatemust beFALSE - If
renderPassis notNULL_HANDLE, the pipeline is being created with fragment output interface state, thepColorBlendStatepointer is notNULL, theattachmentCountmember ofpColorBlendStateis not ignored, and the subpass uses color attachments, theattachmentCountmember ofpColorBlendStatemust be equal to thecolorAttachmentCountused to createsubpass - If the
pipeline requires
pre-rasterization shader state,
and
pViewportState->pViewportsis not dynamic, thenpViewportState->pViewportsmust be a valid pointer to an array ofpViewportState->viewportCountvalidViewportstructures - If the
pipeline requires
pre-rasterization shader state,
and
pViewportState->pScissorsis not dynamic, thenpViewportState->pScissorsmust be a valid pointer to an array ofpViewportState->scissorCountRect2Dstructures - If the
pipeline requires
pre-rasterization shader state,
and the
wideLines
feature is not enabled, and no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_LINE_WIDTH, thelineWidthmember ofpRasterizationStatemust be1.0 - If
the pipeline requires
pre-rasterization shader state,
and the
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLEdynamic state is enabled or therasterizerDiscardEnablemember ofpRasterizationStateisFALSE, and related dynamic state is not set,pViewportStatemust be a valid pointer to a validPipelineViewportStateCreateInfostructure - If
pViewportStateis notNULLit must be a valid pointer to a validPipelineViewportStateCreateInfostructure - If the
pipeline requires
fragment output interface state,
and the
VK_EXT_extended_dynamic_state3extension is not enabled or any of theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,DYNAMIC_STATE_SAMPLE_MASK_EXT, orDYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTdynamic states is not set, or the alphaToOne feature is enabled andDYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXTis not set,pMultisampleStatemust be a valid pointer to a validPipelineMultisampleStateCreateInfostructure - If
pMultisampleStateis notNULLit must be a valid pointer to a validPipelineMultisampleStateCreateInfostructure - If
the pipeline is being created with
fragment shader state,
the
PipelineMultisampleStateCreateInfo::alphaToCoverageEnableis not ignored and isTRUE, then the Fragment Output Interface must contain a variable for the alphaComponentword inLocation0 atIndex0 - If
renderPassis notNULL_HANDLE, the pipeline is being created with fragment shader state, andsubpassuses a depth/stencil attachment, and related dynamic state is not set,pDepthStencilStatemust be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If
pDepthStencilStateis notNULLit must be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If
renderPassis notNULL_HANDLE, the pipeline is being created with fragment output interface state, andsubpassuses color attachments, and related dynamic state is not set,pColorBlendStatemust be a valid pointer to a validPipelineColorBlendStateCreateInfostructure - If the
pipeline requires
pre-rasterization shader state,
the
depthBiasClamp
feature is not enabled, no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_DEPTH_BIAS, and thedepthBiasEnablemember ofpRasterizationStateisTRUE, thedepthBiasClampmember ofpRasterizationStatemust be0.0 - If the
pipeline requires
fragment shader state,
the
VK_EXT_depth_range_unrestrictedextension is not enabled and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_DEPTH_BOUNDS, and thedepthBoundsTestEnablemember ofpDepthStencilStateisTRUE, theminDepthBoundsandmaxDepthBoundsmembers ofpDepthStencilStatemust be between0.0and1.0, inclusive - If the
pipeline requires
fragment shader state,
no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_DEPTH_BOUNDS, andpDynamicStatesincludesDYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLEor thedepthBoundsTestEnablemember ofpDepthStencilStateisTRUE,minDepthBoundsmust be less than or equal tomaxDepthBounds - If the
pipeline requires
fragment shader state
or
fragment output interface state,
and
rasterizationSamplesandsampleLocationsInfoare not dynamic, andPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnableincluded in thepNextchain ofpMultisampleStateisTRUE,sampleLocationsInfo.sampleLocationGridSize.widthmust evenly divideMultisamplePropertiesEXT::maxSampleLocationGridSize.widthas returned bygetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equalingrasterizationSamples - If the
pipeline requires
fragment shader state
or
fragment output interface state,
and
rasterizationSamplesandsampleLocationsInfoare not dynamic, andPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnablethe included in thepNextchain ofpMultisampleStateisTRUEorDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTis used,sampleLocationsInfo.sampleLocationGridSize.heightmust evenly divideMultisamplePropertiesEXT::maxSampleLocationGridSize.heightas returned bygetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equalingrasterizationSamples - If the
pipeline requires
fragment shader state
or
fragment output interface state,
and
rasterizationSamplesandsampleLocationsInfoare not dynamic, andPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnableincluded in thepNextchain ofpMultisampleStateisTRUEorDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTis used,sampleLocationsInfo.sampleLocationsPerPixelmust equalrasterizationSamples - If
the pipeline requires
fragment shader state,
and the
sampleLocationsEnablemember of aPipelineSampleLocationsStateCreateInfoEXTstructure included in thepNextchain ofpMultisampleStateisTRUE, the fragment shader code must not statically use the extended instructionInterpolateAtSample -
If the pipeline requires
fragment output interface state,
and none of the
VK_AMD_mixed_attachment_samplesextension, theVK_NV_framebuffer_mixed_samplesextension, or the multisampledRenderToSingleSampled feature are enabled,rasterizationSamplesis not dynamic, and ifsubpassuses color and/or depth/stencil attachments, then therasterizationSamplesmember ofpMultisampleStatemust be the same as the sample count for those subpass attachments - If the pipeline
requires
fragment output interface state,
and the
VK_AMD_mixed_attachment_samplesextension is enabled,rasterizationSamplesis not dynamic, and ifsubpassuses color and/or depth/stencil attachments, then therasterizationSamplesmember ofpMultisampleStatemust equal the maximum of the sample counts of those subpass attachments - If
renderPassis notNULL_HANDLE, theVK_EXT_multisampled_render_to_single_sampledextension is enabled,rasterizationSamplesis not dynamic, andsubpasshas aMultisampledRenderToSingleSampledInfoEXTstructure included in theSubpassDescription2::pNextchain withmultisampledRenderToSingleSampledEnableequal toTRUE, then therasterizationSamplesmember ofpMultisampleStatemust be equal toMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples - If the pipeline
requires
fragment output interface state,
the
VK_NV_framebuffer_mixed_samplesextension is enabled,rasterizationSamplesis not dynamic, and ifsubpasshas a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then therasterizationSamplesmember ofpMultisampleStatemust be the same as the sample count of the depth/stencil attachment - If the pipeline
requires
fragment output interface state,
the
VK_NV_framebuffer_mixed_samplesextension is enabled,rasterizationSamplesis not dynamic, and ifsubpasshas any color attachments, then therasterizationSamplesmember ofpMultisampleStatemust be greater than or equal to the sample count for those subpass attachments - If
the pipeline requires
fragment output interface state,
the
coverageReductionMode
feature is enabled, and
rasterizationSamplesis not dynamic, the coverage reduction mode specified byPipelineCoverageReductionStateCreateInfoNV::coverageReductionMode, therasterizationSamplesmember ofpMultisampleStateand the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned bygetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - If the pipeline
requires
fragment output interface state,
rasterizationSamplesis not dynamic, andsubpassdoes not use any color and/or depth/stencil attachments, then therasterizationSamplesmember ofpMultisampleStatemust follow the rules for a zero-attachment subpass - If
renderPassis notNULL_HANDLE,subpassmust be a valid subpass withinrenderPass - If
renderPassis notNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,subpassviewMask is not0, andmultiviewTessellationShaderis not enabled, thenpStagesmust not include tessellation shaders - If
renderPassis notNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,subpassviewMask is not0, andmultiviewGeometryShaderis not enabled, thenpStagesmust not include a geometry shader - If
renderPassis notNULL_HANDLEand the pipeline is being created with pre-rasterization shader state, andsubpassviewMask is not0, then all of the shaders in the pipeline must not include variables decorated with theLayerbuilt-in decoration in their interfaces - If
renderPassis notNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,subpassviewMask is not0, andmultiviewMeshShaderis not enabled, thenpStagesmust not include a mesh shader - If
renderPassis notNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,pStagesinclude a mesh shader, andsubpassviewMask is not0, then the index of the most significant bit inviewMaskmust be less than maxMeshMultiviewViewCount -
flagsmust not contain thePIPELINE_CREATE_DISPATCH_BASE_BITflag - If the pipeline
requires
fragment shader state
and an input attachment was referenced by an
aspectMaskatrenderPasscreation time, the fragment shader must only read from the aspects that were specified for that input attachment - The number of
resources in
layoutaccessible to each shader stage that is used by the pipeline must be less than or equal toPhysicalDeviceLimits::maxPerStageResources - If the
pipeline requires
pre-rasterization shader state,
and no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_VIEWPORT_W_SCALING_NV, and theviewportWScalingEnablemember of aPipelineViewportWScalingStateCreateInfoNVstructure, included in thepNextchain ofpViewportState, isTRUE, thepViewportWScalingsmember of thePipelineViewportWScalingStateCreateInfoNVmust be a pointer to an array ofPipelineViewportWScalingStateCreateInfoNV::viewportCountvalidViewportWScalingNVstructures - If the
pipeline requires
pre-rasterization shader state,
and no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, and ifpViewportState->pNextchain includes aPipelineViewportExclusiveScissorStateCreateInfoNVstructure, and if itsexclusiveScissorCountmember is not0, then itspExclusiveScissorsmember must be a valid pointer to an array ofexclusiveScissorCountRect2Dstructures - If
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NVis included in thepDynamicStatesarray then the implementation must support at leastspecVersion2of theVK_NV_scissor_exclusiveextension - If the
pipeline requires
pre-rasterization shader state,
and no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, and ifpViewportState->pNextchain includes aPipelineViewportShadingRateImageStateCreateInfoNVstructure, then itspShadingRatePalettesmember must be a valid pointer to an array ofviewportCountvalidShadingRatePaletteNVstructures - If the
pipeline requires
pre-rasterization shader state,
and no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_DISCARD_RECTANGLE_EXT, and ifpNextchain includes aPipelineDiscardRectangleStateCreateInfoEXTstructure, and if itsdiscardRectangleCountmember is not0, then itspDiscardRectanglesmember must be a valid pointer to an array ofdiscardRectangleCountRect2Dstructures - If
DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXTis included in thepDynamicStatesarray then the implementation must support at leastspecVersion2of theVK_EXT_discard_rectanglesextension - If
DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXTis included in thepDynamicStatesarray then the implementation must support at leastspecVersion2of theVK_EXT_discard_rectanglesextension - If the pipeline
requires
vertex input state,
and
pVertexInputStateis not dynamic, thenpVertexInputStatemust be a valid pointer to a validPipelineVertexInputStateCreateInfostructure - If the
vertexAttributeRobustness
feature is not enabled, and the
maintenance9
feature is not enabled, and the pipeline is being created with
vertex input state
and
pVertexInputStateis not dynamic, then all variables with theInputstorage class decorated withLocationin theVertexExecutionModelOpEntryPointmust contain a location inVertexInputAttributeDescription::location - If the pipeline
requires
vertex input state
and
pVertexInputStateis not dynamic, then the numeric type associated with allInputvariables of the correspondingLocationin theVertexExecutionModelOpEntryPointmust be the same asVertexInputAttributeDescription::format - If the
pipeline is being created with
vertex input state
and
pVertexInputStateis not dynamic, andVertexInputAttributeDescription::formathas a 64-bit component, then the scalar width associated with allInputvariables of the correspondingLocationin theVertexExecutionModelOpEntryPointmust be 64-bit - If the
pipeline is being created with
vertex input state
and
pVertexInputStateis not dynamic, and the scalar width associated with aLocationdecoratedInputvariable in theVertexExecutionModelOpEntryPointis 64-bit, then the correspondingVertexInputAttributeDescription::formatmust have a 64-bit component - If the
pipeline is being created with
vertex input state
and
pVertexInputStateis not dynamic, andVertexInputAttributeDescription::formathas a 64-bit component, then allInputvariables at the correspondingLocationin theVertexExecutionModelOpEntryPointmust not use components that are not present in the format -
If the pipeline requires
vertex input state,
and
related dynamic state is not set,
pInputAssemblyStatemust be a valid pointer to a validPipelineInputAssemblyStateCreateInfostructure - If
pInputAssemblyStateis notNULLit must be a valid pointer to a validPipelineInputAssemblyStateCreateInfostructure - If the pipeline
requires
pre-rasterization shader state,
the
Xfbexecution mode can be specified by no more than one shader stage inpStages - If the pipeline
requires
pre-rasterization shader state,
and any shader stage in
pStagesspecifiesXfbexecution mode it must be the last pre-rasterization shader stage - If the
pipeline requires
pre-rasterization shader state,
and a
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStreamvalue other than zero is specified, all variables in the output interface of the entry point being compiled decorated withPosition,PointSize,ClipDistance, orCullDistancemust be decorated with identicalStreamvalues that match therasterizationStream - If the
pipeline requires
pre-rasterization shader state,
and
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStreamis zero, or not specified, all variables in the output interface of the entry point being compiled decorated withPosition,PointSize,ClipDistance, orCullDistancemust be decorated with aStreamvalue of zero, or must not specify theStreamdecoration - If the
pipeline requires
pre-rasterization shader state,
and the last
pre-rasterization shader stage
is a geometry shader, and that geometry shader uses the
GeometryStreamscapability, thenPhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreamsfeature must be enabled - If the pipeline
requires
pre-rasterization shader state,
and there are any mesh shader stages in the pipeline there must
not be any shader stage in the pipeline with a
Xfbexecution mode - If
the pipeline requires
pre-rasterization shader state
and at least one of
fragment output interface state
or
fragment shader state,
and
pMultisampleStateis notNULL, thelineRasterizationModemember of aPipelineRasterizationLineStateCreateInfostructure included in thepNextchain ofpRasterizationStateisLINE_RASTERIZATION_MODE_BRESENHAMorLINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, then thealphaToCoverageEnable,alphaToOneEnable, andsampleShadingEnablemembers ofpMultisampleStatemust all beFALSE - If the
pipeline requires
pre-rasterization shader state,
the
stippledLineEnablemember ofPipelineRasterizationLineStateCreateInfoisTRUE, and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_LINE_STIPPLE, then thelineStippleFactormember ofPipelineRasterizationLineStateCreateInfomust be in the range [1,256] - If the
shaderMeshEnqueue
feature is not enabled, shaders specified by
pStagesmust not declare theShaderEnqueueAMDXcapability - If
flagsdoes not includePIPELINE_CREATE_LIBRARY_BIT_KHR, shaders specified bypStagesmust not declare theShaderEnqueueAMDXcapability - If any shader
stages in
pStagesdeclare theShaderEnqueueAMDXcapability,PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDXandPIPELINE_CREATE_2_LIBRARY_BIT_KHRmust be included inflags - If
PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDXis included inflags, and the pipeline requires pre-rasterization shader state, there must not be a task or vertex shader specified inpStages - If
PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDXis included inflags, all elements ofPipelineLibraryCreateInfoKHR::pLibrariesmust have been created withPIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV - If the
extendedDynamicState
feature is not enabled, and the minimum value of
ApplicationInfo::apiVersionused to create theInstanceandapiVersionsupported by the physical device is less than Version 1.3 there must be no element of thepDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_CULL_MODE,DYNAMIC_STATE_FRONT_FACE,DYNAMIC_STATE_PRIMITIVE_TOPOLOGY,DYNAMIC_STATE_VIEWPORT_WITH_COUNT,DYNAMIC_STATE_SCISSOR_WITH_COUNT,DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE,DYNAMIC_STATE_DEPTH_TEST_ENABLE,DYNAMIC_STATE_DEPTH_WRITE_ENABLE,DYNAMIC_STATE_DEPTH_COMPARE_OP,DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,DYNAMIC_STATE_STENCIL_TEST_ENABLE, orDYNAMIC_STATE_STENCIL_OP - If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_VIEWPORT_WITH_COUNTis included in thepDynamicStatesarray thenviewportCountmust be zero - If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_SCISSOR_WITH_COUNTis included in thepDynamicStatesarray thenscissorCountmust be zero - If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_VIEWPORT_WITH_COUNTis included in thepDynamicStatesarray thenDYNAMIC_STATE_VIEWPORTmust not be present - If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_SCISSOR_WITH_COUNTis included in thepDynamicStatesarray thenDYNAMIC_STATE_SCISSORmust not be present - If the
pipeline requires
pre-rasterization shader state,
and includes a mesh shader, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_PRIMITIVE_TOPOLOGY, orDYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE - If the
extendedDynamicState2
feature is not enabled, and the minimum value of
ApplicationInfo::apiVersionused to create theInstanceandapiVersionsupported by the physical device is less than Version 1.3 there must be no element of thepDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_DEPTH_BIAS_ENABLE,DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, orDYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE - If the
extendedDynamicState2LogicOp
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_LOGIC_OP_EXT - If the
extendedDynamicState2PatchControlPoints
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT - If the
pipeline requires
pre-rasterization shader state,
and includes a mesh shader, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, orDYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT - If
flagsincludesPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then the ::deviceGeneratedCommands feature must be enabled - If the pipeline
requires
pre-rasterization shader state
and
flagsincludesPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then all stages must not specifyXfbexecution mode - If the
pipeline is not created with a
complete set of state,
or
PipelineLibraryCreateInfoKHR::libraryCountis not0,GraphicsPipelineShaderGroupsCreateInfoNV::groupCountandGraphicsPipelineShaderGroupsCreateInfoNV::pipelineCountmust be0 - If the
pipeline is created with a
complete set of state,
and
PipelineLibraryCreateInfoKHR::libraryCountis0, and thepNextchain includes an instance ofGraphicsPipelineShaderGroupsCreateInfoNV,GraphicsPipelineShaderGroupsCreateInfoNV::groupCountmust be greater than0 - If
flagsincludesPIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, then the ::deviceGeneratedCommands feature must be enabled - If the pipeline
requires
pre-rasterization shader state
and
flagsincludesPIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, then all stages must not specifyXfbexecution mode - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.widthmust be greater than or equal to1 - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.heightmust be greater than or equal to1 - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.widthmust be a power-of-two value - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.heightmust be a power-of-two value - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.widthmust be less than or equal to4 - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.heightmust be less than or equal to4 - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the pipelineFragmentShadingRate feature is not enabled,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.widthandPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.heightmust both be equal to1 - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[0] must be a validFragmentShadingRateCombinerOpKHRvalue - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[1] must be a validFragmentShadingRateCombinerOpKHRvalue - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the primitiveFragmentShadingRate feature is not enabled,PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[0] must beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR - If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the attachmentFragmentShadingRate feature is not enabled,PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[1] must beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR -
If the pipeline requires
pre-rasterization shader state
and the
primitiveFragmentShadingRateWithMultipleViewports
limit is not supported,
DYNAMIC_STATE_VIEWPORT_WITH_COUNTis not included inpDynamicState->pDynamicStates, andPipelineViewportStateCreateInfo::viewportCountis greater than1, entry points specified inpStagesmust not write to thePrimitiveShadingRateKHRbuilt-in -
If the pipeline requires
pre-rasterization shader state
and the
primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and entry points specified in
pStageswrite to theViewportIndexbuilt-in, they must not also write to thePrimitiveShadingRateKHRbuilt-in -
If the pipeline requires
pre-rasterization shader state
and the
primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and entry points specified in
pStageswrite to theViewportMaskNVbuilt-in, they must not also write to thePrimitiveShadingRateKHRbuilt-in -
If the pipeline requires
pre-rasterization shader state
or
fragment shader state,
the
fragmentShadingRateNonTrivialCombinerOps
limit is not supported, and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, elements ofPipelineFragmentShadingRateStateCreateInfoKHR::combinerOpsmust beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRorFRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR - If the pipeline
requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateTypemust be a validFragmentShadingRateTypeNVvalue - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRatemust be a validFragmentShadingRateNVvalue - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[0] must be a validFragmentShadingRateCombinerOpKHRvalue - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates,PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[1] must be a validFragmentShadingRateCombinerOpKHRvalue - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the fragmentShadingRateEnums feature is not enabled,PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateTypemust be equal toFRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the pipelineFragmentShadingRate feature is not enabled,PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRatemust be equal toFRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the primitiveFragmentShadingRate feature is not enabled,PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[0] must beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR - If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, and the attachmentFragmentShadingRate feature is not enabled,PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[1] must beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR -
If the pipeline requires
fragment shader state,
and the
fragmentShadingRateNonTrivialCombinerOps
limit is not supported and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRis not included inpDynamicState->pDynamicStates, elements ofPipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOpsmust beFRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHRorFRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR - If the pipeline
requires
fragment shader state,
and the
supersampleFragmentShadingRates
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRatemust not be equal toFRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV,FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV,FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV, orFRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV - If the pipeline
requires
fragment shader state,
and the
noInvocationFragmentShadingRates
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRatemust not be equal toFRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV - All
elements of the
pDynamicStatesmember ofpDynamicStatemust not beDYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR - If the
pipeline requires
pre-rasterization shader state
and the
vertexInputDynamicState
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_VERTEX_INPUT_EXT - If the
pipeline requires
pre-rasterization shader state,
and includes a mesh shader, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_VERTEX_INPUT_EXT - If the
colorWriteEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT - If
the pipeline requires
fragment shader state,
and the
VK_QCOM_render_pass_shader_resolveextension or the customResolve feature is enabled,rasterizationSamplesis not dynamic, and if subpass has any input attachments, and if the subpass description containsSUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT, then the sample count of the input attachments must equalrasterizationSamples - If the
pipeline requires
fragment shader state,
and the
VK_QCOM_render_pass_shader_resolveextension or the customResolve feature is enabled, and if the subpass description containsSUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT, thensampleShadingEnablemust be false - If the
dynamicRendering
feature is not enabled and the pipeline requires
pre-rasterization shader state,
fragment shader state,
or
fragment output interface state,
renderPassmust not beNULL_HANDLE - If the
multiview
feature is not enabled, the pipeline requires
pre-rasterization shader state,
fragment shader state,
or
fragment output interface state,
and
renderPassisNULL_HANDLE,PipelineRenderingCreateInfo::viewMaskmust be0 - If the pipeline
requires
pre-rasterization shader state,
fragment shader state,
or
fragment output interface state,
and
renderPassisNULL_HANDLE, the index of the most significant bit inPipelineRenderingCreateInfo::viewMaskmust be less than maxMultiviewViewCount - If the pipeline
requires
fragment output interface state,
and
renderPassisNULL_HANDLE, andPipelineRenderingCreateInfo::colorAttachmentCountis not 0,PipelineRenderingCreateInfo::pColorAttachmentFormatsmust be a valid pointer to an array ofcolorAttachmentCountvalidFormatvalues - If the pipeline
requires
fragment output interface state,
and
renderPassisNULL_HANDLE, each element ofPipelineRenderingCreateInfo::pColorAttachmentFormatsmust be a validFormatvalue - If the pipeline
requires
fragment output interface state,
renderPassisNULL_HANDLE, and any element ofPipelineRenderingCreateInfo::pColorAttachmentFormatsis notFORMAT_UNDEFINED, that format must be a format with potential format features that includeFORMAT_FEATURE_COLOR_ATTACHMENT_BITorFORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV - If the pipeline
requires
fragment output interface state,
and
renderPassisNULL_HANDLE,PipelineRenderingCreateInfo::depthAttachmentFormatmust be a validFormatvalue - If the pipeline
requires
fragment output interface state,
and
renderPassisNULL_HANDLE,PipelineRenderingCreateInfo::stencilAttachmentFormatmust be a validFormatvalue - If the pipeline
requires
fragment output interface state,
renderPassisNULL_HANDLE, andPipelineRenderingCreateInfo::depthAttachmentFormatis notFORMAT_UNDEFINED, it must be a format with potential format features that includeFORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - If the pipeline
requires
fragment output interface state,
renderPassisNULL_HANDLE, andPipelineRenderingCreateInfo::stencilAttachmentFormatis notFORMAT_UNDEFINED, it must be a format with potential format features that includeFORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - If the pipeline
requires
fragment output interface state,
renderPassisNULL_HANDLE, andPipelineRenderingCreateInfo::depthAttachmentFormatis notFORMAT_UNDEFINED, it must be a format that includes a depth component - If the pipeline
requires
fragment output interface state,
renderPassisNULL_HANDLE, andPipelineRenderingCreateInfo::stencilAttachmentFormatis notFORMAT_UNDEFINED, it must be a format that includes a stencil component - If the pipeline
requires
fragment output interface state,
renderPassisNULL_HANDLE,PipelineRenderingCreateInfo::depthAttachmentFormatis notFORMAT_UNDEFINED, andPipelineRenderingCreateInfo::stencilAttachmentFormatis notFORMAT_UNDEFINED,depthAttachmentFormatmust equalstencilAttachmentFormat - If
renderPassisNULL_HANDLE, the pipeline is being created with fragment shader state and fragment output interface state, and either ofPipelineRenderingCreateInfo::depthAttachmentFormatorPipelineRenderingCreateInfo::stencilAttachmentFormatare notFORMAT_UNDEFINED, and theVK_EXT_extended_dynamic_state3extension is not enabled or any of theDYNAMIC_STATE_DEPTH_TEST_ENABLE,DYNAMIC_STATE_DEPTH_WRITE_ENABLE,DYNAMIC_STATE_DEPTH_COMPARE_OP,DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,DYNAMIC_STATE_STENCIL_TEST_ENABLE,DYNAMIC_STATE_STENCIL_OP, orDYNAMIC_STATE_DEPTH_BOUNDSdynamic states are not set,pDepthStencilStatemust be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If
pDepthStencilStateis notNULLit must be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If
renderPassisNULL_HANDLEand the pipeline is being created with fragment shader state but not fragment output interface state, and theVK_EXT_extended_dynamic_state3extension is not enabled, or any of theDYNAMIC_STATE_DEPTH_TEST_ENABLE,DYNAMIC_STATE_DEPTH_WRITE_ENABLE,DYNAMIC_STATE_DEPTH_COMPARE_OP,DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,DYNAMIC_STATE_STENCIL_TEST_ENABLE,DYNAMIC_STATE_STENCIL_OP, orDYNAMIC_STATE_DEPTH_BOUNDSdynamic states are not set,pDepthStencilStatemust be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If
pDepthStencilStateis notNULLit must be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If
renderPassisNULL_HANDLE, the pipeline is being created with fragment output interface state, and any element ofPipelineRenderingCreateInfo::pColorAttachmentFormatsis notFORMAT_UNDEFINED, and theVK_EXT_extended_dynamic_state3extension is not enabled, or any of theDYNAMIC_STATE_LOGIC_OP_ENABLE_EXT,DYNAMIC_STATE_LOGIC_OP_EXT,DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT,DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT,DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, orDYNAMIC_STATE_BLEND_CONSTANTSdynamic states are not set,pColorBlendStatemust be a valid pointer to a validPipelineColorBlendStateCreateInfostructure - If
pColorBlendStateis notNULLit must be a valid pointer to a validPipelineColorBlendStateCreateInfostructure - If
renderPassisNULL_HANDLE,pColorBlendStateis not dynamic, and the pipeline is being created with fragment output interface state,pColorBlendState->attachmentCountmust be equal toPipelineRenderingCreateInfo::colorAttachmentCount - If
renderPassisNULL_HANDLE, aCustomResolveCreateInfoEXTis in the pNext chain, and the pipeline is being created with fragment output interface state,PipelineRenderingCreateInfo::colorAttachmentCountmust be equal toCustomResolveCreateInfoEXT::colorAttachmentCount - If
renderPassisNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,PipelineRenderingCreateInfo::viewMaskis not0, and the multiviewTessellationShader feature is not enabled, thenpStagesmust not include tessellation shaders - If
renderPassisNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,PipelineRenderingCreateInfo::viewMaskis not0, and the multiviewGeometryShader feature is not enabled, thenpStagesmust not include a geometry shader - If
renderPassisNULL_HANDLE, the pipeline is being created with pre-rasterization shader state, andPipelineRenderingCreateInfo::viewMaskis not0, all of the shaders in the pipeline must not include variables decorated with theLayerbuilt-in decoration in their interfaces - If
renderPassisNULL_HANDLE, the pipeline is being created with pre-rasterization shader state, andPipelineRenderingCreateInfo::viewMaskis not0, andmultiviewMeshShaderis not enabled, thenpStagesmust not include a mesh shader - If
renderPassisNULL_HANDLE, the pipeline is being created with pre-rasterization shader state,pStagesinclude a mesh shader, andPipelineRenderingCreateInfo::viewMaskis not0, then the index of the most significant bit inviewMaskmust be less than maxMeshMultiviewViewCount - If the
dynamicRenderingLocalRead
feature is not enabled, the pipeline requires
fragment shader state,
and
renderPassisNULL_HANDLE, fragment shaders inpStagesmust not include theInputAttachmentcapability - If the pipeline
requires
fragment shader state
and
renderPassis notNULL_HANDLE, fragment shaders inpStagesmust not include any of theTileImageColorReadAccessEXT,TileImageDepthReadAccessEXT, orTileImageStencilReadAccessEXTcapabilities - If the pipeline
requires
fragment output interface state
and
renderPassisNULL_HANDLE, for each color attachment format defined by thepColorAttachmentFormatsmember ofPipelineRenderingCreateInfo, if its potential format features do not containFORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then theblendEnablemember of the corresponding element of thepAttachmentsmember ofpColorBlendStatemust beFALSE - If the pipeline
requires
fragment output interface state
and
renderPassisNULL_HANDLE, if thepNextchain includesAttachmentSampleCountInfoAMDorAttachmentSampleCountInfoNV, thecolorAttachmentCountmember of that structure must be equal to the value ofPipelineRenderingCreateInfo::colorAttachmentCount - If
pStagesincludes a fragment shader stage, and the fragment shader declares theEarlyFragmentTestsexecution mode, theflagsmember ofPipelineDepthStencilStateCreateInfomust not includePIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXTorPIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT - If the
dynamicRenderingLocalRead
feature is not enabled, the pipeline requires
fragment output interface state,
and the
flagsmember ofPipelineColorBlendStateCreateInfoincludesPIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT,renderPassmust not beNULL_HANDLE - If the
dynamicRenderingLocalRead
feature is not enabled, the pipeline requires
fragment output interface state,
and the
flagsmember ofPipelineDepthStencilStateCreateInfoincludesPIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXTorPIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,renderPassmust not beNULL_HANDLE - If
the
fragment output interface state,
elements of the
pColorAttachmentSamplesmember ofAttachmentSampleCountInfoAMDorAttachmentSampleCountInfoNVmust be validSampleCountFlagBitsvalues -
If the
fragment output interface state
and the
depthStencilAttachmentSamplesmember ofAttachmentSampleCountInfoAMDorAttachmentSampleCountInfoNVis not 0, it must be a validSampleCountFlagBitsvalue - If the pipeline
requires
fragment output interface state,
renderPassis notNULL_HANDLE, and theflagsmember ofPipelineColorBlendStateCreateInfoincludesPIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXTsubpassmust have been created withSUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT - If the pipeline
requires
fragment shader state,
renderPassis notNULL_HANDLE, and theflagsmember ofPipelineDepthStencilStateCreateInfoincludesPIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,subpassmust have been created withSUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT - If the pipeline
requires
fragment shader state,
renderPassis notNULL_HANDLE, and theflagsmember ofPipelineDepthStencilStateCreateInfoincludesPIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,subpassmust have been created withSUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT -
If
PipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCountis not0, it must be equal tostageCount - If
renderPassisNULL_HANDLE, the pipeline is being created with pre-rasterization shader state or fragment shader state, andMultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnlyisTRUEthenMultiviewPerViewAttributesInfoNVX::perViewAttributesmust also beTRUE - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other flag, the value ofMultiviewPerViewAttributesInfoNVX::perViewAttributesspecified in both this pipeline and the library must be equal - If one element
of
PipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the value ofMultiviewPerViewAttributesInfoNVX::perViewAttributesspecified in both libraries must be equal - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other flag, the value ofMultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnlyspecified in both this pipeline and the library must be equal - If one element
of
PipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the value ofMultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnlyspecified in both libraries must be equal - If the pipeline
requires
pre-rasterization shader state
or
fragment shader state,
pStagesmust be a valid pointer to an array ofstageCountvalidPipelineShaderStageCreateInfostructures - If the pipeline
does not require
pre-rasterization shader state
or
fragment shader state,
stageCountmust be zero - If the
pipeline requires
pre-rasterization shader state,
and
related dynamic state is not set,
pRasterizationStatemust be a valid pointer to a validPipelineRasterizationStateCreateInfostructure - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, and related dynamic state is not set, thenpMultisampleStatemust be a valid pointer to a validPipelineMultisampleStateCreateInfostructure - If
pRasterizationStateis notNULLit must be a valid pointer to a validPipelineRasterizationStateCreateInfostructure - If the pipeline
requires
fragment shader state
or
pre-rasterization shader state,
and
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,layoutmust be a validPipelineLayouthandle - If the pipeline
requires
pre-rasterization shader state,
fragment shader state,
or
fragment output state,
and
renderPassis notNULL_HANDLE,renderPassmust be a validRenderPasshandle - If the pipeline
requires
pre-rasterization shader state,
stageCountmust be greater than0 - If
the
graphicsPipelineLibrary
feature is not enabled, and if the
shaderMeshEnqueue
feature is not enabled,
flagsmust not includePIPELINE_CREATE_LIBRARY_BIT_KHR - If the
shaderMeshEnqueue
feature is not enabled, and the pipeline is being created with
all possible state subsets,
flagsmust not includePIPELINE_CREATE_LIBRARY_BIT_KHR - If
flagsincludesPIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, pipeline libraries included viaPipelineLibraryCreateInfoKHRmust have been created withPIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT - If
flagsincludesPIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT,flagsmust also includePIPELINE_CREATE_LIBRARY_BIT_KHR - If
flagsincludesPIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, pipeline libraries included viaPipelineLibraryCreateInfoKHRmust have been created withPIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT - Any pipeline
libraries included via
PipelineLibraryCreateInfoKHR::pLibrariesmust not include any state subset already defined by this structure or defined by any other pipeline library inPipelineLibraryCreateInfoKHR::pLibraries - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other flag, andlayoutwas not created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then thelayoutused by this pipeline and the library must be identically defined - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and thelayoutspecified by either library was not created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then thelayoutused by each library must be identically defined - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other subset, andlayoutwas created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then thelayoutused by the library must also have been created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and thelayoutspecified by either library was created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then thelayoutused by both libraries must have been created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other subset, andlayoutwas created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, elements of thepSetLayoutsarray whichlayoutwas created with that are notNULL_HANDLEmust be identically defined to the element at the same index ofpSetLayoutsused to create the library’slayout - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and thelayoutspecified by either library was created withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, elements of thepSetLayoutsarray which eitherlayoutwas created with that are notNULL_HANDLEmust be identically defined to the element at the same index ofpSetLayoutsused to create the other library’slayout - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other flag, any descriptor set layout N specified bylayoutin both this pipeline and the library which include bindings accessed by shader stages in each must be /identically defined/ - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, any descriptor set layout N specified bylayoutin both libraries which include bindings accessed by shader stages in each must be identically defined - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other flag, push constants specified inlayoutin both this pipeline and the library which are available to shader stages in each must be identically defined - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, and one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, push constants specified inlayoutin both this pipeline and the library which are available to shader stages in each must be identically defined - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, andGraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other subset, any element of thepSetLayoutsarray whenlayoutwas created and the corresponding element of thepSetLayoutsarray used to create the library’slayoutmust not both beNULL_HANDLE - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and any element of thepSetLayoutsarray used to create each library’slayoutwasNULL_HANDLE, then the corresponding element of thepSetLayoutsarray used to create the other library’slayoutmust not beNULL_HANDLE - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other subset, and any element of thepSetLayoutsarray whichlayoutwas created with wasNULL_HANDLE, then the corresponding element of thepSetLayoutsarray used to create the library’slayoutmust not have shader bindings for shaders in the other subset - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other subset, and any element of thepSetLayoutsarray used to create the library’slayoutwasNULL_HANDLE, then the corresponding element of thepSetLayoutsarray used to create this pipeline’slayoutmust not have shader bindings for shaders in the other subset - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, one element ofPipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and any element of thepSetLayoutsarray used to create each library’slayoutwasNULL_HANDLE, then the corresponding element of thepSetLayoutsarray used to create the other library’slayoutmust not have shader bindings for shaders in the other subset - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, andGraphicsPipelineLibraryCreateInfoEXT::flagsincludes bothGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTandGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,layoutmust have been created with no elements of thepSetLayoutsarray set toNULL_HANDLE - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, andpRasterizationState->rasterizerDiscardEnableisTRUE,layoutmust have been created with no elements of thepSetLayoutsarray set toNULL_HANDLE - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags, the value ofsubpassmust be equal to that used to create the library - If one element
of
PipelineLibraryCreateInfoKHR::pLibrariesincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, and another element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags, the value ofsubpassused to create each library must be identical - If
renderpassis notNULL_HANDLE,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags,renderPassmust be compatible with that used to create the library - If
renderpassisNULL_HANDLE,GraphicsPipelineLibraryCreateInfoEXT::flagsincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags, the value ofrenderPassused to create that library must also beNULL_HANDLE - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags, andrenderPassisNULL_HANDLE, the value ofPipelineRenderingCreateInfo::viewMaskused by this pipeline and that specified by the library must be identical - If one element
of
PipelineLibraryCreateInfoKHR::pLibrariesincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, another element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags, andrenderPasswasNULL_HANDLEfor both libraries, the value ofPipelineRenderingCreateInfo::viewMaskset by each library must be identical - If one element
of
PipelineLibraryCreateInfoKHR::pLibrariesincludes at least one of and no more than two ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, and another element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes one of the other flags, therenderPassobjects used to create each library must be compatible or all equal toNULL_HANDLE - If
renderPassis notNULL_HANDLE, the pipeline requires fragment shader state, and theVK_EXT_extended_dynamic_state3extension is not enabled or any of theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,DYNAMIC_STATE_SAMPLE_MASK_EXT, orDYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTdynamic states is not set, or the alphaToOne feature is enabled andDYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXTis not set, thenpMultisampleStatemust be a valid pointer to a validPipelineMultisampleStateCreateInfostructure - If the pipeline
requires
fragment shader state
with a fragment shader that either enables
sample shading
or decorates any variable in the
Inputstorage class withSample, and theVK_EXT_extended_dynamic_state3extension is not enabled or any of theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,DYNAMIC_STATE_SAMPLE_MASK_EXT, orDYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTdynamic states is not set, or the alphaToOne feature is enabled andDYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXTis not set, thenpMultisampleStatemust be a valid pointer to a validPipelineMultisampleStateCreateInfostructure - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,CustomResolveCreateInfoEXTis included andCustomResolveCreateInfoEXT::customResolveisTRUE, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesalso includes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the library must also includeCustomResolveCreateInfoEXTand theCustomResolveCreateInfoEXT::customResolvespecified by the library must beTRUE - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,CustomResolveCreateInfoEXTis not included orCustomResolveCreateInfoEXT::customResolveisFALSE, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesalso includes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, either the library must not includeCustomResolveCreateInfoEXTor theCustomResolveCreateInfoEXT::customResolvespecified by the library must beFALSE - If one
element of
PipelineLibraryCreateInfoKHRincludes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,CustomResolveCreateInfoEXTis included andCustomResolveCreateInfoEXT::customResolveisTRUE, and another element ofPipelineLibraryCreateInfoKHR::pLibrariesalso includes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the other library must also includeCustomResolveCreateInfoEXTand theCustomResolveCreateInfoEXT::customResolvespecified by the library must beTRUE - If one
element of
PipelineLibraryCreateInfoKHRincludes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,CustomResolveCreateInfoEXTis not included orCustomResolveCreateInfoEXT::customResolveisFALSE, and another element ofPipelineLibraryCreateInfoKHR::pLibrariesalso includes eitherGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, either the other library must not includeCustomResolveCreateInfoEXTor theCustomResolveCreateInfoEXT::customResolvespecified by the library must beFALSE - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXTwith apMultisampleStatethat was notNULL, and an element ofPipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,pMultisampleStatemust be identically defined to that used to create the library - If an element
of
PipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXTwith apMultisampleStatethat was notNULL, and ifGraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,pMultisampleStatemust be identically defined to that used to create the library - If one element
of
PipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXTwith apMultisampleStatethat was notNULL, and if a different element ofPipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, thepMultisampleStateused to create each library must be identically defined - If one element
of
PipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTand a value ofpMultisampleState->sampleShadingEnableequalTRUE, and if a different element ofPipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, thepMultisampleStateused to create each library must be identically defined - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,pMultisampleState->sampleShadingEnableisTRUE, and an element ofPipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,pMultisampleStatemust be identically defined to that used to create the library - If one element
of
PipelineLibraryCreateInfoKHR::pLibrarieswas created withGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXTand a value ofpMultisampleState->sampleShadingEnableequalTRUE, and ifGraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,pMultisampleStatemust be identically defined to that used to create the library - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludes only one ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an element ofPipelineLibraryCreateInfoKHR::pLibrariesincludes the other flag, values specified inPipelineFragmentShadingRateStateCreateInfoKHRfor both this pipeline and that library must be identical - If one element
of
PipelineLibraryCreateInfoKHR::pLibrariesincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTand another element includesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, values specified inPipelineFragmentShadingRateStateCreateInfoKHRfor both this pipeline and that library must be identical - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,pStagesmust be a valid pointer to an array ofstageCountvalidPipelineShaderStageCreateInfostructures - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,layoutmust be a validPipelineLayouthandle - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, orGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, andrenderPassis notNULL_HANDLE,renderPassmust be a validRenderPasshandle - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTorGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,stageCountmust be greater than0 - If
GraphicsPipelineLibraryCreateInfoEXT::flagsis non-zero, ifflagsincludesPIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, any libraries must have also been created withPIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR - If
PipelineLibraryCreateInfoKHR::pLibrariesincludes more than one library, and any library was created withPIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, all libraries must have also been created withPIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR - If
PipelineLibraryCreateInfoKHR::pLibrariesincludes at least one library,GraphicsPipelineLibraryCreateInfoEXT::flagsis non-zero, and any library was created withPIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,flagsmust includePIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, the pipeline includes a complete set of state, and there are no libraries included inPipelineLibraryCreateInfoKHR::pLibraries, thenPipelineLayoutmust be a valid pipeline layout - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with aPipelineLayoutcreated withoutPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, thenlayoutmust be compatible with the layouts in those libraries - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,flagsincludesPIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with aPipelineLayoutcreated withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, thenlayoutmust be compatible with the union of the libraries' pipeline layouts other than the inclusion/exclusion ofPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,flagsdoes not includePIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with aPipelineLayoutcreated withPIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, thenlayoutmust be compatible with the union of the libraries' pipeline layouts -
If
conservativePointAndLineRasterization
is not supported and the
effective rasterization input topology
is in line or point topology class, then
PipelineRasterizationConservativeStateCreateInfoEXT::conservativeRasterizationModemust beCONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT - If the pipeline
requires
pre-rasterization shader state
but not
fragment shader state,
elements of
pStagesmust not havestageset toSHADER_STAGE_FRAGMENT_BIT - If the pipeline
requires
fragment shader state
but not
pre-rasterization shader state,
elements of
pStagesmust not havestageset to a shader stage which participates in pre-rasterization - If the pipeline
requires
pre-rasterization shader state,
all elements of
pStagesmust have astageset to a shader stage which participates in fragment shader state or pre-rasterization shader state - If the pipeline
requires
fragment shader state
and/or
pre-rasterization shader state,
any value of
stagemust not be set in more than one element ofpStages -
If the
extendedDynamicState3TessellationDomainOrigin
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT -
If the
extendedDynamicState3DepthClampEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT -
If the
extendedDynamicState3PolygonMode
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_POLYGON_MODE_EXT -
If the
extendedDynamicState3RasterizationSamples
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT -
If the
extendedDynamicState3SampleMask
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_SAMPLE_MASK_EXT -
If the
extendedDynamicState3AlphaToCoverageEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT -
If the
extendedDynamicState3AlphaToOneEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT -
If the
extendedDynamicState3LogicOpEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_LOGIC_OP_ENABLE_EXT -
If the
extendedDynamicState3ColorBlendEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT -
If the
extendedDynamicState3ColorBlendEquation
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT -
If the
extendedDynamicState3ColorWriteMask
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COLOR_WRITE_MASK_EXT -
If the
extendedDynamicState3RasterizationStream
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_RASTERIZATION_STREAM_EXT -
If the
extendedDynamicState3ConservativeRasterizationMode
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT -
If the
extendedDynamicState3ExtraPrimitiveOverestimationSize
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT - If the
pipeline requires
pre-rasterization shader state,
pDynamicStateincludesDYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT, andpDynamicStatedoes not includeDYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT,pRasterizationStatemust include aPipelineRasterizationConservativeStateCreateInfoEXTin itspNextchain -
If the
extendedDynamicState3DepthClipEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT -
If the
extendedDynamicState3SampleLocationsEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT -
If the
extendedDynamicState3ColorBlendAdvanced
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT -
If the
extendedDynamicState3ProvokingVertexMode
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT -
If the
extendedDynamicState3LineRasterizationMode
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT -
If the
extendedDynamicState3LineStippleEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT -
If the
extendedDynamicState3DepthClipNegativeOneToOne
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT -
If the
extendedDynamicState3ViewportWScalingEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV -
If the
extendedDynamicState3ViewportSwizzle
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_VIEWPORT_SWIZZLE_NV -
If the
extendedDynamicState3CoverageToColorEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV -
If the
extendedDynamicState3CoverageToColorLocation
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV -
If the
extendedDynamicState3CoverageModulationMode
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV -
If the
extendedDynamicState3CoverageModulationTableEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV -
If the
extendedDynamicState3CoverageModulationTable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV -
If the
extendedDynamicState3CoverageReductionMode
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV -
If the
extendedDynamicState3RepresentativeFragmentTestEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV -
If the
extendedDynamicState3ShadingRateImageEnable
feature is not enabled, there must be no element of the
pDynamicStatesmember ofpDynamicStateset toDYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT -
flagsmust not includePIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV - If the
multiviewPerViewViewports
feature is enabled,
renderpassis notNULL_HANDLE, the pipeline requires pre-rasterization shader state, and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_VIEWPORT_WITH_COUNT, then the index of the most significant bit in each element ofRenderPassMultiviewCreateInfo::pViewMasksmust be less thanpViewportState->viewportCount - If the
multiviewPerViewViewports
feature is enabled,
renderpassis notNULL_HANDLE, the pipeline requires pre-rasterization shader state, and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_SCISSOR_WITH_COUNT, then the index of the most significant bit in each element ofRenderPassMultiviewCreateInfo::pViewMasksmust be less thanpViewportState->scissorCount -
If the
multiviewPerViewViewports
feature is enabled,
renderpassisNULL_HANDLE, the pipeline requires pre-rasterization shader state, and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_VIEWPORT_WITH_COUNT, then the index of the most significant bit inPipelineRenderingCreateInfo::viewMaskmust be less thanpViewportState->viewportCount -
If the
multiviewPerViewViewports
feature is enabled,
renderpassisNULL_HANDLE, the pipeline requires pre-rasterization shader state, and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_SCISSOR_WITH_COUNT, then the index of the most significant bit inPipelineRenderingCreateInfo::viewMaskmust be less thanpViewportState->scissorCount - If
pStagesincludes a fragment shader stage,DYNAMIC_STATE_DEPTH_WRITE_ENABLEis not set inPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares theEarlyFragmentTestsexecution mode and usesOpDepthAttachmentReadEXT, thedepthWriteEnablemember ofPipelineDepthStencilStateCreateInfomust beFALSE - If
pStagesincludes a fragment shader stage,DYNAMIC_STATE_STENCIL_WRITE_MASKis not set inPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares theEarlyFragmentTestsexecution mode and usesOpStencilAttachmentReadEXT, the value ofStencilOpState::writeMaskfor bothfrontandbackinPipelineDepthStencilStateCreateInfomust be0 - If
renderPassisNULL_HANDLE, the pipeline requires fragment output state or fragment shader state, the pipeline enables sample shading,rasterizationSamplesis not dynamic, and thepNextchain includes aPipelineRenderingCreateInfostructure,rasterizationSamplesmust be a validSampleCountFlagBitsvalue that is set inimageCreateSampleCounts(as defined in Image Creation Limits) for every element ofdepthAttachmentFormat,stencilAttachmentFormatand thepColorAttachmentFormatsarray which is notFORMAT_UNDEFINED - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT, pre-rasterization shader state is specified either in a library or by the inclusion ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, and that state includes a vertex shader stage inpStages, the pipeline must define vertex input state - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT, and pre-rasterization shader state is not specified, the pipeline must define vertex input state - If
flagsdoes not includePIPELINE_CREATE_LIBRARY_BIT_KHR, pre-rasterization shader state is specified either in a library or by the inclusion ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, and that state includes a vertex shader stage inpStages, the pipeline must either define vertex input state or include that state in a linked pipeline library - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXTthe pipeline must define pre-rasterization shader state - If
flagsdoes not includePIPELINE_CREATE_LIBRARY_BIT_KHR, the pipeline must either define pre-rasterization shader state or include that state in a linked pipeline library - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, pre-rasterization shader state is specified either in a library or by the inclusion ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, and that state either includesDYNAMIC_STATE_RASTERIZER_DISCARD_ENABLEor haspRasterizationState->rasterizerDiscardEnableset toFALSE, the pipeline must define fragment shader state - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and pre-rasterization shader state is not specified, the pipeline must define fragment shader state - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, pre-rasterization shader state is specified either in a library or by the inclusion ofGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, and that state either includesDYNAMIC_STATE_RASTERIZER_DISCARD_ENABLEor haspRasterizationState->rasterizerDiscardEnableset toFALSE, the pipeline must define fragment output interface state - If
GraphicsPipelineLibraryCreateInfoEXT::flagsincludesGRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and pre-rasterization shader state is not specified, the pipeline must define fragment output interface state - If
flagsdoes not includePIPELINE_CREATE_LIBRARY_BIT_KHR, pre-rasterization shader state is specified either in a library or by the inclusion ofGRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, and that state either includesDYNAMIC_STATE_RASTERIZER_DISCARD_ENABLEor haspRasterizationState->rasterizerDiscardEnableset toFALSE, the pipeline must define fragment output interface state and fragment shader state or include those states in linked pipeline libraries - If
pDynamicState->pDynamicStatesdoes not includeDYNAMIC_STATE_COLOR_WRITE_MASK_EXT, and the format of any color attachment isFORMAT_E5B9G9R9_UFLOAT_PACK32, thecolorWriteMaskmember of the corresponding element ofpColorBlendState->pAttachmentsmust either include all ofCOLOR_COMPONENT_R_BIT,COLOR_COMPONENT_G_BIT, andCOLOR_COMPONENT_B_BIT, or none of them - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0,PipelineRenderingCreateInfo::viewMaskmust be0 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassisNULL_HANDLE,ExternalFormatANDROID::externalFormatis not0, andrasterizationSamplesis not dynamic,PipelineMultisampleStateCreateInfo::rasterizationSamplesmust be1 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0, andblendEnableis not dynamic, theblendEnablemember of each element ofpColorBlendState->pAttachmentsmust beFALSE - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0, andpDynamicState->pDynamicStatesdoes not includeDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.widthmust be1 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0, andpDynamicState->pDynamicStatesdoes not includeDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.heightmust be1 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
pre-rasterization shader state
and
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0, the last pre-rasterization shader stage must not statically use a variable with thePrimitiveShadingRateKHRbuilt-in - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0,PipelineRenderingCreateInfo::colorAttachmentCountmust be1 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment shader state
and
fragment output interface state,
renderPassisNULL_HANDLE, andExternalFormatANDROID::externalFormatis not0, the fragment shader must not declare theDepthReplacingorStencilRefReplacingEXTexecution modes - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassis notNULL_HANDLE,subpassincludes an external format resolve attachment, andrasterizationSamplesis not dynamic,PipelineMultisampleStateCreateInfo::rasterizationSamplesmust beSAMPLE_COUNT_1_BIT - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassis notNULL_HANDLE,subpassincludes an external format resolve attachment, andblendEnableis not dynamic, theblendEnablemember of each element ofpColorBlendState->pAttachmentsmust beFALSE - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassis notNULL_HANDLE,subpassincludes an external format resolve attachment, andpDynamicState->pDynamicStatesdoes not includeDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.widthmust be1 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPassis notNULL_HANDLE,subpassincludes an external format resolve attachment, andpDynamicState->pDynamicStatesdoes not includeDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.heightmust be1 - If
the
externalFormatResolve
feature is enabled, the pipeline requires
pre-rasterization shader state
and
fragment output interface state,
renderPassis notNULL_HANDLE, andsubpassincludes an external format resolve attachment, the last pre-rasterization shader stage must not statically use a variable with thePrimitiveShadingRateKHRbuilt-in - If the pipeline
is being created with
fragment shader state
and
fragment output state,
the value of
renderPassisNULL_HANDLE, andRenderingInputAttachmentIndexInfois included,RenderingInputAttachmentIndexInfo::colorAttachmentCountmust be equal toPipelineRenderingCreateInfo::colorAttachmentCount - If the pipeline
is being created with
fragment shader state
and
fragment output state,
the value of
renderPassisNULL_HANDLE, andRenderingInputAttachmentIndexInfois not included, the fragment shader must not contain any input attachments with aInputAttachmentIndexgreater than or equal toPipelineRenderingCreateInfo::colorAttachmentCount - If the pipeline
is being created with
fragment output state,
and the value of
renderPassisNULL_HANDLE,RenderingAttachmentLocationInfo::colorAttachmentCountmust be equal toPipelineRenderingCreateInfo::colorAttachmentCount - If
PipelineCreateFlags2CreateInfoKHR::flagsincludesPIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all libraries linked to this pipeline must also have that flag set - If
PipelineCreateFlags2CreateInfoKHR::flagsdoes not includePIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, all libraries linked to this pipeline must also not have that flag set - If
flagsincludesPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, all libraries linked to this pipeline must also have that flag set - If
flagsdoes not includePIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, all libraries linked to this pipeline must also not have that flag set - If
flagsincludesPIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT, all libraries linked to this pipeline must also have that flag set - If
flagsdoes not includePIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT, all libraries linked to this pipeline must also not have that flag set - If
flagsincludesPIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT, all libraries linked to this pipeline must also have that flag set - If
flagsdoes not includePIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT, all libraries linked to this pipeline must also not have that flag set
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofAttachmentSampleCountInfoAMD,CustomResolveCreateInfoEXT,ExternalFormatANDROID, VkExternalFormatOHOS,GraphicsPipelineLibraryCreateInfoEXT,GraphicsPipelineShaderGroupsCreateInfoNV,MultiviewPerViewAttributesInfoNVX,PipelineBinaryInfoKHR,PipelineCompilerControlCreateInfoAMD,PipelineCreateFlags2CreateInfo,PipelineCreationFeedbackCreateInfo,PipelineDiscardRectangleStateCreateInfoEXT,PipelineFragmentDensityMapLayeredCreateInfoVALVE,PipelineFragmentShadingRateEnumStateCreateInfoNV,PipelineFragmentShadingRateStateCreateInfoKHR,PipelineLibraryCreateInfoKHR,PipelineRenderingCreateInfo,PipelineRepresentativeFragmentTestStateCreateInfoNV,Promoted_From_VK_EXT_pipeline_robustnessAdditionalFunctionality.PipelineRobustnessCreateInfo',RenderingAttachmentLocationInfo, orRenderingInputAttachmentIndexInfo - The
sTypevalue of each structure in thepNextchain must be unique - If
pDynamicStateis notNULL,pDynamicStatemust be a valid pointer to a validPipelineDynamicStateCreateInfostructure - Each of
basePipelineHandle,layout, andrenderPassthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
VK_VERSION_1_0,
Pipeline, PipelineColorBlendStateCreateInfo,
PipelineCreateFlags,
PipelineDepthStencilStateCreateInfo, PipelineDynamicStateCreateInfo,
PipelineInputAssemblyStateCreateInfo,
PipelineLayout,
PipelineMultisampleStateCreateInfo,
PipelineRasterizationStateCreateInfo,
PipelineShaderStageCreateInfo,
PipelineTessellationStateCreateInfo,
PipelineVertexInputStateCreateInfo, PipelineViewportStateCreateInfo,
RenderPass,
StructureType,
createGraphicsPipelines
Constructors
| GraphicsPipelineCreateInfo | |
Fields
| |
Instances
newtype PipelineDynamicStateCreateFlags Source #
VkPipelineDynamicStateCreateFlags - Reserved for future use
Description
PipelineDynamicStateCreateFlags is a bitmask type for setting a mask,
but is currently reserved for future use.
See Also
Constructors
| PipelineDynamicStateCreateFlags Flags |
Instances
newtype PipelineMultisampleStateCreateFlags Source #
VkPipelineMultisampleStateCreateFlags - Reserved for future use
Description
PipelineMultisampleStateCreateFlags is a bitmask type for setting a
mask, but is currently reserved for future use.
See Also
Constructors
| PipelineMultisampleStateCreateFlags Flags |
Instances
newtype PipelineRasterizationStateCreateFlags Source #
VkPipelineRasterizationStateCreateFlags - Reserved for future use
Description
PipelineRasterizationStateCreateFlags is a bitmask type for setting a
mask, but is currently reserved for future use.
See Also
Constructors
| PipelineRasterizationStateCreateFlags Flags |
Instances
newtype PipelineViewportStateCreateFlags Source #
VkPipelineViewportStateCreateFlags - Reserved for future use
Description
PipelineViewportStateCreateFlags is a bitmask type for setting a mask,
but is currently reserved for future use.
See Also
Constructors
| PipelineViewportStateCreateFlags Flags |
Instances
newtype PipelineTessellationStateCreateFlags Source #
VkPipelineTessellationStateCreateFlags - Reserved for future use
Description
PipelineTessellationStateCreateFlags is a bitmask type for setting a
mask, but is currently reserved for future use.
See Also
Constructors
| PipelineTessellationStateCreateFlags Flags |
Instances
newtype PipelineInputAssemblyStateCreateFlags Source #
VkPipelineInputAssemblyStateCreateFlags - Reserved for future use
Description
PipelineInputAssemblyStateCreateFlags is a bitmask type for setting a
mask, but is currently reserved for future use.
See Also
Constructors
| PipelineInputAssemblyStateCreateFlags Flags |
Instances
newtype PipelineVertexInputStateCreateFlags Source #
VkPipelineVertexInputStateCreateFlags - Reserved for future use
Description
PipelineVertexInputStateCreateFlags is a bitmask type for setting a
mask, but is currently reserved for future use.
See Also
Constructors
| PipelineVertexInputStateCreateFlags Flags |
Instances
newtype PrimitiveTopology Source #
VkPrimitiveTopology - Supported primitive topologies
Description
PRIMITIVE_TOPOLOGY_POINT_LISTspecifies a series of separate point primitives.
PRIMITIVE_TOPOLOGY_LINE_LISTspecifies a series of separate line primitives.PRIMITIVE_TOPOLOGY_LINE_STRIPspecifies a series of connected line primitives with consecutive lines sharing a vertex.PRIMITIVE_TOPOLOGY_TRIANGLE_LISTspecifies a series of separate triangle primitives.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIPspecifies a series of connected triangle primitives with consecutive triangles sharing an edge.PRIMITIVE_TOPOLOGY_TRIANGLE_FANspecifies a series of connected triangle primitives with all triangles sharing a common vertex. If theVK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::triangleFansisFALSE, then triangle fans are not supported by the implementation, andPRIMITIVE_TOPOLOGY_TRIANGLE_FANmust not be used.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYspecifies a series of separate line primitives with adjacency.PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCYspecifies a series of connected line primitives with adjacency, with consecutive primitives sharing three vertices.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYspecifies a series of separate triangle primitives with adjacency.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCYspecifies connected triangle primitives with adjacency, with consecutive triangles sharing an edge.PRIMITIVE_TOPOLOGY_PATCH_LISTspecifies separate patch primitives.
Each primitive topology, and its construction from a list of vertices, is described in detail below with a supporting diagram, according to the following key:
| Vertex | A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only. | |
| Vertex Number | Sequence position of a vertex within the provided vertex data. | |
| Provoking Vertex | Provoking vertex within the main primitive. The tail is angled towards the relevant primitive. Used in flat shading. | |
| Primitive Edge | An edge connecting the points of a main primitive. | |
| Adjacency Edge | Points connected by these lines do not contribute to a main primitive, and are only accessible in a geometry shader. | |
| Winding Order | The relative order in which vertices are defined within a primitive, used in the facing determination. This ordering has no specific start or end point. |
The diagrams are supported with mathematical definitions where the vertices (v) and primitives (p) are numbered starting from 0; v0 is the first vertex in the provided data and p0 is the first primitive in the set of primitives defined by the vertices and topology.
See Also
VK_VERSION_1_0,
PipelineInputAssemblyStateCreateInfo,
cmdSetPrimitiveTopology,
cmdSetPrimitiveTopology
Constructors
| PrimitiveTopology Int32 |
Bundled Patterns
Instances
VkCompareOp - Comparison operator for depth, stencil, and sampler operations
Description
COMPARE_OP_NEVERspecifies that the comparison always evaluates false.
COMPARE_OP_LESSspecifies that the comparison evaluates reference < test.COMPARE_OP_EQUALspecifies that the comparison evaluates reference = test.COMPARE_OP_LESS_OR_EQUALspecifies that the comparison evaluates reference ≤ test.COMPARE_OP_GREATERspecifies that the comparison evaluates reference > test.COMPARE_OP_NOT_EQUALspecifies that the comparison evaluates reference ≠ test.COMPARE_OP_GREATER_OR_EQUALspecifies that the comparison evaluates reference ≥ test.COMPARE_OP_ALWAYSspecifies that the comparison always evaluates true.
Comparison operators are used for:
- The
Depth Compare Operation
operator for a sampler, specified by
SamplerCreateInfo::compareOp. - The stencil comparison operator for the
stencil test,
specified by
cmdSetStencilOp::compareOporStencilOpState::compareOp. - The
Depth Comparison
operator for the
depth test,
specified by
cmdSetDepthCompareOp::depthCompareOporPipelineDepthStencilStateCreateInfo::depthCompareOp.
Each such use describes how the reference and test values for that comparison are determined.
See Also
VK_VERSION_1_0,
PipelineDepthStencilStateCreateInfo,
SamplerCreateInfo,
StencilOpState,
cmdSetDepthCompareOp,
cmdSetDepthCompareOp,
cmdSetStencilOp,
cmdSetStencilOp
Bundled Patterns
| pattern COMPARE_OP_ALWAYS :: CompareOp | |
| pattern COMPARE_OP_EQUAL :: CompareOp | |
| pattern COMPARE_OP_GREATER :: CompareOp | |
| pattern COMPARE_OP_GREATER_OR_EQUAL :: CompareOp | |
| pattern COMPARE_OP_LESS :: CompareOp | |
| pattern COMPARE_OP_LESS_OR_EQUAL :: CompareOp | |
| pattern COMPARE_OP_NEVER :: CompareOp | |
| pattern COMPARE_OP_NOT_EQUAL :: CompareOp |
Instances
| Eq CompareOp Source # | |
| Ord CompareOp Source # | |
| Storable CompareOp Source # | |
Defined in Vulkan.Core10.Enums.CompareOp | |
| Read CompareOp Source # | |
| Show CompareOp Source # | |
| Zero CompareOp Source # | |
Defined in Vulkan.Core10.Enums.CompareOp | |
newtype PolygonMode Source #
VkPolygonMode - Control polygon rasterization mode
Description
POLYGON_MODE_POINTspecifies that polygon vertices are drawn as points.
POLYGON_MODE_LINEspecifies that polygon edges are drawn as line segments.POLYGON_MODE_FILLspecifies that polygons are rendered using the polygon rasterization rules in this section.POLYGON_MODE_FILL_RECTANGLE_NVspecifies 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
POLYGON_MODE_FILL_RECTANGLE_NVmode 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
POLYGON_MODE_FILL_RECTANGLE_NVmode 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.
If
PhysicalDeviceMaintenance5Properties::polygonModePointSize
is TRUE, the point size of the final
rasterization of polygons is taken from PointSize when
polygon mode
is POLYGON_MODE_POINT.
Otherwise, if
PhysicalDeviceMaintenance5Properties::polygonModePointSize
is FALSE, the point size of the final
rasterization of polygons is 1.0 when
polygon mode
is POLYGON_MODE_POINT.
See Also
VK_VERSION_1_0,
PipelineRasterizationStateCreateInfo,
cmdSetPolygonModeEXT
Constructors
| PolygonMode Int32 |
Bundled Patterns
| pattern POLYGON_MODE_FILL :: PolygonMode | |
| pattern POLYGON_MODE_FILL_RECTANGLE_NV :: PolygonMode | |
| pattern POLYGON_MODE_LINE :: PolygonMode | |
| pattern POLYGON_MODE_POINT :: PolygonMode |
Instances
VkFrontFace - Interpret polygon front-facing orientation
Description
FRONT_FACE_COUNTER_CLOCKWISEspecifies that a triangle with positive area is considered front-facing.
FRONT_FACE_CLOCKWISEspecifies 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
VK_VERSION_1_0,
PipelineRasterizationStateCreateInfo,
cmdSetFrontFace,
cmdSetFrontFace
Bundled Patterns
| pattern FRONT_FACE_CLOCKWISE :: FrontFace | |
| pattern FRONT_FACE_COUNTER_CLOCKWISE :: FrontFace |
Instances
| Eq FrontFace Source # | |
| Ord FrontFace Source # | |
| Storable FrontFace Source # | |
Defined in Vulkan.Core10.Enums.FrontFace | |
| Read FrontFace Source # | |
| Show FrontFace Source # | |
| Zero FrontFace Source # | |
Defined in Vulkan.Core10.Enums.FrontFace | |
newtype BlendFactor Source #
VkBlendFactor - Framebuffer blending factors
Description
The semantics of the enum values are described in the table below:
BlendFactor
| RGB Blend Factors (Sr,Sg,Sb) or (Dr,Dg,Db) | Alpha Blend Factor (Sa or Da) |
|---|---|---|
BLEND_FACTOR_ZERO | (0,0,0) | 0 |
BLEND_FACTOR_ONE | (1,1,1) | 1 |
BLEND_FACTOR_SRC_COLOR | (Rs0,Gs0,Bs0) | As0 |
BLEND_FACTOR_ONE_MINUS_SRC_COLOR | (1-Rs0,1-Gs0,1-Bs0) | 1-As0 |
BLEND_FACTOR_DST_COLOR | (Rd,Gd,Bd) | Ad |
BLEND_FACTOR_ONE_MINUS_DST_COLOR | (1-Rd,1-Gd,1-Bd) | 1-Ad |
BLEND_FACTOR_SRC_ALPHA | (As0,As0,As0) | As0 |
BLEND_FACTOR_ONE_MINUS_SRC_ALPHA | (1-As0,1-As0,1-As0) | 1-As0 |
BLEND_FACTOR_DST_ALPHA | (Ad,Ad,Ad) | Ad |
BLEND_FACTOR_ONE_MINUS_DST_ALPHA | (1-Ad,1-Ad,1-Ad) | 1-Ad |
BLEND_FACTOR_CONSTANT_COLOR | (Rc,Gc,Bc) | Ac |
BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR | (1-Rc,1-Gc,1-Bc) | 1-Ac |
BLEND_FACTOR_CONSTANT_ALPHA | (Ac,Ac,Ac) | Ac |
BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA | (1-Ac,1-Ac,1-Ac) | 1-Ac |
BLEND_FACTOR_SRC_ALPHA_SATURATE
| (f,f,f); f = min(As0,1-Ad) | 1 |
BLEND_FACTOR_SRC1_COLOR | (Rs1,Gs1,Bs1) | As1 |
BLEND_FACTOR_ONE_MINUS_SRC1_COLOR | (1-Rs1,1-Gs1,1-Bs1) | 1-As1 |
BLEND_FACTOR_SRC1_ALPHA | (As1,As1,As1) | As1 |
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
VK_VERSION_1_0,
ColorBlendEquationEXT,
PipelineColorBlendAttachmentState
Constructors
| BlendFactor Int32 |
Bundled Patterns
| pattern BLEND_FACTOR_CONSTANT_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_CONSTANT_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_DST_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_DST_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_ONE :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_DST_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_DST_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_SRC1_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_SRC_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_ONE_MINUS_SRC_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_SRC1_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_SRC1_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_SRC_ALPHA :: BlendFactor | |
| pattern BLEND_FACTOR_SRC_ALPHA_SATURATE :: BlendFactor | |
| pattern BLEND_FACTOR_SRC_COLOR :: BlendFactor | |
| pattern BLEND_FACTOR_ZERO :: BlendFactor |
Instances
VkBlendOp - Framebuffer blending operations
Description
The semantics of the basic blend operations are described in the table below:
BlendOp | RGB Components | Alpha Component |
|---|---|---|
BLEND_OP_ADD
| R = Rs0 × Sr + Rd × Dr G = Gs0 × Sg + Gd × Dg B = Bs0 × Sb + Bd × Db | A = As0 × Sa + Ad × Da |
BLEND_OP_SUBTRACT
| R = Rs0 × Sr - Rd × Dr G = Gs0 × Sg - Gd × Dg B = Bs0 × Sb - Bd × Db | A = As0 × Sa - Ad × Da |
BLEND_OP_REVERSE_SUBTRACT
| R = Rd × Dr - Rs0 × Sr G = Gd × Dg - Gs0 × Sg B = Bd × Db - Bs0 × Sb | A = Ad × Da - As0 × Sa |
BLEND_OP_MIN
| R = min(Rs0,Rd) G = min(Gs0,Gd) B = min(Bs0,Bd) | A = min(As0,Ad) |
BLEND_OP_MAX
| R = max(Rs0,Rd) G = max(Gs0,Gd) B = max(Bs0,Bd) | A = max(As0,Ad) |
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
VK_VERSION_1_0,
ColorBlendAdvancedEXT,
ColorBlendEquationEXT,
PipelineColorBlendAttachmentState
Bundled Patterns
Instances
| Eq BlendOp Source # | |
| Ord BlendOp Source # | |
Defined in Vulkan.Core10.Enums.BlendOp | |
| Storable BlendOp Source # | |
| Read BlendOp Source # | |
| Show BlendOp Source # | |
| Zero BlendOp Source # | |
Defined in Vulkan.Core10.Enums.BlendOp | |
VkStencilOp - Stencil comparison function
Description
STENCIL_OP_KEEPkeeps the current value.
STENCIL_OP_ZEROsets the value to 0.STENCIL_OP_REPLACEsets the value toreference.STENCIL_OP_INCREMENT_AND_CLAMPincrements the current value and clamps to the maximum representable unsigned value.STENCIL_OP_DECREMENT_AND_CLAMPdecrements the current value and clamps to 0.STENCIL_OP_INVERTbitwise-inverts the current value.STENCIL_OP_INCREMENT_AND_WRAPincrements the current value and wraps to 0 when the maximum value would have been exceeded.STENCIL_OP_DECREMENT_AND_WRAPdecrements 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.
See Also
VK_VERSION_1_0,
StencilOpState,
cmdSetStencilOp,
cmdSetStencilOp
Bundled Patterns
| pattern STENCIL_OP_DECREMENT_AND_CLAMP :: StencilOp | |
| pattern STENCIL_OP_DECREMENT_AND_WRAP :: StencilOp | |
| pattern STENCIL_OP_INCREMENT_AND_CLAMP :: StencilOp | |
| pattern STENCIL_OP_INCREMENT_AND_WRAP :: StencilOp | |
| pattern STENCIL_OP_INVERT :: StencilOp | |
| pattern STENCIL_OP_KEEP :: StencilOp | |
| pattern STENCIL_OP_REPLACE :: StencilOp | |
| pattern STENCIL_OP_ZERO :: StencilOp |
Instances
| Eq StencilOp Source # | |
| Ord StencilOp Source # | |
| Storable StencilOp Source # | |
Defined in Vulkan.Core10.Enums.StencilOp | |
| Read StencilOp Source # | |
| Show StencilOp Source # | |
| Zero StencilOp Source # | |
Defined in Vulkan.Core10.Enums.StencilOp | |
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 |
|---|---|
LOGIC_OP_CLEAR | 0 |
LOGIC_OP_AND | s ∧ d |
LOGIC_OP_AND_REVERSE | s ∧ ¬ d |
LOGIC_OP_COPY | s |
LOGIC_OP_AND_INVERTED | ¬ s ∧ d |
LOGIC_OP_NO_OP | d |
LOGIC_OP_XOR | s ⊕ d |
LOGIC_OP_OR | s ∨ d |
LOGIC_OP_NOR | ¬ (s ∨ d) |
LOGIC_OP_EQUIVALENT | ¬ (s ⊕ d) |
LOGIC_OP_INVERT | ¬ d |
LOGIC_OP_OR_REVERSE | s ∨ ¬ d |
LOGIC_OP_COPY_INVERTED | ¬ s |
LOGIC_OP_OR_INVERTED | ¬ s ∨ d |
LOGIC_OP_NAND | ¬ (s ∧ d) |
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.
See Also
VK_VERSION_1_0,
PipelineColorBlendStateCreateInfo,
cmdSetLogicOpEXT
Bundled Patterns
| pattern LOGIC_OP_AND :: LogicOp | |
| pattern LOGIC_OP_AND_INVERTED :: LogicOp | |
| pattern LOGIC_OP_AND_REVERSE :: LogicOp | |
| pattern LOGIC_OP_CLEAR :: LogicOp | |
| pattern LOGIC_OP_COPY :: LogicOp | |
| pattern LOGIC_OP_COPY_INVERTED :: LogicOp | |
| pattern LOGIC_OP_EQUIVALENT :: LogicOp | |
| pattern LOGIC_OP_INVERT :: LogicOp | |
| pattern LOGIC_OP_NAND :: LogicOp | |
| pattern LOGIC_OP_NOR :: LogicOp | |
| pattern LOGIC_OP_NO_OP :: LogicOp | |
| pattern LOGIC_OP_OR :: LogicOp | |
| pattern LOGIC_OP_OR_INVERTED :: LogicOp | |
| pattern LOGIC_OP_OR_REVERSE :: LogicOp | |
| pattern LOGIC_OP_SET :: LogicOp | |
| pattern LOGIC_OP_XOR :: LogicOp |
Instances
| Eq LogicOp Source # | |
| Ord LogicOp Source # | |
Defined in Vulkan.Core10.Enums.LogicOp | |
| Storable LogicOp Source # | |
| Read LogicOp Source # | |
| Show LogicOp Source # | |
| Zero LogicOp Source # | |
Defined in Vulkan.Core10.Enums.LogicOp | |
newtype VertexInputRate Source #
VkVertexInputRate - Specify rate at which vertex attributes are pulled from buffers
Description
VERTEX_INPUT_RATE_VERTEXspecifies that vertex attribute addressing is a function of the vertex index.
VERTEX_INPUT_RATE_INSTANCEspecifies that vertex attribute addressing is a function of the instance index.
See Also
VK_VERSION_1_0,
VertexInputBindingDescription,
VertexInputBindingDescription2EXT
Constructors
| VertexInputRate Int32 |
Bundled Patterns
| pattern VERTEX_INPUT_RATE_INSTANCE :: VertexInputRate | |
| pattern VERTEX_INPUT_RATE_VERTEX :: VertexInputRate |
Instances
newtype DynamicState Source #
VkDynamicState - Indicate which dynamic state is taken from dynamic state commands
Description
DYNAMIC_STATE_VIEWPORTspecifies that thepViewportsstate inPipelineViewportStateCreateInfowill be ignored and must be set dynamically withcmdSetViewportbefore any drawing commands. The number of viewports used by a pipeline is still specified by theviewportCountmember ofPipelineViewportStateCreateInfo.
DYNAMIC_STATE_SCISSORspecifies that thepScissorsstate inPipelineViewportStateCreateInfowill be ignored and must be set dynamically withcmdSetScissorbefore any drawing commands. The number of scissor rectangles used by a pipeline is still specified by thescissorCountmember ofPipelineViewportStateCreateInfo.DYNAMIC_STATE_LINE_WIDTHspecifies that thelineWidthstate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetLineWidthbefore any drawing commands that generate line primitives for the rasterizer.DYNAMIC_STATE_DEPTH_BIASspecifies that any instance ofDepthBiasRepresentationInfoEXTincluded in thepNextchain ofPipelineRasterizationStateCreateInfoas well as thedepthBiasConstantFactor,depthBiasClampanddepthBiasSlopeFactorstates inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthBiasorcmdSetDepthBias2EXTbefore any draws are performed with depth bias enabled.DYNAMIC_STATE_BLEND_CONSTANTSspecifies that theblendConstantsstate inPipelineColorBlendStateCreateInfowill be ignored and must be set dynamically withcmdSetBlendConstantsbefore any draws are performed with a pipeline state withPipelineColorBlendAttachmentStatememberblendEnableset toTRUEand any of the blend functions using a constant blend color.DYNAMIC_STATE_DEPTH_BOUNDSspecifies that theminDepthBoundsandmaxDepthBoundsstates ofPipelineDepthStencilStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthBoundsbefore any draws are performed with a pipeline state withPipelineDepthStencilStateCreateInfomemberdepthBoundsTestEnableset toTRUE.DYNAMIC_STATE_STENCIL_COMPARE_MASKspecifies that thecompareMaskstate inPipelineDepthStencilStateCreateInfofor bothfrontandbackwill be ignored and must be set dynamically withcmdSetStencilCompareMaskbefore any draws are performed with a pipeline state withPipelineDepthStencilStateCreateInfomemberstencilTestEnableset toTRUEDYNAMIC_STATE_STENCIL_WRITE_MASKspecifies that thewriteMaskstate inPipelineDepthStencilStateCreateInfofor bothfrontandbackwill be ignored and must be set dynamically withcmdSetStencilWriteMaskbefore any draws are performed with a pipeline state withPipelineDepthStencilStateCreateInfomemberstencilTestEnableset toTRUEDYNAMIC_STATE_STENCIL_REFERENCEspecifies that thereferencestate inPipelineDepthStencilStateCreateInfofor bothfrontandbackwill be ignored and must be set dynamically withcmdSetStencilReferencebefore any draws are performed with a pipeline state withPipelineDepthStencilStateCreateInfomemberstencilTestEnableset toTRUEDYNAMIC_STATE_VIEWPORT_W_SCALING_NVspecifies that thepViewportWScalingsstate inPipelineViewportWScalingStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetViewportWScalingNVbefore any draws are performed with a pipeline state withPipelineViewportWScalingStateCreateInfoNVmemberviewportScalingEnableset toTRUEDYNAMIC_STATE_DISCARD_RECTANGLE_EXTspecifies that thepDiscardRectanglesstate inPipelineDiscardRectangleStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetDiscardRectangleEXTbefore any draw or clear commands.DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXTspecifies that the presence of thePipelineDiscardRectangleStateCreateInfoEXTstructure in theGraphicsPipelineCreateInfochain with adiscardRectangleCountgreater than zero does not implicitly enable discard rectangles and they must be enabled dynamically withcmdSetDiscardRectangleEnableEXTbefore any draw commands. This is available on implementations that support at leastspecVersion2of theVK_EXT_discard_rectanglesextension.DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXTspecifies that thediscardRectangleModestate inPipelineDiscardRectangleStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetDiscardRectangleModeEXTbefore any draw commands. This is available on implementations that support at leastspecVersion2of theVK_EXT_discard_rectanglesextension.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTspecifies that thesampleLocationsInfostate inPipelineSampleLocationsStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetSampleLocationsEXTbefore any draw or clear commands. Enabling custom sample locations is still indicated by thesampleLocationsEnablemember ofPipelineSampleLocationsStateCreateInfoEXT.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NVspecifies that thepExclusiveScissorsstate inPipelineViewportExclusiveScissorStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetExclusiveScissorNVbefore any drawing commands.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NVspecifies that the exclusive scissors must be explicitly enabled withcmdSetExclusiveScissorEnableNVand theexclusiveScissorCountvalue inPipelineViewportExclusiveScissorStateCreateInfoNVwill not implicitly enable them. This is available on implementations that support at leastspecVersion2of theVK_NV_scissor_exclusiveextension.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVspecifies that thepShadingRatePalettesstate inPipelineViewportShadingRateImageStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetViewportShadingRatePaletteNVbefore any drawing commands.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NVspecifies that the coarse sample order state inPipelineViewportCoarseSampleOrderStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoarseSampleOrderNVbefore any drawing commands.DYNAMIC_STATE_LINE_STIPPLEspecifies that thelineStippleFactorandlineStipplePatternstate inPipelineRasterizationLineStateCreateInfowill be ignored and must be set dynamically withcmdSetLineStipplebefore any draws are performed with a pipeline state withPipelineRasterizationLineStateCreateInfomemberstippledLineEnableset toTRUE.DYNAMIC_STATE_CULL_MODEspecifies that thecullModestate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetCullModebefore any drawing commands.DYNAMIC_STATE_FRONT_FACEspecifies that thefrontFacestate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetFrontFacebefore any drawing commands.DYNAMIC_STATE_PRIMITIVE_TOPOLOGYspecifies that thetopologystate inPipelineInputAssemblyStateCreateInfoonly specifies the topology class, and the specific topology order and adjacency must be set dynamically withcmdSetPrimitiveTopologybefore any drawing commands.DYNAMIC_STATE_VIEWPORT_WITH_COUNTspecifies that theviewportCountandpViewportsstate inPipelineViewportStateCreateInfowill be ignored and must be set dynamically withcmdSetViewportWithCountbefore any draw call.DYNAMIC_STATE_SCISSOR_WITH_COUNTspecifies that thescissorCountandpScissorsstate inPipelineViewportStateCreateInfowill be ignored and must be set dynamically withcmdSetScissorWithCountbefore any draw call.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDEspecifies that thestridestate inVertexInputBindingDescriptionwill be ignored and must be set dynamically withcmdBindVertexBuffers2before any draw call.DYNAMIC_STATE_DEPTH_TEST_ENABLEspecifies that thedepthTestEnablestate inPipelineDepthStencilStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthTestEnablebefore any draw call.DYNAMIC_STATE_DEPTH_WRITE_ENABLEspecifies that thedepthWriteEnablestate inPipelineDepthStencilStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthWriteEnablebefore any draw call.DYNAMIC_STATE_DEPTH_COMPARE_OPspecifies that thedepthCompareOpstate inPipelineDepthStencilStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthCompareOpbefore any draw call.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLEspecifies that thedepthBoundsTestEnablestate inPipelineDepthStencilStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthBoundsTestEnablebefore any draw call.DYNAMIC_STATE_STENCIL_TEST_ENABLEspecifies that thestencilTestEnablestate inPipelineDepthStencilStateCreateInfowill be ignored and must be set dynamically withcmdSetStencilTestEnablebefore any draw call.DYNAMIC_STATE_STENCIL_OPspecifies that thefailOp,passOp,depthFailOp, andcompareOpstates inPipelineDepthStencilStateCreateInfofor bothfrontandbackwill be ignored and must be set dynamically withcmdSetStencilOpbefore any draws are performed with a pipeline state withPipelineDepthStencilStateCreateInfomemberstencilTestEnableset toTRUEDYNAMIC_STATE_PATCH_CONTROL_POINTS_EXTspecifies that thepatchControlPointsstate inPipelineTessellationStateCreateInfowill be ignored and must be set dynamically withcmdSetPatchControlPointsEXTbefore any drawing commands.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLEspecifies that therasterizerDiscardEnablestate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetRasterizerDiscardEnablebefore any drawing commands.DYNAMIC_STATE_DEPTH_BIAS_ENABLEspecifies that thedepthBiasEnablestate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthBiasEnablebefore any drawing commands.DYNAMIC_STATE_LOGIC_OP_EXTspecifies that thelogicOpstate inPipelineColorBlendStateCreateInfowill be ignored and must be set dynamically withcmdSetLogicOpEXTbefore any drawing commands.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLEspecifies that theprimitiveRestartEnablestate inPipelineInputAssemblyStateCreateInfowill be ignored and must be set dynamically withcmdSetPrimitiveRestartEnablebefore any drawing commands.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRspecifies that state inPipelineFragmentShadingRateStateCreateInfoKHRandPipelineFragmentShadingRateEnumStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetFragmentShadingRateKHRorcmdSetFragmentShadingRateEnumNVbefore any drawing commands.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHRspecifies that the default stack size computation for the pipeline will be ignored and must be set dynamically withcmdSetRayTracingPipelineStackSizeKHRbefore any ray tracing calls are performed.DYNAMIC_STATE_VERTEX_INPUT_EXTspecifies that thepVertexInputStatestate will be ignored and must be set dynamically withcmdSetVertexInputEXTbefore any drawing commandsDYNAMIC_STATE_COLOR_WRITE_ENABLE_EXTspecifies that thepColorWriteEnablesstate inPipelineColorWriteCreateInfoEXTwill be ignored and must be set dynamically withcmdSetColorWriteEnableEXTbefore any draw call.DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXTspecifies that thedomainOriginstate inPipelineTessellationDomainOriginStateCreateInfowill be ignored and must be set dynamically withcmdSetTessellationDomainOriginEXTbefore any draw call.DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXTspecifies that thedepthClampEnablestate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetDepthClampEnableEXTbefore any draw call.DYNAMIC_STATE_POLYGON_MODE_EXTspecifies that thepolygonModestate inPipelineRasterizationStateCreateInfowill be ignored and must be set dynamically withcmdSetPolygonModeEXTbefore any draw call.DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTspecifies that therasterizationSamplesstate inPipelineMultisampleStateCreateInfowill be ignored and must be set dynamically withcmdSetRasterizationSamplesEXTbefore any draw call.DYNAMIC_STATE_SAMPLE_MASK_EXTspecifies that thepSampleMaskstate inPipelineMultisampleStateCreateInfowill be ignored and must be set dynamically withcmdSetSampleMaskEXTbefore any draw call.DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTspecifies that thealphaToCoverageEnablestate inPipelineMultisampleStateCreateInfowill be ignored and must be set dynamically withcmdSetAlphaToCoverageEnableEXTbefore any draw call.DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXTspecifies that thealphaToOneEnablestate inPipelineMultisampleStateCreateInfowill be ignored and must be set dynamically withcmdSetAlphaToOneEnableEXTbefore any draw call.DYNAMIC_STATE_LOGIC_OP_ENABLE_EXTspecifies that thelogicOpEnablestate inPipelineColorBlendStateCreateInfowill be ignored and must be set dynamically withcmdSetLogicOpEnableEXTbefore any draw call.DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTspecifies that theblendEnablestate inPipelineColorBlendAttachmentStatewill be ignored and must be set dynamically withcmdSetColorBlendEnableEXTbefore any draw call.DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXTspecifies that thesrcColorBlendFactor,dstColorBlendFactor,colorBlendOp,srcAlphaBlendFactor,dstAlphaBlendFactor, andalphaBlendOpstates inPipelineColorBlendAttachmentStatewill be ignored and must be set dynamically withcmdSetColorBlendEquationEXTbefore any draw call.DYNAMIC_STATE_COLOR_WRITE_MASK_EXTspecifies that thecolorWriteMaskstate inPipelineColorBlendAttachmentStatewill be ignored and must be set dynamically withcmdSetColorWriteMaskEXTbefore any draw call.DYNAMIC_STATE_RASTERIZATION_STREAM_EXTspecifies that therasterizationStreamstate inPipelineRasterizationStateStreamCreateInfoEXTwill be ignored and must be set dynamically withcmdSetRasterizationStreamEXTbefore any draw call.DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXTspecifies that theconservativeRasterizationModestate inPipelineRasterizationConservativeStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetConservativeRasterizationModeEXTbefore any draw call.DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXTspecifies that theextraPrimitiveOverestimationSizestate inPipelineRasterizationConservativeStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetExtraPrimitiveOverestimationSizeEXTbefore any draw call.DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXTspecifies that thedepthClipEnablestate inPipelineRasterizationDepthClipStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetDepthClipEnableEXTbefore any draw call.DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTspecifies that thesampleLocationsEnablestate inPipelineSampleLocationsStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetSampleLocationsEnableEXTbefore any draw call.DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTspecifies that thecolorBlendOpstate inPipelineColorBlendAttachmentState, andsrcPremultiplied,dstPremultiplied, andblendOverlapstates inPipelineColorBlendAdvancedStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetColorBlendAdvancedEXTbefore any draw call.DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXTspecifies that theprovokingVertexModestate inPipelineRasterizationProvokingVertexStateCreateInfoEXTwill be ignored and must be set dynamically withcmdSetProvokingVertexModeEXTbefore any draw call.DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTspecifies that thelineRasterizationModestate inPipelineRasterizationLineStateCreateInfowill be ignored and must be set dynamically withcmdSetLineRasterizationModeEXTbefore any draw call.DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTspecifies that thestippledLineEnablestate inPipelineRasterizationLineStateCreateInfowill be ignored and must be set dynamically withcmdSetLineStippleEnableEXTbefore any draw call.DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXTspecifies that thenegativeOneToOnestate inPipelineViewportDepthClipControlCreateInfoEXTwill be ignored and must be set dynamically withcmdSetDepthClipNegativeOneToOneEXTbefore any draw call.DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXTspecifies that thedepthClampModeandpDepthClampRangestate inPipelineViewportDepthClampControlCreateInfoEXTwill be ignored and must be set dynamically withcmdSetDepthClampRangeEXTbefore any draw call.DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NVspecifies that theviewportWScalingEnablestate inPipelineViewportWScalingStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetViewportWScalingEnableNVbefore any draw call.DYNAMIC_STATE_VIEWPORT_SWIZZLE_NVspecifies that theviewportCount, andpViewportSwizzlesstates inPipelineViewportSwizzleStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetViewportSwizzleNVbefore any draw call.DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVspecifies that thecoverageToColorEnablestate inPipelineCoverageToColorStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoverageToColorEnableNVbefore any draw call.DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NVspecifies that thecoverageToColorLocationstate inPipelineCoverageToColorStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoverageToColorLocationNVbefore any draw call.DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NVspecifies that thecoverageModulationModestate inPipelineCoverageModulationStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoverageModulationModeNVbefore any draw call.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NVspecifies that thecoverageModulationTableEnablestate inPipelineCoverageModulationStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoverageModulationTableEnableNVbefore any draw call.DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NVspecifies that thecoverageModulationTableCount, andpCoverageModulationTablestates inPipelineCoverageModulationStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoverageModulationTableNVbefore any draw call.DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NVspecifies that theshadingRateImageEnablestate inPipelineViewportShadingRateImageStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetShadingRateImageEnableNVbefore any draw call.DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NVspecifies that therepresentativeFragmentTestEnablestate inPipelineRepresentativeFragmentTestStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetRepresentativeFragmentTestEnableNVbefore any draw call.DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NVspecifies that thecoverageReductionModestate inPipelineCoverageReductionStateCreateInfoNVwill be ignored and must be set dynamically withcmdSetCoverageReductionModeNVbefore any draw call.DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXTspecifies that thePIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTandPIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTflags will be ignored and must be set dynamically withcmdSetAttachmentFeedbackLoopEnableEXTbefore any draw call.
See Also
Constructors
| DynamicState Int32 |
Bundled Patterns
Instances
newtype CullModeFlagBits Source #
VkCullModeFlagBits - Bitmask controlling triangle culling
Description
CULL_MODE_NONEspecifies that no triangles are discarded
CULL_MODE_FRONT_BITspecifies that front-facing triangles are discardedCULL_MODE_BACK_BITspecifies that back-facing triangles are discardedCULL_MODE_FRONT_AND_BACKspecifies that all triangles are discarded.
Following culling, fragments are produced for any triangles which have not been discarded.
See Also
Constructors
| CullModeFlagBits Flags |
Bundled Patterns
| pattern CULL_MODE_BACK_BIT :: CullModeFlagBits | |
| pattern CULL_MODE_FRONT_AND_BACK :: CullModeFlagBits | |
| pattern CULL_MODE_FRONT_BIT :: CullModeFlagBits | |
| pattern CULL_MODE_NONE :: CullModeFlagBits |
Instances
type CullModeFlags = CullModeFlagBits Source #
newtype ColorComponentFlagBits Source #
VkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer
Description
COLOR_COMPONENT_R_BITspecifies that the R value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.
COLOR_COMPONENT_G_BITspecifies that the G value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.COLOR_COMPONENT_B_BITspecifies that the B value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.COLOR_COMPONENT_A_BITspecifies 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.
The color write mask operation is applied only if Color Write Enable is enabled for the respective attachment. Otherwise the color write mask is ignored and writes to all components of the attachment are disabled.
See Also
Constructors
| ColorComponentFlagBits Flags |
Bundled Patterns
| pattern COLOR_COMPONENT_A_BIT :: ColorComponentFlagBits | |
| pattern COLOR_COMPONENT_B_BIT :: ColorComponentFlagBits | |
| pattern COLOR_COMPONENT_G_BIT :: ColorComponentFlagBits | |
| pattern COLOR_COMPONENT_R_BIT :: ColorComponentFlagBits |
Instances
newtype PipelineColorBlendStateCreateFlagBits Source #
VkPipelineColorBlendStateCreateFlagBits - Bitmask specifying additional parameters of an image
Description
PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXTspecifies that access to color and input attachments will have implicit framebuffer-local memory dependencies, allowing applications to express custom blending operations in a fragment shader.
When
PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT
is included in a pipeline, it forms a framebuffer-local memory
dependency for each fragment generated by draw commands for that
pipeline with the following scopes:
- The first
synchronization scope
includes the
PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BITpipeline stage executed by all previous fragments (as defined by primitive order) in the corresponding framebuffer regions including those generated by the same draw command. - The second
synchronization scope
includes the
PIPELINE_STAGE_FRAGMENT_SHADER_BITpipeline stage executed by the generated fragment. - The first access scope includes all writes to color attachments.
- The second access scope includes all reads from input attachments.
See Also
VK_EXT_rasterization_order_attachment_access,
PipelineColorBlendStateCreateFlags
Constructors
| PipelineColorBlendStateCreateFlagBits Flags |
Bundled Patterns
| pattern PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT :: PipelineColorBlendStateCreateFlagBits |
Instances
newtype PipelineDepthStencilStateCreateFlagBits Source #
VkPipelineDepthStencilStateCreateFlagBits - Bitmask specifying additional depth/stencil state information.
Description
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXTspecifies that access to the depth aspects of depth/stencil and input attachments will have implicit framebuffer-local memory dependencies.
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXTspecifies that access to the stencil aspects of depth/stencil and input attachments will have implicit framebuffer-local memory dependencies.
When
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
is included in a pipeline, it forms a framebuffer-local memory
dependency for each fragment generated by draw commands for that
pipeline with the following scopes:
- The first
synchronization scope
includes
PIPELINE_STAGE_FRAGMENT_SHADER_BITandPIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITpipeline stages executed by all previous fragments (as defined by primitive order) in the corresponding framebuffer regions including those generated by the same draw command. - The second
synchronization scope
includes
PIPELINE_STAGE_FRAGMENT_SHADER_BITstage executed by the generated fragment. - The first access scope includes all writes to the depth aspect of depth/stencil attachments.
- The second access scope includes all reads from the depth aspect of input attachments.
When
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
is included in a pipeline, it forms a framebuffer-local memory
dependency for each fragment generated by draw commands for that
pipeline with the following scopes:
- The first
synchronization scope
includes
PIPELINE_STAGE_FRAGMENT_SHADER_BITPIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITpipeline stages executed by all previous fragments (as defined by primitive order) in the corresponding framebuffer regions including those generated by the same draw command. - The second
synchronization scope
includes
PIPELINE_STAGE_FRAGMENT_SHADER_BITandPIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITpipeline stages executed by the generated fragment. - The first access scope includes all writes to the stencil aspect of depth/stencil attachments.
- The second access scope includes all reads from the stencil aspect of input attachments.
See Also
VK_EXT_rasterization_order_attachment_access,
PipelineDepthStencilStateCreateFlags
Constructors
| PipelineDepthStencilStateCreateFlagBits Flags |
Bundled Patterns
Instances
type SampleMask = Word32 Source #
VkSampleMask - Mask of sample coverage information
See Also
VK_VERSION_1_0,
PipelineMultisampleStateCreateInfo,
cmdSetSampleMaskEXT