VkGraphicsPipelineCreateInfo - Structure specifying parameters of a
newly created graphics pipeline
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.
If flags contains
the
PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex is -1, basePipelineHandle must be
a valid graphics Pipeline handle
If flags contains
the
PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle is
NULL_HANDLE, basePipelineIndex must
be a valid index into the calling command’s pCreateInfos parameter
If flags contains
the
PIPELINE_CREATE_DERIVATIVE_BIT
flag, basePipelineIndex must be -1 or basePipelineHandle
must be NULL_HANDLE
If a push constant
block is declared in a shader and layout is not
NULL_HANDLE, a push constant range in
layout must match the shader stage
If a push constant
block is declared in a shader and layout is not
NULL_HANDLE, the block must be
contained inside the push constant range in layout that matches
the stage
If a
resource variable
is declared in a shader and layout is not
NULL_HANDLE, the corresponding
descriptor set in layout must match the shader stage
If a
resource variable
is declared in a shader, layout is not
NULL_HANDLE, and the descriptor type is
not
DESCRIPTOR_TYPE_MUTABLE_EXT,
the corresponding descriptor set in layout must match the
descriptor type
If a
resource variable
is declared in a shader as an array and layout is not
NULL_HANDLE, the corresponding
descriptor binding used to create layout must have a
descriptorCount that 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, flags must not contain
PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT
If the
pipelineCreationCacheControl
feature is not enabled, flags must not include
PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
nor
PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
If
the
pipelineProtectedAccess
feature is not enabled, flags must not include
PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT
nor
PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT
flags must not
include both
PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT
and
PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT
If
PipelineCreateFlags2CreateInfoKHR::flags
includes
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
layout must be NULL_HANDLE
If
PipelineCreateFlags2CreateInfoKHR::flags
includes
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
all shader variables in the
shader resource interface
with a DescriptorSet and Binding
decoration must have a mapping declared in
ShaderDescriptorSetAndBindingMappingInfoEXT::pMappings
If the pipeline
requires
pre-rasterization shader state
the stage member of one element of pStages must be
SHADER_STAGE_VERTEX_BIT or
SHADER_STAGE_MESH_BIT_EXT
If the pipeline
requires
pre-rasterization shader state
the geometric shader stages provided in pStages must be either
from the mesh shading pipeline (stage is
SHADER_STAGE_TASK_BIT_EXT
or
SHADER_STAGE_MESH_BIT_EXT)
or from the primitive shading pipeline (stage is
SHADER_STAGE_VERTEX_BIT,
SHADER_STAGE_TESSELLATION_CONTROL_BIT,
SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
or
SHADER_STAGE_GEOMETRY_BIT)
If the pipeline
requires
pre-rasterization shader state
and pStages contains both
SHADER_STAGE_TASK_BIT_EXT
and
SHADER_STAGE_MESH_BIT_EXT,
then the mesh shader’s entry point must not declare a variable
with a DrawIndex BuiltIn decoration
The shader stages
for
SHADER_STAGE_TASK_BIT_EXT
or
SHADER_STAGE_MESH_BIT_EXT
must use either the TaskNV and MeshNV Execution Model or
the TaskEXT and MeshEXT Execution Model, but must not use
both
If the pipeline
requires
pre-rasterization shader state
and pStages includes a tessellation control shader stage, it
must include a tessellation evaluation shader stage
If the pipeline
requires
pre-rasterization shader state
and pStages includes a tessellation evaluation shader stage, it
must include a tessellation control shader stage
If the pipeline
requires
pre-rasterization shader state
and pStages includes a tessellation control shader stage, and the
VK_EXT_extended_dynamic_state3 extension is not enabled or the
DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state is not set, pTessellationState must be a valid
pointer to a valid PipelineTessellationStateCreateInfo structure
If
pTessellationState is not NULL it must be a pointer to a valid
PipelineTessellationStateCreateInfo structure
If the pipeline
requires
pre-rasterization shader state
and pStages includes tessellation shader stages, the shader code
of at least one stage must contain an OpExecutionMode
instruction specifying the type of subdivision in the pipeline
If the pipeline
requires
pre-rasterization shader state
and pStages includes tessellation shader stages, and the shader
code of both stages contain an OpExecutionMode instruction
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 pStages includes tessellation shader stages, the shader code
of at least one stage must contain an OpExecutionMode
instruction specifying the output patch size in the pipeline
If the pipeline
requires
pre-rasterization shader state
and pStages includes tessellation shader stages, and the shader
code of both contain an OpExecutionMode instruction 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 pStages includes tessellation shader stages, and either
DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
dynamic state is not enabled or
dynamicPrimitiveTopologyUnrestricted
is FALSE, the topology member of
pInputAssembly must be
PRIMITIVE_TOPOLOGY_PATCH_LIST
If the pipeline
is being created with
pre-rasterization shader state
and
vertex input state
and the topology member of pInputAssembly is
PRIMITIVE_TOPOLOGY_PATCH_LIST,
and either
DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
dynamic state is not enabled or
dynamicPrimitiveTopologyUnrestricted
is FALSE, then pStages must
include tessellation shader stages
If
the pipeline is being created with a TessellationEvaluation
Execution Model, no Geometry Execution Model, uses the
PointMode Execution Mode, and the
shaderTessellationAndGeometryPointSize
feature is enabled, a PointSize decorated variable must be
written to if the
maintenance5
feature is not enabled
If the pipeline
is being created with a Vertex Execution Model and no
TessellationEvaluation or Geometry Execution Model, and the
topology member of pInputAssembly is
PRIMITIVE_TOPOLOGY_POINT_LIST,
and either
DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
dynamic state is not enabled or
dynamicPrimitiveTopologyUnrestricted
is FALSE, a PointSize decorated
variable must be written to if the
maintenance5
feature is not enabled
If
the pipeline is being created with a TessellationEvaluation
Execution Model, no Geometry Execution Model, uses the
PointMode Execution Mode, and the
shaderTessellationAndGeometryPointSize
feature is not enabled, a PointSize decorated variable must not
be written to
If the pipeline is being created with a Geometry Execution
Model, uses the OutputPoints Execution Mode, and the
shaderTessellationAndGeometryPointSize
feature is enabled, a PointSize decorated variable must be
written to for every vertex emitted if the
maintenance5
feature is not enabled
If the pipeline
is being created with a Geometry Execution Model, uses the
OutputPoints Execution Mode, and the
shaderTessellationAndGeometryPointSize
feature is not enabled, a PointSize decorated variable must not
be written to
If the pipeline
requires
pre-rasterization shader state
and pStages includes a geometry shader stage, and does not include
any tessellation shader stages, its shader code must contain an
OpExecutionMode instruction specifying an input primitive type
that is
compatible
with the primitive topology specified in pInputAssembly
If the pipeline
requires
pre-rasterization shader state
and pStages includes a geometry shader stage, and also includes
tessellation shader stages, its shader code must contain an
OpExecutionMode instruction 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 with PrimitiveId, 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
with PrimitiveId, in all execution paths
If renderPass
is not NULL_HANDLE and the pipeline is
being created with
fragment shader state
the fragment shader must not read from any input attachment that
is defined as ATTACHMENT_UNUSED in
subpass
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 those
pStages and 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 renderPass
is not NULL_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
contain
FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
then the blendEnable member of the corresponding element of the
pAttachments member of pColorBlendState must be
FALSE
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
fragment output interface state,
the pColorBlendState pointer is not NULL, the attachmentCount
member of pColorBlendState is not ignored, and the subpass uses
color attachments, the attachmentCount member of
pColorBlendState must be equal to the colorAttachmentCount
used to create subpass
If the
pipeline requires
pre-rasterization shader state,
and pViewportState->pViewports is not dynamic, then
pViewportState->pViewports must be a valid pointer to an array
of pViewportState->viewportCount valid Viewport structures
If the
pipeline requires
pre-rasterization shader state,
and pViewportState->pScissors is not dynamic, then
pViewportState->pScissors must be a valid pointer to an array of
pViewportState->scissorCount
Rect2D structures
If the
pipeline requires
pre-rasterization shader state,
and the
wideLines
feature is not enabled, and no element of the pDynamicStates
member of pDynamicState is
DYNAMIC_STATE_LINE_WIDTH, the
lineWidth member of pRasterizationState must be 1.0
If
the pipeline requires
pre-rasterization shader state,
and the
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state is enabled or the rasterizerDiscardEnable member of
pRasterizationState is FALSE, and
related dynamic state is not set,
pViewportState must be a valid pointer to a valid
PipelineViewportStateCreateInfo structure
If
pViewportState is not NULL it must be a valid pointer to a
valid PipelineViewportStateCreateInfo structure
If the
pipeline requires
fragment output interface state,
and the VK_EXT_extended_dynamic_state3 extension is not enabled or
any of the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,
DYNAMIC_STATE_SAMPLE_MASK_EXT, or
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
dynamic states is not set, or the
alphaToOne
feature is enabled and
DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
is not set, pMultisampleState must be a valid pointer to a valid
PipelineMultisampleStateCreateInfo structure
If
pMultisampleState is not NULL it must be a valid pointer to a
valid PipelineMultisampleStateCreateInfo structure
If
the pipeline is being created with
fragment shader state,
the PipelineMultisampleStateCreateInfo::alphaToCoverageEnable is
not ignored and is TRUE, then the
Fragment Output Interface
must contain a variable for the alpha Component word in
Location 0 at Index 0
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
fragment shader state,
and subpass uses a depth/stencil attachment, and
related dynamic state is not set,
pDepthStencilState must be a valid pointer to a valid
PipelineDepthStencilStateCreateInfo structure
If
pDepthStencilState is not NULL it must be a valid pointer to a
valid PipelineDepthStencilStateCreateInfo structure
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
fragment output interface state,
and subpass uses color attachments, and
related dynamic state is not set,
pColorBlendState must be a valid pointer to a valid
PipelineColorBlendStateCreateInfo structure
If the
pipeline requires
pre-rasterization shader state,
the
depthBiasClamp
feature is not enabled, no element of the pDynamicStates member of
pDynamicState is
DYNAMIC_STATE_DEPTH_BIAS, and the
depthBiasEnable member of pRasterizationState is
TRUE, the depthBiasClamp member
of pRasterizationState must be 0.0
If the
pipeline requires
fragment shader state,
the VK_EXT_depth_range_unrestricted extension is not enabled and
no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_DEPTH_BOUNDS, and
the depthBoundsTestEnable member of pDepthStencilState is
TRUE, the minDepthBounds and
maxDepthBounds members of pDepthStencilState must be between
0.0 and 1.0, inclusive
If the
pipeline requires
fragment shader state,
no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_DEPTH_BOUNDS, and
pDynamicStates includes
DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
or the depthBoundsTestEnable member of pDepthStencilState is
TRUE, minDepthBounds must be
less than or equal to maxDepthBounds
If the
pipeline requires
fragment shader state
or
fragment output interface state,
and rasterizationSamples and sampleLocationsInfo are not
dynamic, and
PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
included in the pNext chain of pMultisampleState is
TRUE,
sampleLocationsInfo.sampleLocationGridSize.width must evenly
divide
MultisamplePropertiesEXT::maxSampleLocationGridSize.width
as returned by
getPhysicalDeviceMultisamplePropertiesEXT
with a samples parameter equaling rasterizationSamples
If the
pipeline requires
fragment shader state
or
fragment output interface state,
and rasterizationSamples and sampleLocationsInfo are not
dynamic, and
PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
the included in the pNext chain of pMultisampleState is
TRUE or
DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
is used, sampleLocationsInfo.sampleLocationGridSize.height must
evenly divide
MultisamplePropertiesEXT::maxSampleLocationGridSize.height
as returned by
getPhysicalDeviceMultisamplePropertiesEXT
with a samples parameter equaling rasterizationSamples
If the
pipeline requires
fragment shader state
or
fragment output interface state,
and rasterizationSamples and sampleLocationsInfo are not
dynamic, and
PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
included in the pNext chain of pMultisampleState is
TRUE or
DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
is used, sampleLocationsInfo.sampleLocationsPerPixel must equal
rasterizationSamples
If
the pipeline requires
fragment shader state,
and the sampleLocationsEnable member of a
PipelineSampleLocationsStateCreateInfoEXT
structure included in the pNext chain of pMultisampleState is
TRUE, the fragment shader code
must not statically use the extended instruction
InterpolateAtSample
If the pipeline requires
fragment output interface state,
the
multisampledRenderToSingleSampled
feature is not enabled, the VK_AMD_mixed_attachment_samples
extension is not enabled, the VK_NV_framebuffer_mixed_samples
extension is not enabled, rasterizationSamples is not dynamic, and
subpass uses color and/or depth/stencil attachments, then the
rasterizationSamples member of pMultisampleState must 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_samples extension is enabled,
rasterizationSamples is not dynamic, and if subpass uses color
and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState must equal the maximum of the sample
counts of those subpass attachments
If renderPass
is not NULL_HANDLE, the
multisampledRenderToSingleSampled
feature is not enabled, rasterizationSamples is not dynamic, and
subpass has a
MultisampledRenderToSingleSampledInfoEXT
structure included in the
SubpassDescription2::pNext
chain with multisampledRenderToSingleSampledEnable equal to
TRUE, then the
rasterizationSamples member of pMultisampleState must be equal
to
MultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
If the pipeline
requires
fragment output interface state,
the VK_NV_framebuffer_mixed_samples extension is enabled,
rasterizationSamples is not dynamic, and if subpass has a
depth/stencil attachment and depth test, stencil test, or depth
bounds test are enabled, then the rasterizationSamples member of
pMultisampleState must be the same as the sample count of the
depth/stencil attachment
If the pipeline
requires
fragment output interface state,
the VK_NV_framebuffer_mixed_samples extension is enabled,
rasterizationSamples is not dynamic, and if subpass has any
color attachments, then the rasterizationSamples member of
pMultisampleState must be greater than or equal to the sample
count for those subpass attachments
If
the pipeline requires
fragment output interface state,
the
coverageReductionMode
feature is enabled, and rasterizationSamples is not dynamic, the
coverage reduction mode specified by
PipelineCoverageReductionStateCreateInfoNV::coverageReductionMode,
the rasterizationSamples member of pMultisampleState and the
sample counts for the color and depth/stencil attachments (if the
subpass has them) must be a valid combination returned by
getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
If the pipeline
requires
fragment output interface state,
rasterizationSamples is not dynamic, and subpass does not use
any color and/or depth/stencil attachments, then the
rasterizationSamples member of pMultisampleState must follow
the rules for a
zero-attachment subpass
If renderPass
is not NULL_HANDLE, subpass must be
a valid subpass within renderPass
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
pre-rasterization shader state,
subpass viewMask is not 0, and multiviewTessellationShader is
not enabled, then pStages must not include tessellation shaders
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
pre-rasterization shader state,
subpass viewMask is not 0, and multiviewGeometryShader is not
enabled, then pStages must not include a geometry shader
If renderPass
is not NULL_HANDLE and the pipeline is
being created with
pre-rasterization shader state,
and subpass viewMask is not 0, then all of the shaders in the
pipeline must not include variables decorated with the Layer
built-in decoration in their interfaces
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
pre-rasterization shader state,
subpass viewMask is not 0, and multiviewMeshShader is not
enabled, then pStages must not include a mesh shader
If renderPass
is not NULL_HANDLE, the pipeline is
being created with
pre-rasterization shader state,
pStages include a mesh shader, and subpass viewMask is not 0,
then the index of the most significant bit in viewMask must be
less than
maxMeshMultiviewViewCount
flags must not
contain the
PIPELINE_CREATE_DISPATCH_BASE_BIT
flag
If the pipeline
requires
fragment shader state
and an input attachment was referenced by an aspectMask at
renderPass creation time, the fragment shader must only read
from the aspects that were specified for that input attachment
The number of
resources in layout accessible to each shader stage that is used
by the pipeline must be less than or equal to
PhysicalDeviceLimits::maxPerStageResources
If the
pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
and the viewportWScalingEnable member of a
PipelineViewportWScalingStateCreateInfoNV
structure, included in the pNext chain of pViewportState, is
TRUE, the pViewportWScalings
member of the
PipelineViewportWScalingStateCreateInfoNV
must be a pointer to an array of
PipelineViewportWScalingStateCreateInfoNV::viewportCount
valid
ViewportWScalingNV
structures
If the
pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV,
and if pViewportState->pNext chain includes a
PipelineViewportExclusiveScissorStateCreateInfoNV
structure, and if its exclusiveScissorCount member is not 0,
then its pExclusiveScissors member must be a valid pointer to an
array of exclusiveScissorCount
Rect2D structures
If
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
is included in the pDynamicStates array then the implementation
must support at least specVersion 2 of the
VK_NV_scissor_exclusive extension
If the
pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV,
and if pViewportState->pNext chain includes a
PipelineViewportShadingRateImageStateCreateInfoNV
structure, then its pShadingRatePalettes member must be a valid
pointer to an array of viewportCount valid
ShadingRatePaletteNV
structures
If the
pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
and if pNext chain includes a
PipelineDiscardRectangleStateCreateInfoEXT
structure, and if its discardRectangleCount member is not 0,
then its pDiscardRectangles member must be a valid pointer to an
array of discardRectangleCount
Rect2D structures
If
DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT
is included in the pDynamicStates array then the implementation
must support at least specVersion 2 of the
VK_EXT_discard_rectangles extension
If
DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT
is included in the pDynamicStates array then the implementation
must support at least specVersion 2 of the
VK_EXT_discard_rectangles extension
If the pipeline
requires
vertex input state,
and pVertexInputState is not dynamic, then pVertexInputState
must be a valid pointer to a valid
PipelineVertexInputStateCreateInfo structure
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 pVertexInputState is not dynamic, then all variables with the
Input storage class decorated with Location in the Vertex
Execution Model OpEntryPoint must contain a location in
VertexInputAttributeDescription::location
If the pipeline
requires
vertex input state
and pVertexInputState is not dynamic, then the numeric type
associated with all Input variables of the corresponding
Location in the Vertex Execution Model OpEntryPoint must
be the same as VertexInputAttributeDescription::format
If the
pipeline is being created with
vertex input state
and pVertexInputState is not dynamic, and
VertexInputAttributeDescription::format has a 64-bit component,
then the scalar width associated with all Input variables of the
corresponding Location in the Vertex Execution Model
OpEntryPoint must be 64-bit
If the
pipeline is being created with
vertex input state
and pVertexInputState is not dynamic, and the scalar width
associated with a Location decorated Input variable in the
Vertex Execution Model OpEntryPoint is 64-bit, then the
corresponding VertexInputAttributeDescription::format must
have a 64-bit component
If the
pipeline is being created with
vertex input state
and pVertexInputState is not dynamic, and
VertexInputAttributeDescription::format has a 64-bit component,
then all Input variables at the corresponding Location in the
Vertex Execution Model OpEntryPoint must not use
components that are not present in the format
If the pipeline requires
vertex input state,
and
related dynamic state is not set,
pInputAssemblyState must be a valid pointer to a valid
PipelineInputAssemblyStateCreateInfo structure
If
pInputAssemblyState is not NULL it must be a valid pointer to
a valid PipelineInputAssemblyStateCreateInfo structure
If the pipeline
requires
pre-rasterization shader state,
the Xfb execution mode can be specified by no more than one
shader stage in pStages
If the pipeline
requires
pre-rasterization shader state,
and any shader stage in pStages specifies Xfb execution mode it
must be the last
pre-rasterization shader stage
If the
pipeline requires
pre-rasterization shader state,
and a
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream
value other than zero is specified, all variables in the output
interface of the entry point being compiled decorated with
Position, PointSize, ClipDistance, or CullDistance must be
decorated with identical Stream values that match the
rasterizationStream
If the
pipeline requires
pre-rasterization shader state,
and
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream
is zero, or not specified, all variables in the output interface of
the entry point being compiled decorated with Position,
PointSize, ClipDistance, or CullDistance must be decorated
with a Stream value of zero, or must not specify the Stream
decoration
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
GeometryStreams capability, then
PhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreams
feature 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 Xfb execution mode
If
the pipeline requires
pre-rasterization shader state
and at least one of
fragment output interface state
or
fragment shader state,
and pMultisampleState is not NULL, the lineRasterizationMode
member of a
PipelineRasterizationLineStateCreateInfo
structure included in the pNext chain of pRasterizationState is
LINE_RASTERIZATION_MODE_BRESENHAM
or
LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH,
then the alphaToCoverageEnable, alphaToOneEnable, and
sampleShadingEnable members of pMultisampleState must all be
FALSE
If the
pipeline requires
pre-rasterization shader state,
the stippledLineEnable member of
PipelineRasterizationLineStateCreateInfo
is TRUE, and no element of the
pDynamicStates member of pDynamicState is
DYNAMIC_STATE_LINE_STIPPLE, then
the lineStippleFactor member of
PipelineRasterizationLineStateCreateInfo
must be in the range [1,256]
If the
shaderMeshEnqueue
feature is not enabled, shaders specified by pStages must not
declare the ShaderEnqueueAMDX capability
If flags does not
include
PIPELINE_CREATE_LIBRARY_BIT_KHR,
shaders specified by pStages must not declare the
ShaderEnqueueAMDX capability
If any shader
stages in pStages declare the ShaderEnqueueAMDX capability,
PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
and
PIPELINE_CREATE_2_LIBRARY_BIT_KHR
must be included in flags
If
PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
is included in flags, and the pipeline requires
pre-rasterization shader state,
there must not be a task or vertex shader specified in pStages
If
PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
is included in flags, all elements of
PipelineLibraryCreateInfoKHR::pLibraries
must have been created with
PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX
flags must not
include
PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
If the
extendedDynamicState
feature is not enabled, and the minimum value of
ApplicationInfo::apiVersion
used to create the Instance and apiVersion
supported by the physical device is less than Version 1.3 there
must be no element of the pDynamicStates member of
pDynamicState set to
DYNAMIC_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,
or DYNAMIC_STATE_STENCIL_OP
If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_VIEWPORT_WITH_COUNT
is included in the pDynamicStates array then viewportCount
must be zero
If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_SCISSOR_WITH_COUNT
is included in the pDynamicStates array then scissorCount must
be zero
If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_VIEWPORT_WITH_COUNT
is included in the pDynamicStates array then
DYNAMIC_STATE_VIEWPORT must not
be present
If the
pipeline requires
pre-rasterization shader state,
and
DYNAMIC_STATE_SCISSOR_WITH_COUNT
is included in the pDynamicStates array then
DYNAMIC_STATE_SCISSOR must not
be present
If the
pipeline requires
pre-rasterization shader state,
and includes a mesh shader, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_PRIMITIVE_TOPOLOGY,
or
DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
If the
extendedDynamicState2
feature is not enabled, and the minimum value of
ApplicationInfo::apiVersion
used to create the Instance and apiVersion
supported by the physical device is less than Version 1.3 there
must be no element of the pDynamicStates member of
pDynamicState set to
DYNAMIC_STATE_DEPTH_BIAS_ENABLE,
DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE,
or
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
If the
extendedDynamicState2LogicOp
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_LOGIC_OP_EXT
If the
extendedDynamicState2PatchControlPoints
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_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
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE,
or
DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
If flags includes
PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV,
then the
::deviceGeneratedCommands
feature must be enabled
If the pipeline
requires
pre-rasterization shader state
and flags includes
PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV,
then all stages must not specify Xfb execution mode
If the
pipeline is not created with a
complete set of state,
or
PipelineLibraryCreateInfoKHR::libraryCount
is not 0,
GraphicsPipelineShaderGroupsCreateInfoNV::groupCount
and
GraphicsPipelineShaderGroupsCreateInfoNV::pipelineCount
must be 0
If the
pipeline is created with a
complete set of state,
and
PipelineLibraryCreateInfoKHR::libraryCount
is 0, and the pNext chain includes an instance of
GraphicsPipelineShaderGroupsCreateInfoNV,
GraphicsPipelineShaderGroupsCreateInfoNV::groupCount
must be greater than 0
If flags includes
PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT,
then the
::deviceGeneratedCommands
feature must be enabled
If the pipeline
requires
pre-rasterization shader state
and flags includes
PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT,
then all stages must not specify Xfb execution mode
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be greater than or equal to 1
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be greater than or equal to 1
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be a power-of-two value
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be a power-of-two value
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be less than or equal to 4
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be less than or equal to 4
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
pipelineFragmentShadingRate
feature is not enabled,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
and
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must both be equal to 1
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[0]
must be a valid
FragmentShadingRateCombinerOpKHR
value
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[1]
must be a valid
FragmentShadingRateCombinerOpKHR
value
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
primitiveFragmentShadingRate
feature is not enabled,
PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[0]
must be
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
If the
pipeline requires
pre-rasterization shader state
or
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
attachmentFragmentShadingRate
feature is not enabled,
PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps[1]
must be
FRAGMENT_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_COUNT
is not included in pDynamicState->pDynamicStates, and
PipelineViewportStateCreateInfo::viewportCount is greater than
1, entry points specified in pStages must not write to the
PrimitiveShadingRateKHR built-in
If the pipeline requires
pre-rasterization shader state
and the
primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and entry points specified in pStages
write to the ViewportIndex built-in, they must not also write to
the PrimitiveShadingRateKHR built-in
If the pipeline requires
pre-rasterization shader state
and the
primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and entry points specified in pStages
write to the ViewportMaskNV built-in, they must not also write
to the PrimitiveShadingRateKHR built-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_KHR
is not included in pDynamicState->pDynamicStates, elements of
PipelineFragmentShadingRateStateCreateInfoKHR::combinerOps
must be
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
or
FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
If the pipeline
requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateType
must be a valid
FragmentShadingRateTypeNV
value
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must be a valid
FragmentShadingRateNV
value
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[0]
must be a valid
FragmentShadingRateCombinerOpKHR
value
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates,
PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[1]
must be a valid
FragmentShadingRateCombinerOpKHR
value
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
fragmentShadingRateEnums
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateType
must be equal to
FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
pipelineFragmentShadingRate
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must be equal to
FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
primitiveFragmentShadingRate
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[0]
must be
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
If the
pipeline requires
fragment shader state
and
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates, and the
attachmentFragmentShadingRate
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps[1]
must be
FRAGMENT_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_KHR
is not included in pDynamicState->pDynamicStates, elements of
PipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps
must be
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
or
FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
If the pipeline
requires
fragment shader state,
and the
supersampleFragmentShadingRates
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must not be equal to
FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV,
FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV,
FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV,
or
FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV
If the pipeline
requires
fragment shader state,
and the
noInvocationFragmentShadingRates
feature is not enabled,
PipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must not be equal to
FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV
All
elements of the pDynamicStates member of pDynamicState must
not be
DYNAMIC_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
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_VERTEX_INPUT_EXT
If the
pipeline requires
pre-rasterization shader state,
and includes a mesh shader, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_VERTEX_INPUT_EXT
If the
colorWriteEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
If
the pipeline requires
fragment shader state,
and the VK_QCOM_render_pass_shader_resolve extension or the
customResolve
feature is enabled, rasterizationSamples is not dynamic, and if
subpass has any input attachments, and if the subpass description
contains
SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT,
then the sample count of the input attachments must equal
rasterizationSamples
If the
pipeline requires
fragment shader state,
and the VK_QCOM_render_pass_shader_resolve extension or the
customResolve
feature is enabled, and if the subpass description contains
SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT,
then sampleShadingEnable must 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,
renderPass must not be NULL_HANDLE
If the
multiview
feature is not enabled, the pipeline requires
pre-rasterization shader state
or
fragment shader state,
and renderPass is NULL_HANDLE,
PipelineRenderingCreateInfo::viewMask
must be 0
If the pipeline
requires
pre-rasterization shader state
or
fragment shader state,
and renderPass is NULL_HANDLE, the
index of the most significant bit in
PipelineRenderingCreateInfo::viewMask
must be less than
maxMultiviewViewCount
If the pipeline
requires
fragment output interface state,
and renderPass is NULL_HANDLE, and
PipelineRenderingCreateInfo::colorAttachmentCount
is not 0,
PipelineRenderingCreateInfo::pColorAttachmentFormats
must be a valid pointer to an array of colorAttachmentCount
valid Format values
If the pipeline
requires
fragment output interface state,
and renderPass is NULL_HANDLE, each
element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
must be a valid Format value
If the pipeline
requires
fragment output interface state,
renderPass is NULL_HANDLE, and any
element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
is not FORMAT_UNDEFINED, that format
must be a format with
potential format features
that include
FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or
FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
If the pipeline
requires
fragment output interface state,
and renderPass is NULL_HANDLE,
PipelineRenderingCreateInfo::depthAttachmentFormat
must be a valid Format value
If the pipeline
requires
fragment output interface state,
and renderPass is NULL_HANDLE,
PipelineRenderingCreateInfo::stencilAttachmentFormat
must be a valid Format value
If the pipeline
requires
fragment output interface state,
renderPass is NULL_HANDLE, and
PipelineRenderingCreateInfo::depthAttachmentFormat
is not FORMAT_UNDEFINED, it must be a
format with
potential format features
that include
FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
If the pipeline
requires
fragment output interface state,
renderPass is NULL_HANDLE, and
PipelineRenderingCreateInfo::stencilAttachmentFormat
is not FORMAT_UNDEFINED, it must be a
format with
potential format features
that include
FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
If the pipeline
requires
fragment output interface state,
renderPass is NULL_HANDLE, and
PipelineRenderingCreateInfo::depthAttachmentFormat
is not FORMAT_UNDEFINED, it must be a
format that includes a depth component
If the pipeline
requires
fragment output interface state,
renderPass is NULL_HANDLE, and
PipelineRenderingCreateInfo::stencilAttachmentFormat
is not FORMAT_UNDEFINED, it must be a
format that includes a stencil component
If the pipeline
requires
fragment output interface state,
renderPass is NULL_HANDLE,
PipelineRenderingCreateInfo::depthAttachmentFormat
is not FORMAT_UNDEFINED, and
PipelineRenderingCreateInfo::stencilAttachmentFormat
is not FORMAT_UNDEFINED,
depthAttachmentFormat must equal stencilAttachmentFormat
If renderPass
is NULL_HANDLE, the pipeline is being
created with
fragment shader state
and
fragment output interface state,
and either of
PipelineRenderingCreateInfo::depthAttachmentFormat
or
PipelineRenderingCreateInfo::stencilAttachmentFormat
are not FORMAT_UNDEFINED, and the
VK_EXT_extended_dynamic_state3 extension is not enabled or any of
the
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,
DYNAMIC_STATE_STENCIL_OP, or
DYNAMIC_STATE_DEPTH_BOUNDS
dynamic states are not set, pDepthStencilState must be a valid
pointer to a valid PipelineDepthStencilStateCreateInfo structure
If
pDepthStencilState is not NULL it must be a valid pointer to a
valid PipelineDepthStencilStateCreateInfo structure
If renderPass
is NULL_HANDLE and the pipeline is
being created with
fragment shader state
but not
fragment output interface state,
and the VK_EXT_extended_dynamic_state3 extension is not enabled,
or any of the
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,
DYNAMIC_STATE_STENCIL_OP, or
DYNAMIC_STATE_DEPTH_BOUNDS
dynamic states are not set, pDepthStencilState must be a valid
pointer to a valid PipelineDepthStencilStateCreateInfo structure
If
pDepthStencilState is not NULL it must be a valid pointer to a
valid PipelineDepthStencilStateCreateInfo structure
If renderPass
is NULL_HANDLE, the pipeline is being
created with
fragment output interface state,
and any element of
PipelineRenderingCreateInfo::pColorAttachmentFormats
is not FORMAT_UNDEFINED, and the
VK_EXT_extended_dynamic_state3 extension is not enabled, or any of
the
DYNAMIC_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,
or DYNAMIC_STATE_BLEND_CONSTANTS
dynamic states are not set, pColorBlendState must be a valid
pointer to a valid PipelineColorBlendStateCreateInfo structure
If
pColorBlendState is not NULL it must be a valid pointer to a
valid PipelineColorBlendStateCreateInfo structure
If renderPass
is NULL_HANDLE, pColorBlendState is
not dynamic, and the pipeline is being created with
fragment output interface state,
pColorBlendState->attachmentCount must be equal to
PipelineRenderingCreateInfo::colorAttachmentCount
If renderPass
is NULL_HANDLE, a
CustomResolveCreateInfoEXT
is in the pNext chain, and the pipeline is being created with
fragment output interface state,
PipelineRenderingCreateInfo::colorAttachmentCount
must be equal to
CustomResolveCreateInfoEXT::colorAttachmentCount
If renderPass
is NULL_HANDLE, the pipeline is being
created with
pre-rasterization shader state,
PipelineRenderingCreateInfo::viewMask
is not 0, and the
multiviewTessellationShader
feature is not enabled, then pStages must not include
tessellation shaders
If renderPass
is NULL_HANDLE, the pipeline is being
created with
pre-rasterization shader state,
PipelineRenderingCreateInfo::viewMask
is not 0, and the
multiviewGeometryShader
feature is not enabled, then pStages must not include a geometry
shader
If renderPass
is NULL_HANDLE, the pipeline is being
created with
pre-rasterization shader state,
and
PipelineRenderingCreateInfo::viewMask
is not 0, all of the shaders in the pipeline must not include
variables decorated with the Layer built-in decoration in their
interfaces
If renderPass
is NULL_HANDLE, the pipeline is being
created with
pre-rasterization shader state,
and
PipelineRenderingCreateInfo::viewMask
is not 0, and multiviewMeshShader is not enabled, then pStages
must not include a mesh shader
If renderPass
is NULL_HANDLE, the pipeline is being
created with
pre-rasterization shader state,
pStages include a mesh shader, and
PipelineRenderingCreateInfo::viewMask
is not 0, then the index of the most significant bit in viewMask
must be less than
maxMeshMultiviewViewCount
If the
dynamicRenderingLocalRead
feature is not enabled, the pipeline requires
fragment shader state,
and renderPass is NULL_HANDLE,
fragment shaders in pStages must not include the
InputAttachment capability
If the pipeline
requires
fragment shader state
and renderPass is not NULL_HANDLE,
fragment shaders in pStages must not include any of the
TileImageColorReadAccessEXT, TileImageDepthReadAccessEXT, or
TileImageStencilReadAccessEXT capabilities
If the pipeline
requires
fragment output interface state
and renderPass is NULL_HANDLE, for
each color attachment format defined by the
pColorAttachmentFormats member of
PipelineRenderingCreateInfo,
if its
potential format features
do not contain
FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
then the blendEnable member of the corresponding element of the
pAttachments member of pColorBlendState must be
FALSE
If the pipeline
requires
fragment output interface state
and renderPass is NULL_HANDLE, if the
pNext chain includes
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV,
the colorAttachmentCount member of that structure must be equal
to the value of
PipelineRenderingCreateInfo::colorAttachmentCount
If pStages
includes a fragment shader stage, and the fragment shader declares
the EarlyFragmentTests execution mode, the flags member of
PipelineDepthStencilStateCreateInfo must not include
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
or
PIPELINE_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 flags member of PipelineColorBlendStateCreateInfo
includes
PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT,
renderPass must not be NULL_HANDLE
If the
dynamicRenderingLocalRead
feature is not enabled, the pipeline requires
fragment output interface state,
and the flags member of PipelineDepthStencilStateCreateInfo
includes
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
or
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,
renderPass must not be NULL_HANDLE
If
the
fragment output interface state,
elements of the pColorAttachmentSamples member of
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
must be valid
SampleCountFlagBits values
If the
fragment output interface state
and the depthStencilAttachmentSamples member of
AttachmentSampleCountInfoAMD
or
AttachmentSampleCountInfoNV
is not 0, it must be a valid
SampleCountFlagBits value
If the pipeline
requires
fragment output interface state,
renderPass is not NULL_HANDLE, and
the flags member of PipelineColorBlendStateCreateInfo includes
PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT
subpass must have been created with
SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT
If the pipeline
requires
fragment shader state,
renderPass is not NULL_HANDLE, and
the flags member of PipelineDepthStencilStateCreateInfo includes
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,
subpass must have been created with
SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
If the pipeline
requires
fragment shader state,
renderPass is not NULL_HANDLE, and
the flags member of PipelineDepthStencilStateCreateInfo includes
PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,
subpass must have been created with
SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
If
PipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCount
is not 0, it must be equal to stageCount
If renderPass
is NULL_HANDLE, the pipeline is being
created with
pre-rasterization shader state
or
fragment shader state,
and
MultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnly
is TRUE then
MultiviewPerViewAttributesInfoNVX::perViewAttributes
must also be TRUE
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, the value of
MultiviewPerViewAttributesInfoNVX::perViewAttributes
specified in both this pipeline and the library must be equal
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
the value of
MultiviewPerViewAttributesInfoNVX::perViewAttributes
specified in both libraries must be equal
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, the value of
MultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnly
specified in both this pipeline and the library must be equal
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
the value of
MultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnly
specified in both libraries must be equal
If the pipeline
requires
pre-rasterization shader state
or
fragment shader state,
pStages must be a valid pointer to an array of stageCount
valid PipelineShaderStageCreateInfo
structures
If the pipeline
does not require
pre-rasterization shader state
or
fragment shader state,
stageCount must be zero
If the
pipeline requires
pre-rasterization shader state,
and
related dynamic state is not set,
pRasterizationState must be a valid pointer to a valid
PipelineRasterizationStateCreateInfo structure
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
and
related dynamic state is not set,
then pMultisampleState must be a valid pointer to a valid
PipelineMultisampleStateCreateInfo structure
If
pRasterizationState is not NULL it must be a valid pointer to
a valid PipelineRasterizationStateCreateInfo structure
If the pipeline
requires
fragment shader state
or
pre-rasterization shader state,
and
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
layout must be a valid PipelineLayout
handle
If the pipeline
requires
pre-rasterization shader state,
fragment shader state,
or
fragment output state,
and renderPass is not NULL_HANDLE,
renderPass must be a valid RenderPass
handle
If the pipeline
requires
pre-rasterization shader state,
stageCount must be greater than 0
If
the
graphicsPipelineLibrary
feature is not enabled, and if the
shaderMeshEnqueue
feature is not enabled, flags must not include
PIPELINE_CREATE_LIBRARY_BIT_KHR
If the
shaderMeshEnqueue
feature is not enabled, and the pipeline is being created with
all possible state subsets,
flags must not include
PIPELINE_CREATE_LIBRARY_BIT_KHR
If flags includes
PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT,
pipeline libraries included via
PipelineLibraryCreateInfoKHR
must have been created with
PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
If flags includes
PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT,
flags must also include
PIPELINE_CREATE_LIBRARY_BIT_KHR
If flags includes
PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT,
pipeline libraries included via
PipelineLibraryCreateInfoKHR
must have been created with
PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
Any pipeline
libraries included via
PipelineLibraryCreateInfoKHR::pLibraries
must not include any
state subset
already defined by this structure or defined by any other pipeline
library in
PipelineLibraryCreateInfoKHR::pLibraries
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, and layout was not created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then the layout used by this pipeline and the library must be
identically defined
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and the layout specified by either library was not created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then the layout used by each library must be
identically defined
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and layout was created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then the layout used by the library must also have been created
with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and the layout specified by either library was created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then the layout used by both libraries must have been created
with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and layout was created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
elements of the pSetLayouts array which layout was created with
that are not NULL_HANDLE must be
identically defined
to the element at the same index of pSetLayouts used to create the
library’s layout
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and the layout specified by either library was created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
elements of the pSetLayouts array which either layout was
created with that are not NULL_HANDLE
must be
identically defined
to the element at the same index of pSetLayouts used to create the
other library’s layout
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, any descriptor set layout N specified by
layout in both this pipeline and the library which include
bindings accessed by shader stages in each must be /identically
defined/
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
any descriptor set layout N specified by layout in both
libraries which include bindings accessed by shader stages in each
must be
identically defined
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, push constants specified in layout in
both this pipeline and the library which are available to shader
stages in each must be
identically defined
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
and one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
push constants specified in layout in both this pipeline and the
library which are available to shader stages in each must be
identically defined
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
and
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other subset,
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
was not used, and any element of the pSetLayouts array when
layout was created and the corresponding element of the
pSetLayouts array used to create the library’s layout must not
both be NULL_HANDLE
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
was not used, and any element of the pSetLayouts array used to
create each library’s layout was
NULL_HANDLE, then the corresponding
element of the pSetLayouts array used to create the other
library’s layout must not be
NULL_HANDLE
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and any element of the pSetLayouts
array which layout was created with was
NULL_HANDLE, then the corresponding
element of the pSetLayouts array used to create the library’s
layout must not have shader bindings for shaders in the other
subset
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and any element of the pSetLayouts
array used to create the library’s layout was
NULL_HANDLE, then the corresponding
element of the pSetLayouts array used to create this pipeline’s
layout must not have shader bindings for shaders in the other
subset
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
one element of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and any element of the pSetLayouts array used to create each
library’s layout was NULL_HANDLE,
then the corresponding element of the pSetLayouts array used to
create the other library’s layout must not have shader bindings
for shaders in the other subset
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
and
GraphicsPipelineLibraryCreateInfoEXT::flags
includes both
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
layout must have been created with no elements of the
pSetLayouts array set to NULL_HANDLE
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
and pRasterizationState->rasterizerDiscardEnable is
TRUE, layout must have been
created with no elements of the pSetLayouts array set to
NULL_HANDLE
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the value of subpass must be
equal to that used to create the library
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
includes at least one of and no more than two of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and another element of
PipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the value of subpass used to
create each library must be identical
If renderpass
is not NULL_HANDLE,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, renderPass must be compatible
with that used to create the library
If renderpass
is NULL_HANDLE,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the value of renderPass used to
create that library must also be
NULL_HANDLE
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes either
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and the other element is included in
PipelineLibraryCreateInfoKHR::pLibraries,
and renderPass is NULL_HANDLE, the
value of
PipelineRenderingCreateInfo::viewMask
used by this pipeline and that specified by the library must be
identical
If
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
are included in two elements of
PipelineLibraryCreateInfoKHR::pLibraries,
and renderPass was NULL_HANDLE for
both libraries, the value of
PipelineRenderingCreateInfo::viewMask
set by each library must be identical
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
includes at least one of and no more than two of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and another element of
PipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the renderPass objects used to
create each library must be compatible or all equal to
NULL_HANDLE
If renderPass
is not NULL_HANDLE, the pipeline
requires
fragment shader state,
and the VK_EXT_extended_dynamic_state3 extension is not enabled or
any of the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,
DYNAMIC_STATE_SAMPLE_MASK_EXT, or
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
dynamic states is not set, or the
alphaToOne
feature is enabled and
DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
is not set, then pMultisampleState must be a valid pointer to a
valid PipelineMultisampleStateCreateInfo structure
If the pipeline
requires
fragment shader state
with a fragment shader that either enables
sample shading
or decorates any variable in the Input storage class with
Sample, and the VK_EXT_extended_dynamic_state3 extension is not
enabled or any of the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT,
DYNAMIC_STATE_SAMPLE_MASK_EXT, or
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
dynamic states is not set, or the
alphaToOne
feature is enabled and
DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
is not set, then pMultisampleState must be a valid pointer to a
valid PipelineMultisampleStateCreateInfo structure
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
CustomResolveCreateInfoEXT
is included and
CustomResolveCreateInfoEXT::customResolve
is TRUE, and an element of
PipelineLibraryCreateInfoKHR::pLibraries
also includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
the library must also include
CustomResolveCreateInfoEXT
and the
CustomResolveCreateInfoEXT::customResolve
specified by the library must be
TRUE
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
CustomResolveCreateInfoEXT
is not included or
CustomResolveCreateInfoEXT::customResolve
is FALSE, and an element of
PipelineLibraryCreateInfoKHR::pLibraries
also includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
either the library must not include
CustomResolveCreateInfoEXT
or the
CustomResolveCreateInfoEXT::customResolve
specified by the library must be
FALSE
If one
element of
PipelineLibraryCreateInfoKHR
includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
CustomResolveCreateInfoEXT
is included and
CustomResolveCreateInfoEXT::customResolve
is TRUE, and another element of
PipelineLibraryCreateInfoKHR::pLibraries
also includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
the other library must also include
CustomResolveCreateInfoEXT
and the
CustomResolveCreateInfoEXT::customResolve
specified by the library must be
TRUE
If one
element of
PipelineLibraryCreateInfoKHR
includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
CustomResolveCreateInfoEXT
is not included or
CustomResolveCreateInfoEXT::customResolve
is FALSE, and another element of
PipelineLibraryCreateInfoKHR::pLibraries
also includes either
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
either the other library must not include
CustomResolveCreateInfoEXT
or the
CustomResolveCreateInfoEXT::customResolve
specified by the library must be
FALSE
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
with a pMultisampleState that was not NULL, and an element of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
pMultisampleState must be
identically defined
to that used to create the library
If an element
of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
with a pMultisampleState that was not NULL, and if
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
pMultisampleState must be
identically defined
to that used to create the library
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
with a pMultisampleState that was not NULL, and if a different
element of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
the pMultisampleState used to create each library must be
identically defined
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
and a value of pMultisampleState->sampleShadingEnable equal
TRUE, and if a different element of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
the pMultisampleState used to create each library must be
identically defined
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
pMultisampleState->sampleShadingEnable is
TRUE, and an element of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
pMultisampleState must be
identically defined
to that used to create the library
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
was created with
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
and a value of pMultisampleState->sampleShadingEnable equal
TRUE, and if
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
pMultisampleState must be
identically defined
to that used to create the library
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and an element of
PipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, values specified in
PipelineFragmentShadingRateStateCreateInfoKHR
for both this pipeline and that library must be identical
If one element
of
PipelineLibraryCreateInfoKHR::pLibraries
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
values specified in
PipelineFragmentShadingRateStateCreateInfoKHR
for both this pipeline and that library must be identical
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
pStages must be a valid pointer to an array of stageCount
valid PipelineShaderStageCreateInfo
structures
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
layout must be a valid PipelineLayout
handle
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and renderPass is not NULL_HANDLE,
renderPass must be a valid RenderPass
handle
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
stageCount must be greater than 0
If
GraphicsPipelineLibraryCreateInfoEXT::flags
is non-zero, if flags includes
PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,
any libraries must have also been created with
PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
If
PipelineLibraryCreateInfoKHR::pLibraries
includes more than one library, and any library was created with
PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,
all libraries must have also been created with
PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
If
PipelineLibraryCreateInfoKHR::pLibraries
includes at least one library,
GraphicsPipelineLibraryCreateInfoEXT::flags
is non-zero, and any library was created with
PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,
flags must include
PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
the pipeline includes a
complete set of state,
and there are no libraries included in
PipelineLibraryCreateInfoKHR::pLibraries,
then PipelineLayout must be a valid
pipeline layout
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
the pipeline includes a
complete set of state
specified entirely by libraries, and each library was created with a
PipelineLayout created without
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then layout must be
compatible
with the layouts in those libraries
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
flags includes
PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT,
the pipeline includes a
complete set of state
specified entirely by libraries, and each library was created with a
PipelineLayout created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then layout must be
compatible
with the union of the libraries' pipeline layouts other than the
inclusion/exclusion of
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
flags does not include
PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT,
the pipeline includes a
complete set of state
specified entirely by libraries, and each library was created with a
PipelineLayout created with
PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT,
then layout must 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::conservativeRasterizationMode
must be
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
If the pipeline
requires
pre-rasterization shader state
but not
fragment shader state,
elements of pStages must not have stage set to
SHADER_STAGE_FRAGMENT_BIT
If the pipeline
requires
fragment shader state
but not
pre-rasterization shader state,
elements of pStages must not have stage set to a shader stage
which participates in pre-rasterization
If the pipeline
requires
pre-rasterization shader state,
all elements of pStages must have a stage set 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 stage must not be set in more than one element of
pStages
If the
extendedDynamicState3TessellationDomainOrigin
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
If the
extendedDynamicState3DepthClampEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
If the
extendedDynamicState3PolygonMode
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_POLYGON_MODE_EXT
If the
extendedDynamicState3RasterizationSamples
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
If the
extendedDynamicState3SampleMask
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_SAMPLE_MASK_EXT
If the
extendedDynamicState3AlphaToCoverageEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
If the
extendedDynamicState3AlphaToOneEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
If the
extendedDynamicState3LogicOpEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
If the
extendedDynamicState3ColorBlendEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
If the
extendedDynamicState3ColorBlendEquation
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
If the
extendedDynamicState3ColorWriteMask
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
If the
extendedDynamicState3RasterizationStream
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
If the
extendedDynamicState3ConservativeRasterizationMode
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
If the
extendedDynamicState3ExtraPrimitiveOverestimationSize
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
If the
pipeline requires
pre-rasterization shader state,
pDynamicState includes
DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT,
and pDynamicState does not include
DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT,
pRasterizationState must include a
PipelineRasterizationConservativeStateCreateInfoEXT
in its pNext chain
If the
extendedDynamicState3DepthClipEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
If the
extendedDynamicState3SampleLocationsEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
If the
extendedDynamicState3ColorBlendAdvanced
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
If the
extendedDynamicState3ProvokingVertexMode
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
If the
extendedDynamicState3LineRasterizationMode
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
If the
extendedDynamicState3LineStippleEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
If the
extendedDynamicState3DepthClipNegativeOneToOne
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
If the
extendedDynamicState3ViewportWScalingEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
If the
extendedDynamicState3ViewportSwizzle
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
If the
extendedDynamicState3CoverageToColorEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
If the
extendedDynamicState3CoverageToColorLocation
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
If the
extendedDynamicState3CoverageModulationMode
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
If the
extendedDynamicState3CoverageModulationTableEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
If the
extendedDynamicState3CoverageModulationTable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
If the
extendedDynamicState3CoverageReductionMode
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
If the
extendedDynamicState3RepresentativeFragmentTestEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
If the
extendedDynamicState3ShadingRateImageEnable
feature is not enabled, there must be no element of the
pDynamicStates member of pDynamicState set to
DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
flags must not
include
PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_KHR
If flags
includes
PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR,
each element of
PipelineLibraryCreateInfoKHR::pLibraries
must have been created with the
PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR
bit set
If the
::micromap
feature is not enabled, flags must not include
PIPELINE_CREATE_2_OPACITY_MICROMAP_DISALLOW_MIXED_SPECIAL_INDEX_BIT_KHR
flags must not
include
PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
If the
multiviewPerViewViewports
feature is enabled, renderpass is not
NULL_HANDLE, the pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
then the index of the most significant bit in each element of
RenderPassMultiviewCreateInfo::pViewMasks
must be less than pViewportState->viewportCount
If the
multiviewPerViewViewports
feature is enabled, renderpass is not
NULL_HANDLE, the pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_SCISSOR_WITH_COUNT,
then the index of the most significant bit in each element of
RenderPassMultiviewCreateInfo::pViewMasks
must be less than pViewportState->scissorCount
If the
multiviewPerViewViewports
feature is enabled, renderpass is
NULL_HANDLE, the pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
then the index of the most significant bit in
PipelineRenderingCreateInfo::viewMask
must be less than pViewportState->viewportCount
If the
multiviewPerViewViewports
feature is enabled, renderpass is
NULL_HANDLE, the pipeline requires
pre-rasterization shader state,
and no element of the pDynamicStates member of pDynamicState is
DYNAMIC_STATE_SCISSOR_WITH_COUNT,
then the index of the most significant bit in
PipelineRenderingCreateInfo::viewMask
must be less than pViewportState->scissorCount
If pStages
includes a fragment shader stage,
DYNAMIC_STATE_DEPTH_WRITE_ENABLE
is not set in PipelineDynamicStateCreateInfo::pDynamicStates,
and the fragment shader declares the EarlyFragmentTests execution
mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable
member of PipelineDepthStencilStateCreateInfo must be
FALSE
If pStages
includes a fragment shader stage,
DYNAMIC_STATE_STENCIL_WRITE_MASK
is not set in PipelineDynamicStateCreateInfo::pDynamicStates,
and the fragment shader declares the EarlyFragmentTests execution
mode and uses OpStencilAttachmentReadEXT, the value of
StencilOpState::writeMask for both front and back in
PipelineDepthStencilStateCreateInfo must be 0
If renderPass
is NULL_HANDLE, the pipeline requires
fragment output state
or
fragment shader state,
the pipeline enables
sample shading,
rasterizationSamples is not dynamic, and the pNext chain
includes a
PipelineRenderingCreateInfo
structure, rasterizationSamples must be a valid
SampleCountFlagBits value
that is set in imageCreateSampleCounts (as defined in
Image Creation Limits)
for every element of depthAttachmentFormat,
stencilAttachmentFormat and the pColorAttachmentFormats array
which is not FORMAT_UNDEFINED
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT,
pre-rasterization shader state
is specified either in a library or by the inclusion of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
and that state includes a vertex shader stage in pStages, the
pipeline must define
vertex input state
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT,
and
pre-rasterization shader state
is not specified, the pipeline must define
vertex input state
If flags does not
include
PIPELINE_CREATE_LIBRARY_BIT_KHR,
pre-rasterization shader state
is specified either in a library or by the inclusion of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
and that state includes a vertex shader stage in pStages, the
pipeline must either define
vertex input state
or include that state in a linked pipeline library
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
the pipeline must define
pre-rasterization shader state
If flags does not
include
PIPELINE_CREATE_LIBRARY_BIT_KHR,
the pipeline must either define
pre-rasterization shader state
or include that state in a linked pipeline library
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
pre-rasterization shader state
is specified either in a library or by the inclusion of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
and that state either includes
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
or has pRasterizationState->rasterizerDiscardEnable set to
FALSE, the pipeline must define
fragment shader state
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and
pre-rasterization shader state
is not specified, the pipeline must define
fragment shader state
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
pre-rasterization shader state
is specified either in a library or by the inclusion of
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT,
and that state either includes
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
or has pRasterizationState->rasterizerDiscardEnable set to
FALSE, the pipeline must define
fragment output interface state
If
GraphicsPipelineLibraryCreateInfoEXT::flags
includes
GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT,
and
pre-rasterization shader state
is not specified, the pipeline must define
fragment output interface state
If flags does not
include
PIPELINE_CREATE_LIBRARY_BIT_KHR,
pre-rasterization shader state
is specified either in a library or by the inclusion of
GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT,
and that state either includes
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
or has pRasterizationState->rasterizerDiscardEnable set to
FALSE, the pipeline must define
fragment output interface state
and
fragment shader state
or include those states in linked pipeline libraries
If
pDynamicState->pDynamicStates does not include
DYNAMIC_STATE_COLOR_WRITE_MASK_EXT,
and the format of any color attachment is
FORMAT_E5B9G9R9_UFLOAT_PACK32, the
colorWriteMask member of the corresponding element of
pColorBlendState->pAttachments must either include all of
COLOR_COMPONENT_R_BIT,
COLOR_COMPONENT_G_BIT,
and
COLOR_COMPONENT_B_BIT,
or none of them
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0,
PipelineRenderingCreateInfo::viewMask
must be 0
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is NULL_HANDLE,
ExternalFormatANDROID::externalFormat
is not 0, and rasterizationSamples is not dynamic,
PipelineMultisampleStateCreateInfo::rasterizationSamples must
be 1
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0, and blendEnable is not dynamic, the blendEnable
member of each element of pColorBlendState->pAttachments must be
FALSE
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0, and pDynamicState->pDynamicStates does not include
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be 1
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0, and pDynamicState->pDynamicStates does not include
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be 1
If
the
externalFormatResolve
feature is enabled, the pipeline requires
pre-rasterization shader state
and
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0, the last
pre-rasterization shader stage
must not statically use a variable with the
PrimitiveShadingRateKHR built-in
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0,
PipelineRenderingCreateInfo::colorAttachmentCount
must be 1
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment shader state
and
fragment output interface state,
renderPass is NULL_HANDLE, and
ExternalFormatANDROID::externalFormat
is not 0, the fragment shader must not declare the
DepthReplacing or StencilRefReplacingEXT execution modes
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is not NULL_HANDLE,
subpass includes an external format resolve attachment, and
rasterizationSamples is not dynamic,
PipelineMultisampleStateCreateInfo::rasterizationSamples must
be SAMPLE_COUNT_1_BIT
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is not NULL_HANDLE,
subpass includes an external format resolve attachment, and
blendEnable is not dynamic, the blendEnable member of each
element of pColorBlendState->pAttachments must be
FALSE
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is not NULL_HANDLE,
subpass includes an external format resolve attachment, and
pDynamicState->pDynamicStates does not include
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be 1
If
the
externalFormatResolve
feature is enabled, the pipeline requires
fragment output interface state,
renderPass is not NULL_HANDLE,
subpass includes an external format resolve attachment, and
pDynamicState->pDynamicStates does not include
DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,
PipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be 1
If
the
externalFormatResolve
feature is enabled, the pipeline requires
pre-rasterization shader state
and
fragment output interface state,
renderPass is not NULL_HANDLE, and
subpass includes an external format resolve attachment, the last
pre-rasterization shader stage
must not statically use a variable with the
PrimitiveShadingRateKHR built-in
If the pipeline
is being created with
fragment shader state
and
fragment output state,
the value of renderPass is
NULL_HANDLE, and
RenderingInputAttachmentIndexInfo
is included,
RenderingInputAttachmentIndexInfo::colorAttachmentCount
must be equal to
PipelineRenderingCreateInfo::colorAttachmentCount
If the pipeline
is being created with
fragment shader state
and
fragment output state,
the value of renderPass is
NULL_HANDLE, and
RenderingInputAttachmentIndexInfo
is not included, the fragment shader must not contain any input
attachments with a InputAttachmentIndex greater than or equal to
PipelineRenderingCreateInfo::colorAttachmentCount
If the pipeline
is being created with
fragment output state,
and the value of renderPass is
NULL_HANDLE,
RenderingAttachmentLocationInfo::colorAttachmentCount
must be equal to
PipelineRenderingCreateInfo::colorAttachmentCount
If
PipelineCreateFlags2CreateInfoKHR::flags
includes
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
all libraries linked to this pipeline must also have that flag set
If
PipelineCreateFlags2CreateInfoKHR::flags
does not include
PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT,
all libraries linked to this pipeline must also not have that flag
set
If flags includes
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT,
all libraries linked to this pipeline must also have that flag set
If flags does not
include
PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT,
all libraries linked to this pipeline must also not have that flag
set
If flags includes
PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT,
all libraries linked to this pipeline must also have that flag set
If flags does not
include
PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT,
all libraries linked to this pipeline must also not have that flag
set
If flags includes
PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT,
all libraries linked to this pipeline must also have that flag set
If flags does not
include
PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT,
all libraries linked to this pipeline must also not have that flag
set