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