VK_KHR_variable_pointers
Other Extension Metadata
Last Modified Date
2017-09-05
IP Status
No known IP claims.
Contributors
- John Kessenich, Google
- Neil Henning, Codeplay
- David Neto, Google
- Daniel Koch, Nvidia
- Graeme Leese, Broadcom
- Weifeng Zhang, Qualcomm
- Stephen Clarke, Imagination Technologies
- Faith Ekstrand, Intel
- Jesse Hall, Google
Description
The VK_KHR_variable_pointers
extension allows implementations to indicate
their level of support for the SPV_KHR_variable_pointers
SPIR-V extension.
The SPIR-V extension allows shader modules to use invocation-private
pointers into uniform and/or storage buffers, where the pointer values can
be dynamic and non-uniform.
The SPV_KHR_variable_pointers
extension introduces two capabilities.
The first, VariablePointersStorageBuffer
, must be supported by all
implementations of this extension.
The second, VariablePointers
, is optional.
Promotion to Vulkan 1.1
All functionality in this extension is included in core Vulkan 1.1, with the
KHR suffix omitted, however support for the
variablePointersStorageBuffer
feature is made optional.
The original type, enum and command names are still available as aliases of
the core functionality.
New Structures
- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
New Enum Constants
VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
VK_KHR_VARIABLE_POINTERS_SPEC_VERSION
- Extending VkStructureType:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR
New SPIR-V Capabilities
Issues
1) Do we need an optional property for the SPIR-V
VariablePointersStorageBuffer
capability or should it be mandatory when
this extension is advertised?
RESOLVED: Add it as a distinct feature, but make support mandatory. Adding it as a feature makes the extension easier to include in a future core API version. In the extension, the feature is mandatory, so that presence of the extension guarantees some functionality. When included in a core API version, the feature would be optional.
2) Can support for these capabilities vary between shader stages?
RESOLVED: No, if the capability is supported in any stage it must be supported in all stages.
3) Should the capabilities be features or limits?
RESOLVED: Features, primarily for consistency with other similar extensions.
Version History
- Revision 1, 2017-03-14 (Jesse Hall and John Kessenich)
- Internal revisions