| // Copyright 2016-2021 The Khronos Group, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_KHR_workgroup_memory_explicit_layout.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2020-06-01 |
| *IP Status*:: |
| No known IP claims. |
| *Interactions and External Dependencies*:: |
| - This extension requires |
| {spirv}/KHR/SPV_KHR_workgroup_memory_explicit_layout.html[`SPV_KHR_workgroup_memory_explicit_layout`] |
| *Contributors*:: |
| - Caio Marcelo de Oliveira Filho, Intel |
| - Jeff Bolz, NVIDIA |
| - Graeme Leese, Broadcom |
| - Jason Ekstrand, Intel |
| - Daniel Koch, NVIDIA |
| |
| === Description |
| |
| This extension adds Vulkan support for the |
| {spirv}/KHR/SPV_KHR_workgroup_memory_explicit_layout.html[`SPV_KHR_workgroup_memory_explicit_layout`] |
| SPIR-V extension, which allows shaders to explicitly define the layout of |
| code:Workgroup storage class memory and create aliases between variables |
| from that storage class in a compute shader. |
| |
| The aliasing feature allows different "`views`" on the same data, so the |
| shader can bulk copy data from another storage class using one type (e.g. an |
| array of large vectors), and then use the data with a more specific type. |
| It also enables reducing the amount of workgroup memory consumed by allowing |
| the shader to alias data whose lifetimes do not overlap. |
| |
| The explicit layout support and some form of aliasing is also required for |
| layering OpenCL on top of Vulkan. |
| |
| include::{generated}/interfaces/VK_KHR_workgroup_memory_explicit_layout.txt[] |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR, |
| code:WorkgroupMemoryExplicitLayoutKHR>> |
| * <<spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR, |
| code:WorkgroupMemoryExplicitLayout8BitAccessKHR>> |
| * <<spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR, |
| code:WorkgroupMemoryExplicitLayout16BitAccessKHR>> |
| |
| === Version History |
| |
| * Revision 1, 2020-06-01 (Caio Marcelo de Oliveira Filho) |
| - Initial version |