| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_command_buffer_inheritance
Description
Name
VK_NV_command_buffer_inheritance - device extension
VK_NV_command_buffer_inheritance
- Name String
VK_NV_command_buffer_inheritance
- Extension Type
- Device extension
- Registered Extension Number
- 560
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 or Vulkan Version 1.1
- Contact
Other Extension Metadata
- Last Modified Date
- 2024-02-15
- IP Status
- No known IP claims.
- Contributors
- Piers Daniell, NVIDIA
- Daniel Story, Nintendo
Description
This extension allows applications to take advantage of the graphics and compute state that remains valid in the queue between executions of submitted command buffers. This works across both primary and secondary command buffers.
The state inherited includes the previously bound pipeline state, previously bound shader objects, previously bound vertex and index buffers, previously bound descriptor sets and push constants, and all previously set dynamic state.
This extension relaxes the requirement that all that state needs to be bound and set after begin command buffer and before the next draw or dispatch.
By not having to set state that has been inherited applications can save both CPU and GPU cycles by not having to set state redundantly, and also have improved flexibility when reusing secondary command buffers.
New Structures
Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:
New Enum Constants
Issues
1) How can the validation layer know when state is valid at draw or dispatch time if it is inherited at execution time?
RESOLVED: Validation of invalid state at draw and dispatch time cannot be done while recording those commands. Instead the validation layer will need to keep track of any unset state when draw and dispatch commands are recorded, but not report an error at that time. It should also keep track of what state is valid at the end of each recorded command buffer. When secondary command buffer execution is recorded the validation layer can update its unset state tracking for that command buffer, and also for draw and dispatch commands recorded after execution of the secondary as they will inherit state from the executed secondary. This can be done recursively so every recorded primary command buffer has a final tally of any unset state used at draw and dispatch time. Finally when the primary is submitted to the queue the validation layer will know the previous primaries submitted to the queue and will know if there is any unset state used and can report the error then.
Version History
Revision 1, 2024-02-15 (Lujin Wang)
- Internal revisions
See Also
No cross-references are available
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
- data PhysicalDeviceCommandBufferInheritanceFeaturesNV = PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
- type NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1
- pattern NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION :: Integral a => a
- type NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance"
- pattern NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME :: (Eq a, IsString a) => a
Documentation
data PhysicalDeviceCommandBufferInheritanceFeaturesNV Source #
VkPhysicalDeviceCommandBufferInheritanceFeaturesNV - Structure describing whether the command buffer inheritance feature is supported by an implementation
Members
This structure describes the following feature:
Description
If the PhysicalDeviceCommandBufferInheritanceFeaturesNV 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. If the application wishes to use a
Device with any features described by
PhysicalDeviceCommandBufferInheritanceFeaturesNV, it must add an
instance of the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceCommandBufferInheritanceFeaturesNV | |
Fields | |
Instances
pattern NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION :: Integral a => a Source #
type NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" Source #
pattern NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME :: (Eq a, IsString a) => a Source #