/ appendices / VK_KHR_variable_pointers.txt
VK_KHR_variable_pointers.txt
1 // Copyright (c) 2016-2019 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 5 include::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 27 The `VK_KHR_variable_pointers` extension allows implementations to indicate 28 their level of support for the `SPV_KHR_variable_pointers` SPIR-V extension. 29 The SPIR-V extension allows shader modules to use invocation-private 30 pointers into uniform and/or storage buffers, where the pointer values can 31 be dynamic and non-uniform. 32 33 The `SPV_KHR_variable_pointers` extension introduces two capabilities. 34 The first, code:VariablePointersStorageBuffer, must: be supported by all 35 implementations of this extension. 36 The 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:VkPhysicalDeviceVariablePointersFeaturesKHR 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 54 All functionality in this extension is included in core Vulkan 1.1, with the 55 KHR suffix omitted, however support for the 56 <<features-variablePointersStorageBuffer, 57 pname:variablePointersStorageBuffer>> feature is made optional. 58 The original type, enum and command names are still available as aliases of 59 the core functionality. 60 61 === Issues 62 63 1) Do we need an optional property for the SPIR-V 64 code:VariablePointersStorageBuffer capability or should it be mandatory when 65 this extension is advertised? 66 67 *RESOLVED*: Add it as a distinct feature, but make support mandatory. 68 Adding it as a feature makes the extension easier to include in a future 69 core API version. 70 In the extension, the feature is mandatory, so that presence of the 71 extension guarantees some functionality. 72 When included in a core API version, the feature would be optional. 73 74 2) Can support for these capabilities vary between shader stages? 75 76 *RESOLVED*: No, if the capability is supported in any stage it must be 77 supported in all stages. 78 79 3) Should the capabilities be features or limits? 80 81 *RESOLVED*: Features, primarily for consistency with other similar 82 extensions. 83 84 === Version History 85 86 * Revision 1, 2017-03-14 (Jesse Hall and John Kessenich) 87 - Internal revisions