Contact
-
Piers Daniell [GitHub]pdaniell-nv
Other Extension Metadata
- Last Modified Date
-
2025-01-10
- IP Status
-
No known IP claims.
- Contributors
-
-
Liam Middlebrook, NVIDIA
-
Jeff Bolz, NVIDIA
-
Description
This extension is based on the VK_EXT_robustness2
extension.
This extension adds stricter requirements for how out of bounds reads and
writes are handled.
Most accesses must be tightly bounds-checked, out of bounds writes must be
discarded, out of bound reads must return zero.
Rather than allowing multiple possible (0,0,0,x) vectors, the out of
bounds values are treated as zero, and then missing components are inserted
based on the format as described in Conversion to RGBA and vertex input attribute
extraction.
These additional requirements may be expensive on some implementations, and should only be enabled when truly necessary.
This extension also adds support for “null descriptors”, where VK_NULL_HANDLE can be used instead of a valid handle. Accesses to null descriptors have well-defined behavior, and do not rely on robustness.
New Enum Constants
-
VK_KHR_ROBUSTNESS_2_EXTENSION_NAME
-
VK_KHR_ROBUSTNESS_2_SPEC_VERSION
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR
-
Issues
-
Why do VkPhysicalDeviceRobustness2PropertiesKHR::
robustUniformBufferAccessSizeAlignment
and VkPhysicalDeviceRobustness2PropertiesKHR::robustStorageBufferAccessSizeAlignment
exist?
RESOLVED: Some implementations cannot efficiently tightly bounds-check all buffer accesses. Rather, the size of the bound range is padded to some power of two multiple, up to 256 bytes for uniform buffers and up to 4 bytes for storage buffers, and that padded size is bounds-checked. This is sufficient to implement D3D-like behavior, because D3D only allows binding whole uniform buffers or ranges that are a multiple of 256 bytes, and D3D raw and structured buffers only support 32-bit accesses.
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.