vulkan-3.0.0.0: Bindings to the Vulkan graphics API.

Safe HaskellNone
LanguageHaskell2010

Graphics.Vulkan.Core10.Pipeline

Synopsis

Documentation

createGraphicsPipelines :: PokeChain a => Device -> PipelineCache -> ("createInfos" ::: Vector (GraphicsPipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ("pipelines" ::: Vector Pipeline) Source #

vkCreateGraphicsPipelines - Create graphics pipelines

Parameters

  • Device is the logical device that creates the graphics pipelines.
  • PipelineCache is either NULL_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.
  • createInfoCount is the length of the pCreateInfos and pPipelines arrays.
  • pCreateInfos is a pointer to an array of GraphicsPipelineCreateInfo structures.
  • pAllocator controls host memory allocation as described in the Memory Allocation chapter.
  • pPipelines is a pointer to an array of Pipeline handles 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 Flags member of any element of pCreateInfos contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element

Valid Usage (Implicit)

Return Codes

Success
Failure

See Also

AllocationCallbacks, Device, GraphicsPipelineCreateInfo, Pipeline, PipelineCache

withGraphicsPipelines :: PokeChain a => Device -> PipelineCache -> Vector (GraphicsPipelineCreateInfo a) -> Maybe AllocationCallbacks -> (Vector Pipeline -> IO r) -> IO r Source #

A safe wrapper for createGraphicsPipelines and destroyPipeline using bracket

The allocated value must not be returned from the provided computation

createComputePipelines :: PokeChain a => Device -> PipelineCache -> ("createInfos" ::: Vector (ComputePipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ("pipelines" ::: Vector Pipeline) Source #

vkCreateComputePipelines - Creates a new compute pipeline object

Parameters

  • Device is the logical device that creates the compute pipelines.
  • PipelineCache is either NULL_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.
  • createInfoCount is the length of the pCreateInfos and pPipelines arrays.
  • pCreateInfos is a pointer to an array of ComputePipelineCreateInfo structures.
  • pAllocator controls host memory allocation as described in the Memory Allocation chapter.
  • pPipelines is a pointer to an array of Pipeline handles in which the resulting compute pipeline objects are returned.

Valid Usage

  • If the Flags member of any element of pCreateInfos contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element

Valid Usage (Implicit)

Return Codes

Success
Failure

See Also

AllocationCallbacks, ComputePipelineCreateInfo, Device, Pipeline, PipelineCache

withComputePipelines :: PokeChain a => Device -> PipelineCache -> Vector (ComputePipelineCreateInfo a) -> Maybe AllocationCallbacks -> (Vector Pipeline -> IO r) -> IO r Source #

A safe wrapper for createComputePipelines and destroyPipeline using bracket

The allocated value must not be returned from the provided computation

destroyPipeline :: Device -> Pipeline -> ("allocator" ::: Maybe AllocationCallbacks) -> IO () Source #

vkDestroyPipeline - Destroy a pipeline object

Parameters

  • Device is the logical device that destroys the pipeline.
  • Pipeline is the handle of the pipeline to destroy.
  • pAllocator controls host memory allocation as described in the Memory Allocation chapter.

Valid Usage

  • All submitted commands that refer to Pipeline must have completed execution

Valid Usage (Implicit)

Host Synchronization

  • Host access to Pipeline must be externally synchronized

See Also

AllocationCallbacks, Device, Pipeline

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 constantID specialization constant declared in a shader, size must match the byte size of the constantID. If the specialization constant is of type boolean, size must be the byte size of Bool32

See Also

SpecializationInfo

Constructors

SpecializationMapEntry 

Fields

  • constantID :: Word32

    constantID is the ID of the specialization constant in SPIR-V.

  • offset :: Word32

    offset is the byte offset of the specialization constant value within the supplied data buffer.

  • size :: Word64

    size is the byte size of the specialization constant value within the supplied data buffer.

Instances
Show SpecializationMapEntry Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Storable SpecializationMapEntry Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

FromCStruct SpecializationMapEntry Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

ToCStruct SpecializationMapEntry Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Zero SpecializationMapEntry Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data SpecializationInfo Source #

VkSpecializationInfo - Structure specifying specialization info

Description

pMapEntries is a pointer to a SpecializationMapEntry structure.

Valid Usage

  • The offset member of each element of pMapEntries must be less than dataSize
  • The size member of each element of pMapEntries must be less than or equal to dataSize minus offset

Valid Usage (Implicit)

  • If mapEntryCount is not 0, pMapEntries must be a valid pointer to an array of mapEntryCount valid SpecializationMapEntry structures
  • If dataSize is not 0, pData must be a valid pointer to an array of dataSize bytes

See Also

PipelineShaderStageCreateInfo, SpecializationMapEntry

Constructors

SpecializationInfo 

Fields

data PipelineShaderStageCreateInfo (es :: [Type]) Source #

VkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage

Valid Usage

Valid Usage (Implicit)

See Also

ComputePipelineCreateInfo, GraphicsPipelineCreateInfo, PipelineShaderStageCreateFlags, RayTracingPipelineCreateInfoNV, ShaderModule, ShaderStageFlagBits, SpecializationInfo, StructureType

Constructors

PipelineShaderStageCreateInfo 

Fields

Instances
Extensible PipelineShaderStageCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineShaderStageCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineShaderStageCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineShaderStageCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineShaderStageCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

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

Valid Usage (Implicit)

See Also

Pipeline, PipelineCreateFlags, PipelineLayout, PipelineShaderStageCreateInfo, StructureType, createComputePipelines

Constructors

ComputePipelineCreateInfo 

Fields

Instances
Extensible ComputePipelineCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (ComputePipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (ComputePipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (ComputePipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (ComputePipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data VertexInputBindingDescription Source #

VkVertexInputBindingDescription - Structure specifying vertex input binding description

Valid Usage (Implicit)

See Also

PipelineVertexInputStateCreateInfo, VertexInputRate

Constructors

VertexInputBindingDescription 

Fields

Instances
Show VertexInputBindingDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Storable VertexInputBindingDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

FromCStruct VertexInputBindingDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

ToCStruct VertexInputBindingDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Zero VertexInputBindingDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data VertexInputAttributeDescription Source #

VkVertexInputAttributeDescription - Structure specifying vertex input attribute description

Valid Usage (Implicit)

See Also

Format, PipelineVertexInputStateCreateInfo

Constructors

VertexInputAttributeDescription 

Fields

Instances
Show VertexInputAttributeDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Storable VertexInputAttributeDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

FromCStruct VertexInputAttributeDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

ToCStruct VertexInputAttributeDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Zero VertexInputAttributeDescription Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data PipelineVertexInputStateCreateInfo (es :: [Type]) Source #

VkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state

Valid Usage

  • vertexBindingDescriptionCount must be less than or equal to PhysicalDeviceLimits::maxVertexInputBindings
  • vertexAttributeDescriptionCount must be less than or equal to PhysicalDeviceLimits::maxVertexInputAttributes
  • For every binding specified by each element of pVertexAttributeDescriptions, a VertexInputBindingDescription must exist in pVertexBindingDescriptions with the same value of binding
  • All elements of pVertexBindingDescriptions must describe distinct binding numbers
  • All elements of pVertexAttributeDescriptions must describe distinct attribute locations

Valid Usage (Implicit)

  • pNext must be NULL or a pointer to a valid instance of PipelineVertexInputDivisorStateCreateInfoEXT
  • The sType value of each struct in the pNext chain must be unique
  • Flags must be 0
  • If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must be a valid pointer to an array of vertexBindingDescriptionCount valid VertexInputBindingDescription structures
  • If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must be a valid pointer to an array of vertexAttributeDescriptionCount valid VertexInputAttributeDescription structures

See Also

GraphicsPipelineCreateInfo, PipelineVertexInputStateCreateFlags, StructureType, VertexInputAttributeDescription, VertexInputBindingDescription

Constructors

PipelineVertexInputStateCreateInfo 

Fields

Instances
Extensible PipelineVertexInputStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineVertexInputStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineVertexInputStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineVertexInputStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

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

Valid Usage (Implicit)

See Also

Bool32, GraphicsPipelineCreateInfo, PipelineInputAssemblyStateCreateFlags, PrimitiveTopology, StructureType

Constructors

PipelineInputAssemblyStateCreateInfo 

Fields

Instances
Show PipelineInputAssemblyStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Storable PipelineInputAssemblyStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

FromCStruct PipelineInputAssemblyStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

ToCStruct PipelineInputAssemblyStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Zero PipelineInputAssemblyStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data PipelineTessellationStateCreateInfo (es :: [Type]) Source #

VkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state

Valid Usage

  • patchControlPoints must be greater than zero and less than or equal to PhysicalDeviceLimits::maxTessellationPatchSize

Valid Usage (Implicit)

See Also

GraphicsPipelineCreateInfo, PipelineTessellationStateCreateFlags, StructureType

Constructors

PipelineTessellationStateCreateInfo 

Fields

Instances
Extensible PipelineTessellationStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineTessellationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineTessellationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineTessellationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineTessellationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

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, scissorCount must be 1
  • viewportCount must be between 1 and PhysicalDeviceLimits::maxViewports, inclusive
  • scissorCount must be between 1 and PhysicalDeviceLimits::maxViewports, inclusive
  • scissorCount and viewportCount must be identical
  • The x and y members of offset member of any element of pScissors must be greater than or equal to 0
  • Evaluation of (offset.x + extent.width) must not cause a signed integer addition overflow for any element of pScissors
  • Evaluation of (offset.y + extent.height) must not cause a signed integer addition overflow for any element of pScissors
  • If the viewportWScalingEnable member of a PipelineViewportWScalingStateCreateInfoNV structure included in the pNext chain is TRUE, the viewportCount member of the PipelineViewportWScalingStateCreateInfoNV structure must be equal to viewportCount

Valid Usage (Implicit)

See Also

GraphicsPipelineCreateInfo, PipelineViewportStateCreateFlags, Rect2D, StructureType, Viewport

Constructors

PipelineViewportStateCreateInfo 

Fields

Instances
Extensible PipelineViewportStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineViewportStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineViewportStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineViewportStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineViewportStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

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

Valid Usage (Implicit)

See Also

Bool32, CullModeFlags, FrontFace, GraphicsPipelineCreateInfo, PipelineRasterizationStateCreateFlags, PolygonMode, StructureType

Constructors

PipelineRasterizationStateCreateInfo 

Fields

Instances
Extensible PipelineRasterizationStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineRasterizationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineRasterizationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineRasterizationStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data PipelineMultisampleStateCreateInfo (es :: [Type]) Source #

VkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state

Valid Usage

  • If the alpha to one feature is not enabled, alphaToOneEnable must be FALSE
  • minSampleShading must be in the range [0,1]
  • If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the subpass has any color attachments and rasterizationSamples is greater than the number of color samples, then sampleShadingEnable must be FALSE

Valid Usage (Implicit)

See Also

Bool32, GraphicsPipelineCreateInfo, PipelineMultisampleStateCreateFlags, SampleCountFlagBits, SampleMask, StructureType

Constructors

PipelineMultisampleStateCreateInfo 

Fields

Instances
Extensible PipelineMultisampleStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineMultisampleStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineMultisampleStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineMultisampleStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data PipelineColorBlendAttachmentState Source #

VkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state

Valid Usage

Valid Usage (Implicit)

See Also

BlendFactor, BlendOp, Bool32, ColorComponentFlags, PipelineColorBlendStateCreateInfo

Constructors

PipelineColorBlendAttachmentState 

Fields

Instances
Show PipelineColorBlendAttachmentState Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Storable PipelineColorBlendAttachmentState Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

FromCStruct PipelineColorBlendAttachmentState Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

ToCStruct PipelineColorBlendAttachmentState Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Zero PipelineColorBlendAttachmentState Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

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

Valid Usage (Implicit)

See Also

Bool32, GraphicsPipelineCreateInfo, LogicOp, PipelineColorBlendAttachmentState, PipelineColorBlendStateCreateFlags, StructureType

Constructors

PipelineColorBlendStateCreateInfo 

Fields

Instances
Extensible PipelineColorBlendStateCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (PipelineColorBlendStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (PipelineColorBlendStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (PipelineColorBlendStateCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

data PipelineDynamicStateCreateInfo Source #

VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state

Valid Usage

  • Each element of pDynamicStates must be unique

Valid Usage (Implicit)

  • pNext must be NULL
  • Flags must be 0
  • If dynamicStateCount is not 0, pDynamicStates must be a valid pointer to an array of dynamicStateCount valid DynamicState values

See Also

DynamicState, GraphicsPipelineCreateInfo, PipelineDynamicStateCreateFlags, StructureType

Constructors

PipelineDynamicStateCreateInfo 

Fields

data StencilOpState Source #

VkStencilOpState - Structure specifying stencil operation state

Valid Usage (Implicit)

See Also

CompareOp, PipelineDepthStencilStateCreateInfo, StencilOp

Constructors

StencilOpState 

Fields

data PipelineDepthStencilStateCreateInfo Source #

VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state

Valid Usage

Valid Usage (Implicit)

See Also

Bool32, CompareOp, GraphicsPipelineCreateInfo, PipelineDepthStencilStateCreateFlags, StencilOpState, StructureType

Constructors

PipelineDepthStencilStateCreateInfo 

Fields

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 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, and basePipelineIndex is not -1, basePipelineHandle must be NULL_HANDLE
  • If Flags contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineHandle is not NULL_HANDLE, basePipelineIndex must be -1
  • The stage member of each element of pStages must be unique
  • The geometric shader stages provided in pStages must be either from the mesh shading pipeline (stage is SHADER_STAGE_TASK_BIT_NV or SHADER_STAGE_MESH_BIT_NV) 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).
  • The stage member of one element of pStages must be either SHADER_STAGE_VERTEX_BIT or SHADER_STAGE_MESH_BIT_NV.
  • The stage member of each element of pStages must not be SHADER_STAGE_COMPUTE_BIT
  • If pStages includes a tessellation control shader stage, it must include a tessellation evaluation shader stage
  • If pStages includes a tessellation evaluation shader stage, it must include a tessellation control shader stage
  • If pStages includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must be a valid pointer to a valid PipelineTessellationStateCreateInfo structure
  • If pStages includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode instruction that specifies the type of subdivision in the pipeline
  • If pStages includes tessellation shader stages, and the shader code of both stages contain an OpExecutionMode instruction that specifies the type of subdivision in the pipeline, they must both specify the same subdivision mode
  • If pStages includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode instruction that specifies the output patch size in the pipeline
  • If pStages includes tessellation shader stages, and the shader code of both contain an OpExecutionMode instruction that specifies the out patch size in the pipeline, they must both specify the same patch size
  • If pStages includes tessellation shader stages, the topology member of pInputAssembly must be PRIMITIVE_TOPOLOGY_PATCH_LIST
  • If the topology member of pInputAssembly is PRIMITIVE_TOPOLOGY_PATCH_LIST, pStages must include tessellation shader stages
  • If pStages includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain an OpExecutionMode instruction that specifies an input primitive type that is compatible with the primitive topology specified in pInputAssembly
  • If pStages includes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain an OpExecutionMode instruction that specifies an input primitive type that is compatible with the primitive topology that is output by the tessellation stages
  • If pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with PrimitiveID, then the geometry shader code must write to a matching output variable, decorated with PrimitiveID, in all execution paths
  • If pStages includes a fragment shader stage, its shader code must not read from any input attachment that is defined as ATTACHMENT_UNUSED in subpass
  • The shader code for the entry points identified by pStages, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter
  • If rasterization is not disabled and subpass uses a depth/stencil attachment in RenderPass that has a layout of IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL in the AttachmentReference defined by subpass, the depthWriteEnable member of pDepthStencilState must be FALSE
  • If rasterization is not disabled and subpass uses a depth/stencil attachment in RenderPass that has a layout of IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL in the AttachmentReference defined by subpass, the failOp, passOp and depthFailOp members of each of the front and back members of pDepthStencilState must be STENCIL_OP_KEEP
  • If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the blendEnable member of the corresponding element of the pAttachment member of pColorBlendState must be FALSE if the attached image’s format features does not contain FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT.
  • If rasterization is not disabled and the subpass uses color attachments, the attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpass
  • If no element of the pDynamicStates member of pDynamicState is DYNAMIC_STATE_VIEWPORT, the pViewports member of pViewportState must be a valid pointer to an array of pViewportState->viewportCount valid Viewport structures
  • If no element of the pDynamicStates member of pDynamicState is DYNAMIC_STATE_SCISSOR, the pScissors member of pViewportState must be a valid pointer to an array of pViewportState->scissorCount Rect2D structures
  • If the wide lines 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 rasterizerDiscardEnable member of pRasterizationState is FALSE, pViewportState must be a valid pointer to a valid PipelineViewportStateCreateInfo structure
  • If the rasterizerDiscardEnable member of pRasterizationState is FALSE, pMultisampleState must be a valid pointer to a valid PipelineMultisampleStateCreateInfo structure
  • If the rasterizerDiscardEnable member of pRasterizationState is FALSE, and subpass uses a depth/stencil attachment, pDepthStencilState must be a valid pointer to a valid PipelineDepthStencilStateCreateInfo structure
  • If the rasterizerDiscardEnable member of pRasterizationState is FALSE, and subpass uses color attachments, pColorBlendState must be a valid pointer to a valid PipelineColorBlendStateCreateInfo structure
  • If the depth bias clamping 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 https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#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 no element of the pDynamicStates member of pDynamicState is DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the sampleLocationsEnable member of a PipelineSampleLocationsStateCreateInfoEXT structure included in the pNext chain of pMultisampleState is TRUE, sampleLocationsInfo.sampleLocationGridSize.width must evenly divide MultisamplePropertiesEXT::sampleLocationGridSize.width as returned by getPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples
  • If no element of the pDynamicStates member of pDynamicState is DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the sampleLocationsEnable member of a PipelineSampleLocationsStateCreateInfoEXT structure included in the pNext chain of pMultisampleState is TRUE, sampleLocationsInfo.sampleLocationGridSize.height must evenly divide MultisamplePropertiesEXT::sampleLocationGridSize.height as returned by getPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples
  • If no element of the pDynamicStates member of pDynamicState is DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the sampleLocationsEnable member of a PipelineSampleLocationsStateCreateInfoEXT structure included in the pNext chain of pMultisampleState is TRUE, sampleLocationsInfo.sampleLocationsPerPixel must equal rasterizationSamples
  • If 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
  • layout must be consistent with all shaders specified in pStages
  • If neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, and if 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 VK_AMD_mixed_attachment_samples extension is enabled, 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 the VK_NV_framebuffer_mixed_samples extension is enabled, 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 VK_NV_framebuffer_mixed_samples extension is enabled, 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 VK_NV_coverage_reduction_mode extension is enabled, 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 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
  • subpass must be a valid subpass within RenderPass
  • If the RenderPass has multiview enabled and subpass has more than one bit set in the view mask and multiviewTessellationShader is not enabled, then pStages must not include tessellation shaders.
  • If the RenderPass has multiview enabled and subpass has more than one bit set in the view mask and multiviewGeometryShader is not enabled, then pStages must not include a geometry shader.
  • If the RenderPass has multiview enabled and subpass has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer built-in output
  • If the RenderPass has multiview enabled, then all shaders must not include variables decorated with the Layer built-in decoration in their interfaces.
  • Flags must not contain the PIPELINE_CREATE_DISPATCH_BASE flag.
  • If pStages includes a fragment shader stage and an input attachment was referenced by the RenderPassInputAttachmentAspectCreateInfo at RenderPass create time, its shader code must not read from any aspect that was not specified in the aspectMask of the corresponding InputAttachmentAspectReference structure.
  • The number of resources in layout accessible to each shader stage that is used by the pipeline must be less than or equal to PhysicalDeviceLimits::maxPerStageResources
  • If 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 pStages includes a vertex shader stage, pVertexInputState must be a valid pointer to a valid PipelineVertexInputStateCreateInfo structure
  • If pStages includes a vertex shader stage, pInputAssemblyState must be a valid pointer to a valid PipelineInputAssemblyStateCreateInfo structure
  • The Xfb execution mode can be specified by only one shader stage in pStages
  • If any shader stage in pStages specifies Xfb execution mode it must be the last vertex processing stage
  • If 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 all be decorated with identical Stream values that match the rasterizationStream
  • If 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 all be decorated with a Stream value of zero, or must not specify the Stream decoration
  • If the last vertex processing stage is a geometry shader, and that geometry shader uses the GeometryStreams capability, then PhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreams feature 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 Xfb execution mode.
  • If the lineRasterizationMode member of a PipelineRasterizationLineStateCreateInfoEXT structure included in the pNext chain of pRasterizationState is LINE_RASTERIZATION_MODE_BRESENHAM_EXT or LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT and if rasterization is enabled, then the alphaToCoverageEnable, alphaToOneEnable, and sampleShadingEnable members of pMultisampleState must all be FALSE
  • If the stippledLineEnable member of PipelineRasterizationLineStateCreateInfoEXT is TRUE and no element of the pDynamicStates member of pDynamicState is DYNAMIC_STATE_LINE_STIPPLE_EXT, then the lineStippleFactor member of PipelineRasterizationLineStateCreateInfoEXT must be in the range [1,256]

Valid Usage (Implicit)

See Also

Pipeline, PipelineColorBlendStateCreateInfo, PipelineCreateFlags, PipelineDepthStencilStateCreateInfo, PipelineDynamicStateCreateInfo, PipelineInputAssemblyStateCreateInfo, PipelineLayout, PipelineMultisampleStateCreateInfo, PipelineRasterizationStateCreateInfo, PipelineShaderStageCreateInfo, PipelineTessellationStateCreateInfo, PipelineVertexInputStateCreateInfo, PipelineViewportStateCreateInfo, RenderPass, StructureType, createGraphicsPipelines

Constructors

GraphicsPipelineCreateInfo 

Fields

Instances
Extensible GraphicsPipelineCreateInfo Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

Show (Chain es) => Show (GraphicsPipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PeekChain es => FromCStruct (GraphicsPipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

PokeChain es => ToCStruct (GraphicsPipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline

es ~ ([] :: [Type]) => Zero (GraphicsPipelineCreateInfo es) Source # 
Instance details

Defined in Graphics.Vulkan.Core10.Pipeline