Vulkan-Docs/appendices/VK_KHR_variable_pointers.txt
Jon Leech b1042a3204 Change log for April 7, 2019 Vulkan 1.1.106 spec update:
* Update release number to 106.

Public Issues:

  * Add searchbox and generate search index for the chunked HTML target.
    Note that doing this requires several new toolchain components to build
    the `chunked` target (public issue 578 / internal issue 1352).
  * Remove descriptions of flink:vkCreateSampler sampler constraints which
    were repeated in the valid usage statements (public pull request 648).
  * Fix sense of conditional around a valid usage statement in the
    <<copies>> chapter (public issue 942).

Internal Issues:

  * Add missing pname:extent.width and pname:extent.height valid usage
    statements for flink:vkCmdClearAttachments (internal issue 1583).
  * Fix some inconsistencies in structures and corresponding pname:sType
    enumerant names by renaming
    sname:VkPhysicalDeviceShaderDrawParameterFeatures ->
    slink:slink:VkPhysicalDeviceShaderDrawParametersFeatures;
    sname:VkPhysicalDeviceVariablePointerFeatures ->
    slink:VkPhysicalDeviceVariablePointerFeatures;
    sname:VkPhysicalDeviceVariablePointerFeaturesKHR ->
    slink:VkPhysicalDeviceVariablePointerFeaturesKHR;
    sname:VkPhysicalDeviceBufferAddressFeaturesEXT ->
    slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
    etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
    ->
    ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
    etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES ->
    ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
    etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR ->
    ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR;
    and etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT
    ->
    ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT.
    The old names are still available as aliases for backwards
    compatibility. This change required introducing valid XML markup which
    externally written XML processing scripts may need to be modified to
    accomodate, to support multiple aliases of a single command or token
    name (internal issue 1592).
  * Add slink:VkDevice as the first parameter to flink:vkSetLocalDimmingAMD
    (internal issue 1618).
  * Improve CI header compilation tests to test all Vulkan platform
    includes, using fake platform headers where needed, and change the
    `allchecks` Makefile target to use the more comprehensive
    `check_spec_links.py` script instead of the retired `checkinc` and
    `checklinks` targets.
  * Move descriptions of the ASTC compressed texture decode mode from the
    <<appendix-compressedtex-astc,appendix>> to the recently updated
    external Khronos Data Format Specification.
  * Fix minor markup and spelling issues in the `VK_NV_ray_tracing`
    extension.
2019-04-07 20:17:23 -07:00

88 lines
3.0 KiB
Plaintext

// Copyright (c) 2016-2019 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
include::meta/VK_KHR_variable_pointers.txt[]
*Last Modified Date*::
2017-09-05
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- Requires the
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_variable_pointers.html[`SPV_KHR_variable_pointers`]
SPIR-V extension.
- 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
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.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR
=== New Structures
* slink:VkPhysicalDeviceVariablePointersFeaturesKHR
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-variablepointers,VariablePointersStorageBuffer>>
* <<spirvenv-capabilities-table-variablepointers,VariablePointers>>
=== 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.
=== 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