vulkan
Safe HaskellNone
LanguageHaskell2010

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

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

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

VK_NV_command_buffer_inheritance, Bool32, StructureType

Constructors

PhysicalDeviceCommandBufferInheritanceFeaturesNV 

Fields

  • commandBufferInheritance :: Bool

    commandBufferInheritance indicates that command buffers executed in a queue inherit graphics and compute state from the previously executed command buffer in that queue.

Instances

Instances details
Eq PhysicalDeviceCommandBufferInheritanceFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_command_buffer_inheritance

Storable PhysicalDeviceCommandBufferInheritanceFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_command_buffer_inheritance

Show PhysicalDeviceCommandBufferInheritanceFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_command_buffer_inheritance

FromCStruct PhysicalDeviceCommandBufferInheritanceFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_command_buffer_inheritance

ToCStruct PhysicalDeviceCommandBufferInheritanceFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_command_buffer_inheritance

Zero PhysicalDeviceCommandBufferInheritanceFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_command_buffer_inheritance

type NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance" Source #