blob: a21be10ffed4bd290efdb5aae9c4d26053211f5b [file] [log] [blame]
// Copyright 2016-2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
include::{generated}/meta/{refprefix}VK_KHR_variable_pointers.txt[]
=== Other Extension Metadata
*Last Modified Date*::
2017-09-05
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- This extension requires
{spirv}/KHR/SPV_KHR_variable_pointers.html[`SPV_KHR_variable_pointers`]
- Promoted to Vulkan 1.1 Core
*Contributors*::
- John Kessenich, Google
- Neil Henning, Codeplay
- David Neto, Google
- Daniel Koch, Nvidia
- Graeme Leese, Broadcom
- Weifeng Zhang, Qualcomm
- Stephen Clarke, Imagination Technologies
- Jason 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, code:VariablePointersStorageBuffer, must: be supported by all
implementations of this extension.
The second, code: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
<<features-variablePointersStorageBuffer,
pname:variablePointersStorageBuffer>> feature is made optional.
The original type, enum and command names are still available as aliases of
the core functionality.
include::{generated}/interfaces/VK_KHR_variable_pointers.txt[]
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-VariablePointers,VariablePointers>>
* <<spirvenv-capabilities-table-VariablePointersStorageBuffer,VariablePointersStorageBuffer>>
=== Issues
1) Do we need an optional property for the SPIR-V
code: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