Safe Haskell | None |
---|---|
Language | Haskell2010 |
Name
VK_EXT_vertex_input_dynamic_state - device extension
VK_EXT_vertex_input_dynamic_state
- Name String
VK_EXT_vertex_input_dynamic_state
- Extension Type
- Device extension
- Registered Extension Number
- 353
- Revision
- 2
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
VK_KHR_get_physical_device_properties2
- Contact
Other Extension Metadata
- Last Modified Date
- 2020-08-21
- IP Status
- No known IP claims.
- Contributors
- Jeff Bolz, NVIDIA
- Spencer Fricke, Samsung
- Stu Smith, AMD
Description
One of the states that contributes to the combinatorial explosion of pipeline state objects that need to be created, is the vertex input binding and attribute descriptions. By allowing them to be dynamic applications may reduce the number of pipeline objects they need to create.
This extension adds dynamic state support for what is normally static
state in PipelineVertexInputStateCreateInfo
.
New Commands
New Structures
New Enum Constants
EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION
Extending
DynamicState
:Extending
StructureType
:
Version History
Revision 2, 2020-11-05 (Piers Daniell)
- Make
VertexInputBindingDescription2EXT
extensible - Add new
VertexInputAttributeDescription2EXT
struct for thepVertexAttributeDescriptions
parameter tocmdSetVertexInputEXT
so it is also extensible
- Make
Revision 1, 2020-08-21 (Piers Daniell)
- Internal revisions
See Also
PhysicalDeviceVertexInputDynamicStateFeaturesEXT
,
VertexInputAttributeDescription2EXT
,
VertexInputBindingDescription2EXT
, cmdSetVertexInputEXT
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
- cmdSetVertexInputEXT :: forall io. MonadIO io => CommandBuffer -> ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT) -> io ()
- data PhysicalDeviceVertexInputDynamicStateFeaturesEXT = PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
- data VertexInputBindingDescription2EXT = VertexInputBindingDescription2EXT {}
- data VertexInputAttributeDescription2EXT = VertexInputAttributeDescription2EXT {}
- type EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION = 2
- pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION :: forall a. Integral a => a
- type EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_vertex_input_dynamic_state"
- pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT) |
|
-> ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT) |
|
-> io () |
vkCmdSetVertexInputEXT - Set the vertex input state dynamically for a command buffer
Description
This command sets the vertex input attribute and vertex input binding
descriptions state for subsequent drawing commands when the graphics
pipeline is created with
DYNAMIC_STATE_VERTEX_INPUT_EXT
set in
PipelineDynamicStateCreateInfo
::pDynamicStates
.
Otherwise, this state is specified by the
GraphicsPipelineCreateInfo
::pVertexInputState
values used to create the currently active pipeline.
If the bound pipeline state object was also created with the
DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then
cmdBindVertexBuffers2EXT
can be used instead of cmdSetVertexInputEXT
to dynamically set the
stride.
Valid Usage
- The vertexInputDynamicState feature must be enabled
-
vertexBindingDescriptionCount
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputBindings
-
vertexAttributeDescriptionCount
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputAttributes
- For every
binding
specified by each element ofpVertexAttributeDescriptions
, aVertexInputBindingDescription2EXT
must exist inpVertexBindingDescriptions
with the same value ofbinding
- All
elements of
pVertexBindingDescriptions
must describe distinct binding numbers - All
elements of
pVertexAttributeDescriptions
must describe distinct attribute locations
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
If
vertexBindingDescriptionCount
is not0
,pVertexBindingDescriptions
must be a valid pointer to an array ofvertexBindingDescriptionCount
validVertexInputBindingDescription2EXT
structures -
If
vertexAttributeDescriptionCount
is not0
,pVertexAttributeDescriptions
must be a valid pointer to an array ofvertexAttributeDescriptionCount
validVertexInputAttributeDescription2EXT
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types |
---|---|---|
Primary Secondary | Both | Graphics |
See Also
VK_EXT_vertex_input_dynamic_state,
CommandBuffer
,
VertexInputAttributeDescription2EXT
,
VertexInputBindingDescription2EXT
data PhysicalDeviceVertexInputDynamicStateFeaturesEXT Source #
VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - Structure describing whether the dynamic vertex input state can be used
Members
This structure describes the following feature:
Description
If the PhysicalDeviceVertexInputDynamicStateFeaturesEXT
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. PhysicalDeviceVertexInputDynamicStateFeaturesEXT
can also
be used in the pNext
chain of DeviceCreateInfo
to selectively enable these features.
Valid Usage (Implicit)
See Also
PhysicalDeviceVertexInputDynamicStateFeaturesEXT | |
Instances
data VertexInputBindingDescription2EXT Source #
VkVertexInputBindingDescription2EXT - Structure specifying the extended vertex input binding description
Valid Usage
-
binding
must be less thanPhysicalDeviceLimits
::maxVertexInputBindings
-
stride
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputBindingStride
- If the
vertexAttributeInstanceRateZeroDivisor
feature is not enabled,
divisor
must not be0
- If the
vertexAttributeInstanceRateDivisor
feature is not enabled,
divisor
must be1
-
divisor
must be a value between0
andPhysicalDeviceVertexAttributeDivisorPropertiesEXT
::maxVertexAttribDivisor
, inclusive - If
divisor
is not1
theninputRate
must be of typeVERTEX_INPUT_RATE_INSTANCE
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-
inputRate
must be a validVertexInputRate
value
See Also
VK_EXT_vertex_input_dynamic_state,
StructureType
,
VertexInputRate
,
cmdSetVertexInputEXT
VertexInputBindingDescription2EXT | |
|
Instances
data VertexInputAttributeDescription2EXT Source #
VkVertexInputAttributeDescription2EXT - Structure specifying the extended vertex input attribute description
Valid Usage
-
location
must be less thanPhysicalDeviceLimits
::maxVertexInputAttributes
-
binding
must be less thanPhysicalDeviceLimits
::maxVertexInputBindings
-
offset
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputAttributeOffset
-
format
must be allowed as a vertex buffer format, as specified by theFORMAT_FEATURE_VERTEX_BUFFER_BIT
flag inFormatProperties
::bufferFeatures
returned bygetPhysicalDeviceFormatProperties
-
If the
VK_KHR_portability_subset
extension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR
::vertexAttributeAccessBeyondStride
isFALSE
, the sum ofoffset
plus the size of the vertex attribute data described byformat
must not be greater thanstride
in theVertexInputBindingDescription2EXT
referenced inbinding
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-
format
must be a validFormat
value
See Also
VK_EXT_vertex_input_dynamic_state,
Format
,
StructureType
,
cmdSetVertexInputEXT
VertexInputAttributeDescription2EXT | |
|
Instances
pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_vertex_input_dynamic_state" Source #
pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #