• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
2// Creative Commons Attribution 4.0 International License; see
3// http://creativecommons.org/licenses/by/4.0/
4
5include::meta/VK_KHR_variable_pointers.txt[]
6
7*Last Modified Date*::
8    2017-09-05
9*IP Status*::
10    No known IP claims.
11*Interactions and External Dependencies*::
12  - Requires the
13    https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_variable_pointers.html[+SPV_KHR_variable_pointers+]
14    SPIR-V extension.
15  - Promoted to Vulkan 1.1 Core
16*Contributors*::
17  - John Kessenich, Google
18  - Neil Henning, Codeplay
19  - David Neto, Google
20  - Daniel Koch, Nvidia
21  - Graeme Leese, Broadcom
22  - Weifeng Zhang, Qualcomm
23  - Stephen Clarke, Imagination Technologies
24  - Jason Ekstrand, Intel
25  - Jesse Hall, Google
26
27The `VK_KHR_variable_pointers` extension allows implementations to indicate
28their level of support for the +SPV_KHR_variable_pointers+ SPIR-V extension.
29The SPIR-V extension allows shader modules to use invocation-private
30pointers into uniform and/or storage buffers, where the pointer values can
31be dynamic and non-uniform.
32
33The +SPV_KHR_variable_pointers+ extension introduces two capabilities.
34The first, code:VariablePointersStorageBuffer, must: be supported by all
35implementations of this extension.
36The second, code:VariablePointers, is optional.
37
38=== New Enum Constants
39
40  * Extending elink:VkStructureType:
41  ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR
42
43=== New Structures
44
45  * slink:VkPhysicalDeviceVariablePointerFeaturesKHR
46
47=== New SPIR-V Capabilities
48
49  * <<spirvenv-capabilities-table-variablepointers,VariablePointersStorageBuffer>>
50  * <<spirvenv-capabilities-table-variablepointers,VariablePointers>>
51
52=== Promotion to Vulkan 1.1
53
54All functionality in this extension is included in core Vulkan 1.1, with the
55KHR suffix omitted, however support for the
56<<features-features-variablePointersStorageBuffer,
57pname:variablePointersStorageBuffer>> feature is made optional.
58The original type, enum and command names are still available as aliases of
59the core functionality.
60
61=== Issues
62
631) Do we need an optional property for the SPIR-V
64code:VariablePointersStorageBuffer capability or should it be mandatory when
65this extension is advertised?
66
67*RESOLVED*: Add it as a distinct feature, but make support mandatory.
68Adding it as a feature makes the extension easier to include in a future
69core API version.
70In the extension, the feature is mandatory, so that presence of the
71extension guarantees some functionality.
72When included in a core API version, the feature would be optional.
73
742) Can support for these capabilities vary between shader stages?
75
76*RESOLVED*: No, if the capability is supported in any stage it must be
77supported in all stages.
78
793) Should the capabilities be features or limits?
80
81*RESOLVED*: Features, primarily for consistency with other similar
82extensions.
83
84=== Version History
85
86  * Revision 1, 2017-03-14 (Jesse Hall and John Kessenich)
87    - Internal revisions
88