vulkan-3.15: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_extended_dynamic_state

Description

Name

VK_EXT_extended_dynamic_state - device extension

VK_EXT_extended_dynamic_state

Name String
VK_EXT_extended_dynamic_state
Extension Type
Device extension
Registered Extension Number
268
Revision
1
Extension and Version Dependencies
  • Requires Vulkan 1.0
  • Requires VK_KHR_get_physical_device_properties2
Contact

Other Extension Metadata

Last Modified Date
2019-12-09
IP Status
No known IP claims.
Contributors
  • Dan Ginsburg, Valve Corporation
  • Graeme Leese, Broadcom
  • Hans-Kristian Arntzen, Valve Corporation
  • Jan-Harald Fredriksen, Arm Limited
  • Jason Ekstrand, Intel
  • Jeff Bolz, NVIDIA
  • Jesse Hall, Google
  • Philip Rebohle, Valve Corporation
  • Stuart Smith, Imagination Technologies
  • Tobias Hector, AMD

Description

This extension adds some more dynamic state to support applications that need to reduce the number of pipeline state objects they compile and bind.

New Commands

New Structures

New Enum Constants

Version History

  • Revision 1, 2019-12-09 (Piers Daniell)

    • Internal revisions

See Also

PhysicalDeviceExtendedDynamicStateFeaturesEXT, cmdBindVertexBuffers2EXT, cmdSetCullModeEXT, cmdSetDepthBoundsTestEnableEXT, cmdSetDepthCompareOpEXT, cmdSetDepthTestEnableEXT, cmdSetDepthWriteEnableEXT, cmdSetFrontFaceEXT, cmdSetPrimitiveTopologyEXT, cmdSetScissorWithCountEXT, cmdSetStencilOpEXT, cmdSetStencilTestEnableEXT, cmdSetViewportWithCountEXT

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Synopsis

Documentation

cmdSetCullModeEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> CullModeFlags

cullMode specifies the cull mode property to use for drawing.

-> io () 

vkCmdSetCullModeEXT - Set cull mode dynamically for a command buffer

Description

This command sets the cull mode for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_CULL_MODE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineRasterizationStateCreateInfo::cullMode value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, CullModeFlags

cmdSetFrontFaceEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> FrontFace

frontFace is a FrontFace value specifying the front-facing triangle orientation to be used for culling.

-> io () 

vkCmdSetFrontFaceEXT - Set front face orientation dynamically for a command buffer

Description

This command sets the front face orientation for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_FRONT_FACE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineRasterizationStateCreateInfo::frontFace value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, FrontFace

cmdSetPrimitiveTopologyEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> PrimitiveTopology

primitiveTopology specifies the primitive topology to use for drawing.

-> io () 

vkCmdSetPrimitiveTopologyEXT - Set primitive topology state dynamically for a command buffer

Description

This command sets the primitive topology for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineInputAssemblyStateCreateInfo::topology value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, PrimitiveTopology

cmdSetViewportWithCountEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("viewports" ::: Vector Viewport)

pViewports specifies the viewports to use for drawing.

-> io () 

vkCmdSetViewportWithCountEXT - Set the viewport count and viewports dynamically for a command buffer

Description

This command sets the viewport count and viewports state for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the corresponding PipelineViewportStateCreateInfo::viewportCount and pViewports values used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

  • pViewports must be a valid pointer to an array of viewportCount valid Viewport structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • viewportCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, Viewport

cmdSetScissorWithCountEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("scissors" ::: Vector Rect2D)

pScissors specifies the scissors to use for drawing.

-> io () 

vkCmdSetScissorWithCountEXT - Set the scissor count and scissor rectangular bounds dynamically for a command buffer

Description

This command sets the scissor count and scissor rectangular bounds state for subsequence drawing commands when the graphics pipeline is created with DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the corresponding PipelineViewportStateCreateInfo::scissorCount and pScissors values used to create the currently active pipeline.

Valid Usage

  • scissorCount must be between 1 and PhysicalDeviceLimits::maxViewports, inclusive
  • If the multiple viewports feature is not enabled, scissorCount must be 1
  • 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
  • commandBuffer must not have CommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D enabled

Valid Usage (Implicit)

  • pScissors must be a valid pointer to an array of scissorCount Rect2D structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • scissorCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, Rect2D

cmdBindVertexBuffers2EXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command is recorded.

-> ("firstBinding" ::: Word32)

firstBinding is the index of the first vertex input binding whose state is updated by the command.

-> ("buffers" ::: Vector Buffer)

pBuffers is a pointer to an array of buffer handles.

-> ("offsets" ::: Vector DeviceSize)

pOffsets is a pointer to an array of buffer offsets.

-> ("sizes" ::: Vector DeviceSize)

pSizes is NULL or a pointer to an array of the size in bytes of vertex data bound from pBuffers.

-> ("strides" ::: Vector DeviceSize)

pStrides is NULL or a pointer to an array of buffer strides.

-> io () 

vkCmdBindVertexBuffers2EXT - Bind vertex buffers to a command buffer and dynamically set strides

Description

The values taken from elements i of pBuffers and pOffsets replace the current state for the vertex input binding firstBinding + i, for i in [0, bindingCount). The vertex input binding is updated to start at the offset indicated by pOffsets[i] from the start of the buffer pBuffers[i]. If pSizes is not NULL then pSizes[i] specifies the bound size of the vertex buffer starting from the corresponding elements of pBuffers[i] plus pOffsets[i]. All vertex input attributes that use each of these bindings will use these updated addresses in their address calculations for subsequent drawing commands. If the nullDescriptor feature is enabled, elements of pBuffers can be NULL_HANDLE, and can be used by the vertex shader. If a vertex input attribute is bound to a vertex input binding that is NULL_HANDLE, the values taken from memory are considered to be zero, and missing G, B, or A components are filled with (0,0,1).

This command also <pipelines-dynamic-state, dynamically sets>> the byte strides between consecutive elements within buffer pBuffers[i] to the corresponding pStrides[i] value when the graphics pipeline is created with DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, strides are specified by the VertexInputBindingDescription::stride values used to create the currently active pipeline.

If the bound pipeline state object was also created with the DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then cmdSetVertexInputEXT can be used instead of cmdBindVertexBuffers2EXT to set the stride.

Valid Usage

  • The sum of firstBinding and bindingCount must be less than or equal to PhysicalDeviceLimits::maxVertexInputBindings
  • All elements of pOffsets must be less than the size of the corresponding element in pBuffers
  • If pSizes is not NULL, all elements of pOffsets plus pSizes must be less than or equal to the size of the corresponding element in pBuffers
  • All elements of pBuffers must have been created with the BUFFER_USAGE_VERTEX_BUFFER_BIT flag
  • Each element of pBuffers that is non-sparse must be bound completely and contiguously to a single DeviceMemory object
  • If the nullDescriptor feature is not enabled, all elements of pBuffers must not be NULL_HANDLE
  • If an element of pBuffers is NULL_HANDLE, then the corresponding element of pOffsets must be zero
  • If pStrides is not NULL each element of pStrides must be less than or equal to PhysicalDeviceLimits::maxVertexInputBindingStride
  • If pStrides is not NULL each element of pStrides must be either 0 or greater than or equal to the maximum extent of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the VertexInputAttributeDescription::offset plus VertexInputAttributeDescription::format size

Valid Usage (Implicit)

  • pBuffers must be a valid pointer to an array of bindingCount valid or NULL_HANDLE Buffer handles
  • pOffsets must be a valid pointer to an array of bindingCount DeviceSize values
  • If pSizes is not NULL, pSizes must be a valid pointer to an array of bindingCount DeviceSize values
  • If pStrides is not NULL, pStrides must be a valid pointer to an array of bindingCount DeviceSize values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • If any of pSizes, or pStrides are not NULL, bindingCount must be greater than 0
  • Both of commandBuffer, and the elements of pBuffers that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, Buffer, CommandBuffer, DeviceSize

cmdSetDepthTestEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("depthTestEnable" ::: Bool)

depthTestEnable specifies if the depth test is enabled.

-> io () 

vkCmdSetDepthTestEnableEXT - Set depth test enable dynamically for a command buffer

Description

This command sets the depth test enable for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineDepthStencilStateCreateInfo::depthTestEnable value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, Bool32, CommandBuffer

cmdSetDepthWriteEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("depthWriteEnable" ::: Bool)

depthWriteEnable specifies if depth writes are enabled.

-> io () 

vkCmdSetDepthWriteEnableEXT - Set depth write enable dynamically for a command buffer

Description

This command sets the depth write enable for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineDepthStencilStateCreateInfo::depthWriteEnable value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, Bool32, CommandBuffer

cmdSetDepthCompareOpEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("depthCompareOp" ::: CompareOp)

depthCompareOp specifies the depth comparison operator.

-> io () 

vkCmdSetDepthCompareOpEXT - Set depth comparison operator dynamically for a command buffer

Description

This command sets the depth comparison operator for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineDepthStencilStateCreateInfo::depthCompareOp value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

  • depthCompareOp must be a valid CompareOp value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, CompareOp

cmdSetDepthBoundsTestEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("depthBoundsTestEnable" ::: Bool)

depthBoundsTestEnable specifies if the depth bounds test is enabled.

-> io () 

vkCmdSetDepthBoundsTestEnableEXT - Set depth bounds test enable dynamically for a command buffer

Description

This command sets the depth bounds enable for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineDepthStencilStateCreateInfo::depthBoundsTestEnable value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, Bool32, CommandBuffer

cmdSetStencilTestEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("stencilTestEnable" ::: Bool)

stencilTestEnable specifies if the stencil test is enabled.

-> io () 

vkCmdSetStencilTestEnableEXT - Set stencil test enable dynamically for a command buffer

Description

This command sets the stencil test enable for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineDepthStencilStateCreateInfo::stencilTestEnable value used to create the currently active pipeline.

Valid Usage

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, Bool32, CommandBuffer

cmdSetStencilOpEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("faceMask" ::: StencilFaceFlags)

faceMask is a bitmask of StencilFaceFlagBits specifying the set of stencil state for which to update the stencil operation.

-> ("failOp" ::: StencilOp)

failOp is a StencilOp value specifying the action performed on samples that fail the stencil test.

-> ("passOp" ::: StencilOp)

passOp is a StencilOp value specifying the action performed on samples that pass both the depth and stencil tests.

-> ("depthFailOp" ::: StencilOp)

depthFailOp is a StencilOp value specifying the action performed on samples that pass the stencil test and fail the depth test.

-> CompareOp

compareOp is a CompareOp value specifying the comparison operator used in the stencil test.

-> io () 

vkCmdSetStencilOpEXT - Set stencil operation dynamically for a command buffer

Description

This command sets the stencil operation for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_STENCIL_OP_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the corresponding PipelineDepthStencilStateCreateInfo::failOp, passOp, depthFailOp, and compareOp values used to create the currently active pipeline, for both front and back faces.

Valid Usage

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBoth Graphics

See Also

VK_EXT_extended_dynamic_state, CommandBuffer, CompareOp, StencilFaceFlags, StencilOp

data PhysicalDeviceExtendedDynamicStateFeaturesEXT Source #

VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - Structure describing what extended dynamic state can be used

Members

This structure describes the following feature:

Description

If the PhysicalDeviceExtendedDynamicStateFeaturesEXT structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceExtendedDynamicStateFeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_extended_dynamic_state, Bool32, StructureType

Instances

Instances details
Eq PhysicalDeviceExtendedDynamicStateFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state

Show PhysicalDeviceExtendedDynamicStateFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state

Storable PhysicalDeviceExtendedDynamicStateFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state

FromCStruct PhysicalDeviceExtendedDynamicStateFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state

ToCStruct PhysicalDeviceExtendedDynamicStateFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state

Zero PhysicalDeviceExtendedDynamicStateFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state

type EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" Source #