| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.Pipeline
Synopsis
- createGraphicsPipelines :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- withGraphicsPipelines :: forall io r. MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
- createComputePipelines :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- withComputePipelines :: forall io r. MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r
- destroyPipeline :: forall io. MonadIO io => Device -> Pipeline -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- data SpecializationMapEntry = SpecializationMapEntry {}
- data SpecializationInfo = SpecializationInfo {
- mapEntries :: Vector SpecializationMapEntry
- dataSize :: Word64
- data' :: Ptr ()
- data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo {}
- data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo {}
- data VertexInputBindingDescription = VertexInputBindingDescription {}
- data VertexInputAttributeDescription = VertexInputAttributeDescription {}
- data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo {}
- data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo {}
- data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo {}
- data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo {}
- data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo {
- next :: Chain es
- flags :: PipelineRasterizationStateCreateFlags
- depthClampEnable :: Bool
- rasterizerDiscardEnable :: Bool
- polygonMode :: PolygonMode
- cullMode :: CullModeFlags
- frontFace :: FrontFace
- depthBiasEnable :: Bool
- depthBiasConstantFactor :: Float
- depthBiasClamp :: Float
- depthBiasSlopeFactor :: Float
- lineWidth :: Float
- data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo {}
- data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState {}
- data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo {}
- data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo {}
- data StencilOpState = StencilOpState {}
- data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo {}
- data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo {
- next :: Chain es
- flags :: PipelineCreateFlags
- stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
- vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
- inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo
- tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)
- viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)
- rasterizationState :: SomeStruct PipelineRasterizationStateCreateInfo
- multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)
- depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo
- colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)
- dynamicState :: Maybe PipelineDynamicStateCreateInfo
- layout :: PipelineLayout
- renderPass :: RenderPass
- subpass :: Word32
- basePipelineHandle :: Pipeline
- basePipelineIndex :: Int32
Documentation
createGraphicsPipelines :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline) Source #
vkCreateGraphicsPipelines - Create graphics pipelines
Parameters
deviceis the logical device that creates the graphics pipelines.
pipelineCacheis eitherNULL_HANDLE, indicating that pipeline caching is disabled; or the handle of a valid pipeline cache object, in which case use of that cache is enabled for the duration of the command.createInfoCountis the length of thepCreateInfosandpPipelinesarrays.pCreateInfosis a pointer to an array ofGraphicsPipelineCreateInfostructures.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pPipelinesis a pointer to an array ofPipelinehandles in which the resulting graphics pipeline objects are returned.
Description
The GraphicsPipelineCreateInfo structure includes an array of shader
create info structures containing all the desired active shader stages,
as well as creation info to define all relevant fixed-function stages,
and a pipeline layout.
Valid Usage
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, and thebasePipelineIndexmember of that same element is not-1,basePipelineIndexmust be less than the index intopCreateInfosthat corresponds to that element
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BITflag set - If
pipelineCachewas created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT, host access topipelineCachemust be externally synchronized
Note
An implicit cache may be provided by the implementation or a layer. For
this reason, it is still valid to set
PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
on flags for any element of pCreateInfos while passing
NULL_HANDLE for pipelineCache.
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidGraphicsPipelineCreateInfostructures- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pPipelinesmust be a valid pointer to an array ofcreateInfoCountPipelinehandlescreateInfoCountmust be greater than0- If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
AllocationCallbacks,
Device, GraphicsPipelineCreateInfo,
Pipeline, PipelineCache
withGraphicsPipelines :: forall io r. MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createGraphicsPipelines and destroyPipeline
To ensure that destroyPipeline is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass (,) as the first argument.
createComputePipelines :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline) Source #
vkCreateComputePipelines - Creates a new compute pipeline object
Parameters
deviceis the logical device that creates the compute pipelines.
pipelineCacheis eitherNULL_HANDLE, indicating that pipeline caching is disabled; or the handle of a valid pipeline cache object, in which case use of that cache is enabled for the duration of the command.createInfoCountis the length of thepCreateInfosandpPipelinesarrays.pCreateInfosis a pointer to an array ofComputePipelineCreateInfostructures.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pPipelinesis a pointer to an array ofPipelinehandles in which the resulting compute pipeline objects are returned.
Valid Usage
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, and thebasePipelineIndexmember of that same element is not-1,basePipelineIndexmust be less than the index intopCreateInfosthat corresponds to that element
- If the
flagsmember of any element ofpCreateInfoscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BITflag set - If
pipelineCachewas created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT, host access topipelineCachemust be externally synchronized
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidComputePipelineCreateInfostructures- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pPipelinesmust be a valid pointer to an array ofcreateInfoCountPipelinehandlescreateInfoCountmust be greater than0- If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
AllocationCallbacks,
ComputePipelineCreateInfo, Device,
Pipeline, PipelineCache
withComputePipelines :: forall io r. MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createComputePipelines and destroyPipeline
To ensure that destroyPipeline is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass (,) as the first argument.
destroyPipeline :: forall io. MonadIO io => Device -> Pipeline -> ("allocator" ::: Maybe AllocationCallbacks) -> io () Source #
vkDestroyPipeline - Destroy a pipeline object
Parameters
deviceis the logical device that destroys the pipeline.
pipelineis the handle of the pipeline to destroy.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
pipelinemust have completed execution
- If
AllocationCallbackswere provided whenpipelinewas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whenpipelinewas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
pipelineis notNULL_HANDLE,pipelinemust be a validPipelinehandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
pipelineis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
pipelinemust be externally synchronized
See Also
data SpecializationMapEntry Source #
VkSpecializationMapEntry - Structure specifying a specialization map entry
Description
If a constantID value is not a specialization constant ID used in the
shader, that map entry does not affect the behavior of the pipeline.
Valid Usage
- For a
constantIDspecialization constant declared in a shader,sizemust match the byte size of theconstantID. If the specialization constant is of typeboolean,sizemust be the byte size ofBool32
See Also
Constructors
| SpecializationMapEntry | |
Fields | |
Instances
data SpecializationInfo Source #
VkSpecializationInfo - Structure specifying specialization info
Description
pMapEntries is a pointer to a SpecializationMapEntry structure.
Valid Usage
- The
offsetmember of each element ofpMapEntriesmust be less thandataSize
- The
sizemember of each element ofpMapEntriesmust be less than or equal todataSizeminusoffset
Valid Usage (Implicit)
- If
mapEntryCountis not0,pMapEntriesmust be a valid pointer to an array ofmapEntryCountvalidSpecializationMapEntrystructures
- If
dataSizeis not0,pDatamust be a valid pointer to an array ofdataSizebytes
See Also
Constructors
| SpecializationInfo | |
Fields
| |
Instances
| Show SpecializationInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods showsPrec :: Int -> SpecializationInfo -> ShowS # show :: SpecializationInfo -> String # showList :: [SpecializationInfo] -> ShowS # | |
| FromCStruct SpecializationInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods peekCStruct :: Ptr SpecializationInfo -> IO SpecializationInfo Source # | |
| ToCStruct SpecializationInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods withCStruct :: SpecializationInfo -> (Ptr SpecializationInfo -> IO b) -> IO b Source # pokeCStruct :: Ptr SpecializationInfo -> SpecializationInfo -> IO b -> IO b Source # withZeroCStruct :: (Ptr SpecializationInfo -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr SpecializationInfo -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero SpecializationInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods | |
data PipelineShaderStageCreateInfo (es :: [Type]) Source #
VkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage
Valid Usage
- If the
geometry shaders
feature is not enabled,
stagemust not beSHADER_STAGE_GEOMETRY_BIT
- If the
tessellation shaders
feature is not enabled,
stagemust not beSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If the
mesh shader
feature is not enabled,
stagemust not beSHADER_STAGE_MESH_BIT_NV - If the
task shader
feature is not enabled,
stagemust not beSHADER_STAGE_TASK_BIT_NV stagemust not beSHADER_STAGE_ALL_GRAPHICS, orSHADER_STAGE_ALLpNamemust be the name of anOpEntryPointinmodulewith an execution model that matchesstage- If the identified entry point includes any variable in its interface
that is declared with the
ClipDistanceBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxClipDistances - If the identified entry point includes any variable in its interface
that is declared with the
CullDistanceBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxCullDistances - If the identified entry point includes any variables in its
interface that are declared with the
ClipDistanceorCullDistanceBuiltIndecoration, those variables must not have array sizes which sum to more thanPhysicalDeviceLimits::maxCombinedClipAndCullDistances - If the identified entry point includes any variable in its interface
that is declared with the
SampleMaskBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxSampleMaskWords - If
stageisSHADER_STAGE_VERTEX_BIT, the identified entry point must not include any input variable in its interface that is decorated withCullDistance - If
stageisSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified entry point has anOpExecutionModeinstruction that specifies a patch size withOutputVertices, the patch size must be greater than0and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize - If
stageisSHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction that specifies a maximum output vertex count that is greater than0and less than or equal toPhysicalDeviceLimits::maxGeometryOutputVertices - If
stageisSHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction that specifies an invocation count that is greater than0and less than or equal toPhysicalDeviceLimits::maxGeometryShaderInvocations - If
stageis a vertex processing stage, and the identified entry point writes toLayerfor any primitive, it must write the same value toLayerfor all vertices of a given primitive - If
stageis a vertex processing stage, and the identified entry point writes toViewportIndexfor any primitive, it must write the same value toViewportIndexfor all vertices of a given primitive - If
stageisSHADER_STAGE_FRAGMENT_BIT, the identified entry point must not include any output variables in its interface decorated withCullDistance - If
stageisSHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes toFragDepthin any execution path, it must write toFragDepthin all execution paths - If
stageisSHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes toFragStencilRefEXTin any execution path, it must write toFragStencilRefEXTin all execution paths - If
stageisSHADER_STAGE_MESH_BIT_NV, the identified entry point must have anOpExecutionModeinstruction that specifies a maximum output vertex count,OutputVertices, that is greater than0and less than or equal toPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputVertices - If
stageisSHADER_STAGE_MESH_BIT_NV, the identified entry point must have anOpExecutionModeinstruction that specifies a maximum output primitive count,OutputPrimitivesNV, that is greater than0and less than or equal toPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputPrimitives - If
flagshas thePIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTflag set, the subgroupSizeControl feature must be enabled - If
flagshas thePIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTflag set, the computeFullSubgroups feature must be enabled - If a
PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain,flagsmust not have thePIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTflag set - If a
PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain, the subgroupSizeControl feature must be enabled, andstagemust be a valid bit specified in requiredSubgroupSizeStages - If a
PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain andstageisSHADER_STAGE_COMPUTE_BIT, the local workgroup size of the shader must be less than or equal to the product ofPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT::requiredSubgroupSizeand maxComputeWorkgroupSubgroups - If a
PipelineShaderStageRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain, andflagshas thePIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTflag set, the local workgroup size in the X dimension of the pipeline must be a multiple ofPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT::requiredSubgroupSize - If
flagshas both thePIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTandPIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTflags set, the local workgroup size in the X dimension of the pipeline must be a multiple of maxSubgroupSize - If
flagshas thePIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTflag set andflagsdoes not have thePIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTflag set and noPipelineShaderStageRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain, the local workgroup size in the X dimension of the pipeline must be a multiple of subgroupSize
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofPipelineShaderStageCreateFlagBitsvaluesstagemust be a validShaderStageFlagBitsvaluemodulemust be a validShaderModulehandlepNamemust be a null-terminated UTF-8 string- If
pSpecializationInfois notNULL,pSpecializationInfomust be a valid pointer to a validSpecializationInfostructure
See Also
ComputePipelineCreateInfo, GraphicsPipelineCreateInfo,
GraphicsShaderGroupCreateInfoNV,
PipelineShaderStageCreateFlags,
RayTracingPipelineCreateInfoKHR,
RayTracingPipelineCreateInfoNV,
ShaderModule,
ShaderStageFlagBits,
SpecializationInfo, StructureType
Constructors
| PipelineShaderStageCreateInfo | |
Fields
| |
Instances
data ComputePipelineCreateInfo (es :: [Type]) Source #
VkComputePipelineCreateInfo - Structure specifying parameters of a newly created compute pipeline
Description
The parameters basePipelineHandle and basePipelineIndex are
described in more detail in
Pipeline Derivatives.
Valid Usage
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis -1,basePipelineHandlemust be a valid handle to a computePipeline
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleisNULL_HANDLE,basePipelineIndexmust be a valid index into the calling command’spCreateInfosparameter - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis not -1,basePipelineHandlemust beNULL_HANDLE - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleis notNULL_HANDLE,basePipelineIndexmust be -1 - The
stagemember ofstagemust beSHADER_STAGE_COMPUTE_BIT - The shader code for the entry point identified by
stageand the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter layoutmust be consistent with the layout of the compute shader specified instage- The number of resources in
layoutaccessible to the compute shader stage must be less than or equal toPhysicalDeviceLimits::maxPerStageResources flagsmust not includePIPELINE_CREATE_LIBRARY_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHRflagsmust not includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV- If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXTorPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineCompilerControlCreateInfoAMDorPipelineCreationFeedbackCreateInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofPipelineCreateFlagBitsvaluesstagemust be a validPipelineShaderStageCreateInfostructurelayoutmust be a validPipelineLayouthandle- Both of
basePipelineHandle, andlayoutthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
Pipeline,
PipelineCreateFlags,
PipelineLayout, PipelineShaderStageCreateInfo,
StructureType,
createComputePipelines
Constructors
| ComputePipelineCreateInfo | |
Fields
| |
Instances
data VertexInputBindingDescription Source #
VkVertexInputBindingDescription - Structure specifying vertex input binding description
Valid Usage (Implicit)
See Also
Constructors
| VertexInputBindingDescription | |
Fields
| |
Instances
data VertexInputAttributeDescription Source #
VkVertexInputAttributeDescription - Structure specifying vertex input attribute description
Valid Usage (Implicit)
See Also
Constructors
| VertexInputAttributeDescription | |
Fields
| |
Instances
data PipelineVertexInputStateCreateInfo (es :: [Type]) Source #
VkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state
Valid Usage
vertexBindingDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindings
vertexAttributeDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributes- For every
bindingspecified by each element ofpVertexAttributeDescriptions, aVertexInputBindingDescriptionmust exist inpVertexBindingDescriptionswith the same value ofbinding - All elements of
pVertexBindingDescriptionsmust describe distinct binding numbers - All elements of
pVertexAttributeDescriptionsmust describe distinct attribute locations
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofPipelineVertexInputDivisorStateCreateInfoEXT- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0- If
vertexBindingDescriptionCountis not0,pVertexBindingDescriptionsmust be a valid pointer to an array ofvertexBindingDescriptionCountvalidVertexInputBindingDescriptionstructures - If
vertexAttributeDescriptionCountis not0,pVertexAttributeDescriptionsmust be a valid pointer to an array ofvertexAttributeDescriptionCountvalidVertexInputAttributeDescriptionstructures
See Also
GraphicsPipelineCreateInfo,
GraphicsShaderGroupCreateInfoNV,
PipelineVertexInputStateCreateFlags,
StructureType,
VertexInputAttributeDescription, VertexInputBindingDescription
Constructors
| PipelineVertexInputStateCreateInfo | |
Fields
| |
Instances
data PipelineInputAssemblyStateCreateInfo Source #
VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state
Description
Restarting the assembly of primitives discards the most recent index
values if those elements formed an incomplete primitive, and restarts
the primitive assembly using the subsequent indices, but only assembling
the immediately following element through the end of the originally
specified elements. The primitive restart index value comparison is
performed before adding the vertexOffset value to the index value.
Valid Usage
- If
topologyisPRIMITIVE_TOPOLOGY_POINT_LIST,PRIMITIVE_TOPOLOGY_LINE_LIST,PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYorPRIMITIVE_TOPOLOGY_PATCH_LIST,primitiveRestartEnablemust beFALSE
- If the
geometry shaders
feature is not enabled,
topologymust not be any ofPRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYorPRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY - If the
tessellation shaders
feature is not enabled,
topologymust not bePRIMITIVE_TOPOLOGY_PATCH_LIST
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
pNextmust beNULLflagsmust be0topologymust be a validPrimitiveTopologyvalue
See Also
Bool32, GraphicsPipelineCreateInfo,
PipelineInputAssemblyStateCreateFlags,
PrimitiveTopology,
StructureType
Constructors
| PipelineInputAssemblyStateCreateInfo | |
Fields
| |
Instances
data PipelineTessellationStateCreateInfo (es :: [Type]) Source #
VkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state
Valid Usage
patchControlPointsmust be greater than zero and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofPipelineTessellationDomainOriginStateCreateInfo- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0
See Also
GraphicsPipelineCreateInfo,
GraphicsShaderGroupCreateInfoNV,
PipelineTessellationStateCreateFlags,
StructureType
Constructors
| PipelineTessellationStateCreateInfo | |
Fields
| |
Instances
data PipelineViewportStateCreateInfo (es :: [Type]) Source #
VkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state
Valid Usage
- If the
multiple viewports
feature is not enabled,
viewportCountmust be1
- If the
multiple viewports
feature is not enabled,
scissorCountmust be1 viewportCountmust be between1andPhysicalDeviceLimits::maxViewports, inclusivescissorCountmust be between1andPhysicalDeviceLimits::maxViewports, inclusivescissorCountandviewportCountmust be identical- The
xandymembers ofoffsetmember of any element ofpScissorsmust be greater than or equal to0 - Evaluation of (
offset.x+extent.width) must not cause a signed integer addition overflow for any element ofpScissors - Evaluation of (
offset.y+extent.height) must not cause a signed integer addition overflow for any element ofpScissors - If the
viewportWScalingEnablemember of aPipelineViewportWScalingStateCreateInfoNVstructure included in thepNextchain isTRUE, theviewportCountmember of thePipelineViewportWScalingStateCreateInfoNVstructure must be equal toviewportCount
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineViewportCoarseSampleOrderStateCreateInfoNV,PipelineViewportExclusiveScissorStateCreateInfoNV,PipelineViewportShadingRateImageStateCreateInfoNV,PipelineViewportSwizzleStateCreateInfoNV, orPipelineViewportWScalingStateCreateInfoNV - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0viewportCountmust be greater than0scissorCountmust be greater than0
See Also
GraphicsPipelineCreateInfo,
PipelineViewportStateCreateFlags,
Rect2D,
StructureType,
Viewport
Constructors
| PipelineViewportStateCreateInfo | |
Fields
| |
Instances
data PipelineRasterizationStateCreateInfo (es :: [Type]) Source #
VkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state
Description
The application can also add a
PipelineRasterizationStateRasterizationOrderAMD
structure to the pNext chain of a
PipelineRasterizationStateCreateInfo structure. This structure enables
selecting the rasterization order to use when rendering with the
corresponding graphics pipeline as described in
Rasterization Order.
Valid Usage
- If the
depth clamping
feature is not enabled,
depthClampEnablemust beFALSE
- If the
non-solid fill modes
feature is not enabled,
polygonModemust bePOLYGON_MODE_FILLorPOLYGON_MODE_FILL_RECTANGLE_NV - If the
VK_NV_fill_rectangleextension is not enabled,polygonModemust not bePOLYGON_MODE_FILL_RECTANGLE_NV
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineRasterizationConservativeStateCreateInfoEXT,PipelineRasterizationDepthClipStateCreateInfoEXT,PipelineRasterizationLineStateCreateInfoEXT,PipelineRasterizationStateRasterizationOrderAMD, orPipelineRasterizationStateStreamCreateInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0polygonModemust be a validPolygonModevaluecullModemust be a valid combination ofCullModeFlagBitsvaluesfrontFacemust be a validFrontFacevalue
See Also
Bool32,
CullModeFlags,
FrontFace, GraphicsPipelineCreateInfo,
PipelineRasterizationStateCreateFlags,
PolygonMode,
StructureType
Constructors
| PipelineRasterizationStateCreateInfo | |
Fields
| |
Instances
data PipelineMultisampleStateCreateInfo (es :: [Type]) Source #
VkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state
Description
Each bit in the sample mask is associated with a unique
sample index
as defined for the
coverage mask.
Each bit b for mask word w in the sample mask corresponds to sample
index i, where i = 32 × w + b. pSampleMask has a length equal to ⌈
rasterizationSamples / 32 ⌉ words.
If pSampleMask is NULL, it is treated as if the mask has all bits
set to 1.
Valid Usage
- If the
sample rate shading
feature is not enabled,
sampleShadingEnablemust beFALSE
- If the
alpha to one
feature is not enabled,
alphaToOneEnablemust beFALSE minSampleShadingmust be in the range [0,1]- If the
VK_NV_framebuffer_mixed_samplesextension is enabled, and if the subpass has any color attachments andrasterizationSamplesis greater than the number of color samples, thensampleShadingEnablemust beFALSE
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofPipelineCoverageModulationStateCreateInfoNV,PipelineCoverageReductionStateCreateInfoNV,PipelineCoverageToColorStateCreateInfoNV, orPipelineSampleLocationsStateCreateInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0rasterizationSamplesmust be a validSampleCountFlagBitsvalue- If
pSampleMaskis notNULL,pSampleMaskmust be a valid pointer to an array of \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)SampleMaskvalues
See Also
Bool32, GraphicsPipelineCreateInfo,
PipelineMultisampleStateCreateFlags,
SampleCountFlagBits,
SampleMask,
StructureType
Constructors
| PipelineMultisampleStateCreateInfo | |
Fields
| |
Instances
data PipelineColorBlendAttachmentState Source #
VkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state
Valid Usage
- If the
dual source blending
feature is not enabled,
srcColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
- If the
dual source blending
feature is not enabled,
dstColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If the
dual source blending
feature is not enabled,
srcAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If the
dual source blending
feature is not enabled,
dstAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If either of
colorBlendOporalphaBlendOpis an advanced blend operation, thencolorBlendOpmust equalalphaBlendOp - If
PhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlendisFALSEandcolorBlendOpis an advanced blend operation, thencolorBlendOpmust be the same for all attachments - If
PhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlendisFALSEandalphaBlendOpis an advanced blend operation, thenalphaBlendOpmust be the same for all attachments - If
PhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendAllOperationsisFALSE, thencolorBlendOpmust not beBLEND_OP_ZERO_EXT,BLEND_OP_SRC_EXT,BLEND_OP_DST_EXT,BLEND_OP_SRC_OVER_EXT,BLEND_OP_DST_OVER_EXT,BLEND_OP_SRC_IN_EXT,BLEND_OP_DST_IN_EXT,BLEND_OP_SRC_OUT_EXT,BLEND_OP_DST_OUT_EXT,BLEND_OP_SRC_ATOP_EXT,BLEND_OP_DST_ATOP_EXT,BLEND_OP_XOR_EXT,BLEND_OP_INVERT_EXT,BLEND_OP_INVERT_RGB_EXT,BLEND_OP_LINEARDODGE_EXT,BLEND_OP_LINEARBURN_EXT,BLEND_OP_VIVIDLIGHT_EXT,BLEND_OP_LINEARLIGHT_EXT,BLEND_OP_PINLIGHT_EXT,BLEND_OP_HARDMIX_EXT,BLEND_OP_PLUS_EXT,BLEND_OP_PLUS_CLAMPED_EXT,BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,BLEND_OP_PLUS_DARKER_EXT,BLEND_OP_MINUS_EXT,BLEND_OP_MINUS_CLAMPED_EXT,BLEND_OP_CONTRAST_EXT,BLEND_OP_INVERT_OVG_EXT,BLEND_OP_RED_EXT,BLEND_OP_GREEN_EXT, orBLEND_OP_BLUE_EXT - If
colorBlendOporalphaBlendOpis an advanced blend operation, thenSubpassDescription::colorAttachmentCountof the subpass this pipeline is compiled against must be less than or equal toPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendMaxColorAttachments
Valid Usage (Implicit)
srcColorBlendFactormust be a validBlendFactorvalue
dstColorBlendFactormust be a validBlendFactorvaluecolorBlendOpmust be a validBlendOpvaluesrcAlphaBlendFactormust be a validBlendFactorvaluedstAlphaBlendFactormust be a validBlendFactorvaluealphaBlendOpmust be a validBlendOpvaluecolorWriteMaskmust be a valid combination ofColorComponentFlagBitsvalues
See Also
BlendFactor,
BlendOp, Bool32,
ColorComponentFlags,
PipelineColorBlendStateCreateInfo
Constructors
| PipelineColorBlendAttachmentState | |
Fields
| |
Instances
data PipelineColorBlendStateCreateInfo (es :: [Type]) Source #
VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state
Description
Each element of the pAttachments array is a
PipelineColorBlendAttachmentState structure specifying per-target
blending state for each individual color attachment. If the
independent blending
feature is not enabled on the device, all
PipelineColorBlendAttachmentState elements in the pAttachments array
must be identical.
Valid Usage
- If the
independent blending
feature is not enabled, all elements of
pAttachmentsmust be identical
- If the
logic operations
feature is not enabled,
logicOpEnablemust beFALSE - If
logicOpEnableisTRUE,logicOpmust be a validLogicOpvalue
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofPipelineColorBlendAdvancedStateCreateInfoEXT- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0- If
attachmentCountis not0,pAttachmentsmust be a valid pointer to an array ofattachmentCountvalidPipelineColorBlendAttachmentStatestructures
See Also
Bool32, GraphicsPipelineCreateInfo,
LogicOp,
PipelineColorBlendAttachmentState,
PipelineColorBlendStateCreateFlags,
StructureType
Constructors
| PipelineColorBlendStateCreateInfo | |
Fields
| |
Instances
data PipelineDynamicStateCreateInfo Source #
VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state
Valid Usage
- Each element of
pDynamicStatesmust be unique
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
pNextmust beNULLflagsmust be0- If
dynamicStateCountis not0,pDynamicStatesmust be a valid pointer to an array ofdynamicStateCountvalidDynamicStatevalues
See Also
DynamicState,
GraphicsPipelineCreateInfo,
PipelineDynamicStateCreateFlags,
StructureType
Constructors
| PipelineDynamicStateCreateInfo | |
Fields
| |
Instances
| Show PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods showsPrec :: Int -> PipelineDynamicStateCreateInfo -> ShowS # show :: PipelineDynamicStateCreateInfo -> String # showList :: [PipelineDynamicStateCreateInfo] -> ShowS # | |
| FromCStruct PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline | |
| ToCStruct PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods withCStruct :: PipelineDynamicStateCreateInfo -> (Ptr PipelineDynamicStateCreateInfo -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineDynamicStateCreateInfo -> PipelineDynamicStateCreateInfo -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineDynamicStateCreateInfo -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineDynamicStateCreateInfo -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineDynamicStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods | |
data StencilOpState Source #
VkStencilOpState - Structure specifying stencil operation state
Valid Usage (Implicit)
See Also
Constructors
| StencilOpState | |
Fields
| |
Instances
data PipelineDepthStencilStateCreateInfo Source #
VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state
Valid Usage
- If the
depth bounds testing
feature is not enabled,
depthBoundsTestEnablemust beFALSE
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
pNextmust beNULLflagsmust be0depthCompareOpmust be a validCompareOpvaluefrontmust be a validStencilOpStatestructurebackmust be a validStencilOpStatestructure
See Also
Bool32,
CompareOp, GraphicsPipelineCreateInfo,
PipelineDepthStencilStateCreateFlags,
StencilOpState, StructureType
Constructors
| PipelineDepthStencilStateCreateInfo | |
Fields
| |
Instances
| Show PipelineDepthStencilStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods showsPrec :: Int -> PipelineDepthStencilStateCreateInfo -> ShowS # show :: PipelineDepthStencilStateCreateInfo -> String # showList :: [PipelineDepthStencilStateCreateInfo] -> ShowS # | |
| FromCStruct PipelineDepthStencilStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline | |
| ToCStruct PipelineDepthStencilStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods withCStruct :: PipelineDepthStencilStateCreateInfo -> (Ptr PipelineDepthStencilStateCreateInfo -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineDepthStencilStateCreateInfo -> PipelineDepthStencilStateCreateInfo -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineDepthStencilStateCreateInfo -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineDepthStencilStateCreateInfo -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineDepthStencilStateCreateInfo Source # | |
Defined in Vulkan.Core10.Pipeline Methods | |
data GraphicsPipelineCreateInfo (es :: [Type]) Source #
VkGraphicsPipelineCreateInfo - Structure specifying parameters of a newly created graphics pipeline
Description
The parameters basePipelineHandle and basePipelineIndex are
described in more detail in
Pipeline Derivatives.
If any shader stage fails to compile, the compile log will be reported
back to the application, and
ERROR_INVALID_SHADER_NV will be generated.
Valid Usage
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis -1,basePipelineHandlemust be a valid handle to a graphicsPipeline
- If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleisNULL_HANDLE,basePipelineIndexmust be a valid index into the calling command’spCreateInfosparameter - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineIndexis not -1,basePipelineHandlemust beNULL_HANDLE - If
flagscontains thePIPELINE_CREATE_DERIVATIVE_BITflag, andbasePipelineHandleis notNULL_HANDLE,basePipelineIndexmust be -1 - The
stagemember of each element ofpStagesmust be unique - The geometric shader stages provided in
pStagesmust be either from the mesh shading pipeline (stageisSHADER_STAGE_TASK_BIT_NVorSHADER_STAGE_MESH_BIT_NV) or from the primitive shading pipeline (stageisSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT, orSHADER_STAGE_GEOMETRY_BIT) - The
stagemember of one element ofpStagesmust be eitherSHADER_STAGE_VERTEX_BITorSHADER_STAGE_MESH_BIT_NV - The
stagemember of each element ofpStagesmust not beSHADER_STAGE_COMPUTE_BIT - If
pStagesincludes a tessellation control shader stage, it must include a tessellation evaluation shader stage - If
pStagesincludes a tessellation evaluation shader stage, it must include a tessellation control shader stage - If
pStagesincludes a tessellation control shader stage and a tessellation evaluation shader stage,pTessellationStatemust be a valid pointer to a validPipelineTessellationStateCreateInfostructure - If
pStagesincludes tessellation shader stages, the shader code of at least one stage must contain anOpExecutionModeinstruction that specifies the type of subdivision in the pipeline - If
pStagesincludes tessellation shader stages, and the shader code of both stages contain anOpExecutionModeinstruction that specifies the type of subdivision in the pipeline, they must both specify the same subdivision mode - If
pStagesincludes tessellation shader stages, the shader code of at least one stage must contain anOpExecutionModeinstruction that specifies the output patch size in the pipeline - If
pStagesincludes tessellation shader stages, and the shader code of both contain anOpExecutionModeinstruction that specifies the out patch size in the pipeline, they must both specify the same patch size - If
pStagesincludes tessellation shader stages, thetopologymember ofpInputAssemblymust bePRIMITIVE_TOPOLOGY_PATCH_LIST - If the
topologymember ofpInputAssemblyisPRIMITIVE_TOPOLOGY_PATCH_LIST,pStagesmust include tessellation shader stages - If
pStagesincludes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain anOpExecutionModeinstruction that specifies an input primitive type that is compatible with the primitive topology specified inpInputAssembly - If
pStagesincludes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain anOpExecutionModeinstruction that specifies an input primitive type that is compatible with the primitive topology that is output by the tessellation stages - If
pStagesincludes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated withPrimitiveID, then the geometry shader code must write to a matching output variable, decorated withPrimitiveID, in all execution paths - If
pStagesincludes a fragment shader stage, its shader code must not read from any input attachment that is defined asATTACHMENT_UNUSEDinsubpass - The shader code for the entry points identified by
pStages, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter - If rasterization is not disabled and
subpassuses a depth/stencil attachment inrenderPassthat has a layout ofIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALorIMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMALin theAttachmentReferencedefined bysubpass, thedepthWriteEnablemember ofpDepthStencilStatemust beFALSE - If rasterization is not disabled and
subpassuses a depth/stencil attachment inrenderPassthat has a layout ofIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALorIMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMALin theAttachmentReferencedefined bysubpass, thefailOp,passOpanddepthFailOpmembers of each of thefrontandbackmembers ofpDepthStencilStatemust beSTENCIL_OP_KEEP - If rasterization is not disabled and the subpass uses color
attachments, then for each color attachment in the subpass the
blendEnablemember of the corresponding element of thepAttachmentmember ofpColorBlendStatemust beFALSEif the attached image’s format features does not containFORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT - If rasterization is not disabled and the subpass uses color
attachments, the
attachmentCountmember ofpColorBlendStatemust be equal to thecolorAttachmentCountused to createsubpass - If no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_VIEWPORT, thepViewportsmember ofpViewportStatemust be a valid pointer to an array ofpViewportState->viewportCountvalidViewportstructures - If no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_SCISSOR, thepScissorsmember ofpViewportStatemust be a valid pointer to an array ofpViewportState->scissorCountRect2Dstructures - If the wide lines feature is not enabled, and no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_LINE_WIDTH, thelineWidthmember ofpRasterizationStatemust be1.0 - If the
rasterizerDiscardEnablemember ofpRasterizationStateisFALSE,pViewportStatemust be a valid pointer to a validPipelineViewportStateCreateInfostructure - If the
rasterizerDiscardEnablemember ofpRasterizationStateisFALSE,pMultisampleStatemust be a valid pointer to a validPipelineMultisampleStateCreateInfostructure - If the
rasterizerDiscardEnablemember ofpRasterizationStateisFALSE, andsubpassuses a depth/stencil attachment,pDepthStencilStatemust be a valid pointer to a validPipelineDepthStencilStateCreateInfostructure - If the
rasterizerDiscardEnablemember ofpRasterizationStateisFALSE, andsubpassuses color attachments,pColorBlendStatemust be a valid pointer to a validPipelineColorBlendStateCreateInfostructure - If the depth bias clamping feature is not enabled, no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_DEPTH_BIAS, and thedepthBiasEnablemember ofpRasterizationStateisTRUE, thedepthBiasClampmember ofpRasterizationStatemust be0.0 - If the
VK_EXT_depth_range_unrestrictedextension is not enabled and no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_DEPTH_BOUNDS, and thedepthBoundsTestEnablemember ofpDepthStencilStateisTRUE, theminDepthBoundsandmaxDepthBoundsmembers ofpDepthStencilStatemust be between0.0and1.0, inclusive - If no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and thesampleLocationsEnablemember of aPipelineSampleLocationsStateCreateInfoEXTstructure included in thepNextchain ofpMultisampleStateisTRUE,sampleLocationsInfo.sampleLocationGridSize.widthmust evenly divideMultisamplePropertiesEXT::sampleLocationGridSize.widthas returned bygetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equalingrasterizationSamples - If no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and thesampleLocationsEnablemember of aPipelineSampleLocationsStateCreateInfoEXTstructure included in thepNextchain ofpMultisampleStateisTRUE,sampleLocationsInfo.sampleLocationGridSize.heightmust evenly divideMultisamplePropertiesEXT::sampleLocationGridSize.heightas returned bygetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equalingrasterizationSamples - If no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and thesampleLocationsEnablemember of aPipelineSampleLocationsStateCreateInfoEXTstructure included in thepNextchain ofpMultisampleStateisTRUE,sampleLocationsInfo.sampleLocationsPerPixelmust equalrasterizationSamples - If the
sampleLocationsEnablemember of aPipelineSampleLocationsStateCreateInfoEXTstructure included in thepNextchain ofpMultisampleStateisTRUE, the fragment shader code must not statically use the extended instructionInterpolateAtSample layoutmust be consistent with all shaders specified inpStages- If neither the
VK_AMD_mixed_attachment_samplesnor theVK_NV_framebuffer_mixed_samplesextensions are enabled, and ifsubpassuses color and/or depth/stencil attachments, then therasterizationSamplesmember ofpMultisampleStatemust be the same as the sample count for those subpass attachments - If the
VK_AMD_mixed_attachment_samplesextension is enabled, and ifsubpassuses color and/or depth/stencil attachments, then therasterizationSamplesmember ofpMultisampleStatemust equal the maximum of the sample counts of those subpass attachments - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, and ifsubpasshas a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then therasterizationSamplesmember ofpMultisampleStatemust be the same as the sample count of the depth/stencil attachment - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, and ifsubpasshas any color attachments, then therasterizationSamplesmember ofpMultisampleStatemust be greater than or equal to the sample count for those subpass attachments - If the
VK_NV_coverage_reduction_modeextension is enabled, the coverage reduction mode specified byPipelineCoverageReductionStateCreateInfoNV::coverageReductionMode, therasterizationSamplesmember ofpMultisampleStateand the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned bygetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - If
subpassdoes not use any color and/or depth/stencil attachments, then therasterizationSamplesmember ofpMultisampleStatemust follow the rules for a zero-attachment subpass subpassmust be a valid subpass withinrenderPass- If the
renderPasshas multiview enabled andsubpasshas more than one bit set in the view mask andmultiviewTessellationShaderis not enabled, thenpStagesmust not include tessellation shaders - If the
renderPasshas multiview enabled andsubpasshas more than one bit set in the view mask andmultiviewGeometryShaderis not enabled, thenpStagesmust not include a geometry shader - If the
renderPasshas multiview enabled andsubpasshas more than one bit set in the view mask, shaders in the pipeline must not write to theLayerbuilt-in output - If the
renderPasshas multiview enabled, then all shaders must not include variables decorated with theLayerbuilt-in decoration in their interfaces flagsmust not contain thePIPELINE_CREATE_DISPATCH_BASEflag- If
pStagesincludes a fragment shader stage and an input attachment was referenced by anaspectMaskatrenderPasscreation time, its shader code must only read from the aspects that were specified for that input attachment - The number of resources in
layoutaccessible to each shader stage that is used by the pipeline must be less than or equal toPhysicalDeviceLimits::maxPerStageResources - If no element of the
pDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_VIEWPORT_W_SCALING_NV, and theviewportWScalingEnablemember of aPipelineViewportWScalingStateCreateInfoNVstructure, included in thepNextchain ofpViewportState, isTRUE, thepViewportWScalingsmember of thePipelineViewportWScalingStateCreateInfoNVmust be a pointer to an array ofPipelineViewportWScalingStateCreateInfoNV::viewportCountvalidViewportWScalingNVstructures - If
pStagesincludes a vertex shader stage,pVertexInputStatemust be a valid pointer to a validPipelineVertexInputStateCreateInfostructure - If
pStagesincludes a vertex shader stage,pInputAssemblyStatemust be a valid pointer to a validPipelineInputAssemblyStateCreateInfostructure - The
Xfbexecution mode can be specified by only one shader stage inpStages - If any shader stage in
pStagesspecifiesXfbexecution mode it must be the last vertex processing stage - If a
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStreamvalue other than zero is specified, all variables in the output interface of the entry point being compiled decorated withPosition,PointSize,ClipDistance, orCullDistancemust all be decorated with identicalStreamvalues that match therasterizationStream - If
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStreamis zero, or not specified, all variables in the output interface of the entry point being compiled decorated withPosition,PointSize,ClipDistance, orCullDistancemust all be decorated with aStreamvalue of zero, or must not specify theStreamdecoration - If the last vertex processing stage is a geometry shader, and that
geometry shader uses the
GeometryStreamscapability, thenPhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreamsfeature must be enabled - If there are any mesh shader stages in the pipeline there must not
be any shader stage in the pipeline with a
Xfbexecution mode - If the
lineRasterizationModemember of aPipelineRasterizationLineStateCreateInfoEXTstructure included in thepNextchain ofpRasterizationStateisLINE_RASTERIZATION_MODE_BRESENHAM_EXTorLINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXTand if rasterization is enabled, then thealphaToCoverageEnable,alphaToOneEnable, andsampleShadingEnablemembers ofpMultisampleStatemust all beFALSE - If the
stippledLineEnablemember ofPipelineRasterizationLineStateCreateInfoEXTisTRUEand no element of thepDynamicStatesmember ofpDynamicStateisDYNAMIC_STATE_LINE_STIPPLE_EXT, then thelineStippleFactormember ofPipelineRasterizationLineStateCreateInfoEXTmust be in the range [1,256] flagsmust not includePIPELINE_CREATE_LIBRARY_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRflagsmust not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR- If
flagsincludesPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then the ::deviceGeneratedCommands feature must be enabled - If
flagsincludesPIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then all stages must not specifyXfbexecution mode - If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXTorPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofGraphicsPipelineShaderGroupsCreateInfoNV,PipelineCompilerControlCreateInfoAMD,PipelineCreationFeedbackCreateInfoEXT,PipelineDiscardRectangleStateCreateInfoEXT, orPipelineRepresentativeFragmentTestStateCreateInfoNV - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofPipelineCreateFlagBitsvaluespStagesmust be a valid pointer to an array ofstageCountvalidPipelineShaderStageCreateInfostructurespRasterizationStatemust be a valid pointer to a validPipelineRasterizationStateCreateInfostructure- If
pDynamicStateis notNULL,pDynamicStatemust be a valid pointer to a validPipelineDynamicStateCreateInfostructure layoutmust be a validPipelineLayouthandlerenderPassmust be a validRenderPasshandlestageCountmust be greater than0- Each of
basePipelineHandle,layout, andrenderPassthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
Pipeline, PipelineColorBlendStateCreateInfo,
PipelineCreateFlags,
PipelineDepthStencilStateCreateInfo, PipelineDynamicStateCreateInfo,
PipelineInputAssemblyStateCreateInfo,
PipelineLayout,
PipelineMultisampleStateCreateInfo,
PipelineRasterizationStateCreateInfo, PipelineShaderStageCreateInfo,
PipelineTessellationStateCreateInfo,
PipelineVertexInputStateCreateInfo, PipelineViewportStateCreateInfo,
RenderPass,
StructureType,
createGraphicsPipelines
Constructors
| GraphicsPipelineCreateInfo | |
Fields
| |