| // Copyright 2017-2021 The Khronos Group Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_EXT_shader_viewport_index_layer.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2017-08-08 |
| *Interactions and External Dependencies*:: |
| - Promoted to Vulkan 1.2 Core |
| - This extension requires |
| {spirv}/EXT/SPV_EXT_shader_viewport_index_layer.html[`SPV_EXT_shader_viewport_index_layer`] |
| - This extension provides API support for |
| https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt[`GL_ARB_shader_viewport_layer_array`], |
| https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt[`GL_AMD_vertex_shader_layer`], |
| https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt[`GL_AMD_vertex_shader_viewport_index`], |
| and |
| https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt[`GL_NV_viewport_array2`] |
| - This extension requires the pname:multiViewport feature. |
| - This extension interacts with the pname:tessellationShader feature. |
| *Contributors*:: |
| - Piers Daniell, NVIDIA |
| - Jeff Bolz, NVIDIA |
| - Jan-Harald Fredriksen, ARM |
| - Daniel Rakos, AMD |
| - Slawomir Grajeswki, Intel |
| |
| === Description |
| |
| This extension adds support for the code:ShaderViewportIndexLayerEXT |
| capability from the `SPV_EXT_shader_viewport_index_layer` extension in |
| Vulkan. |
| |
| This extension allows variables decorated with the code:Layer and |
| code:ViewportIndex built-ins to be exported from vertex or tessellation |
| shaders, using the code:ShaderViewportIndexLayerEXT capability. |
| |
| When using GLSL source-based shading languages, the code:gl_ViewportIndex |
| and code:gl_Layer built-in variables map to the SPIR-V code:ViewportIndex |
| and code:Layer built-in decorations, respectively. |
| Behaviour of these variables is extended as described in the |
| `GL_ARB_shader_viewport_layer_array` (or the precursor |
| `GL_AMD_vertex_shader_layer`, `GL_AMD_vertex_shader_viewport_index`, and |
| `GL_NV_viewport_array2` extensions). |
| |
| ifdef::VK_NV_viewport_array2[] |
| [NOTE] |
| .Note |
| ==== |
| The code:ShaderViewportIndexLayerEXT capability is equivalent to the |
| code:ShaderViewportIndexLayerNV capability added by |
| `apiext:VK_NV_viewport_array2`. |
| ==== |
| endif::VK_NV_viewport_array2[] |
| |
| === Promotion to Vulkan 1.2 |
| |
| All functionality in this extension is included in core Vulkan 1.2. |
| |
| The single code:ShaderViewportIndexLayerEXT capability from the |
| `SPV_EXT_shader_viewport_index_layer` extension is replaced by the |
| <<spirvenv-capabilities-table-ShaderViewportIndex,code:ShaderViewportIndex>> |
| and <<spirvenv-capabilities-table-ShaderLayer,code:ShaderLayer>> |
| capabilities from SPIR-V 1.5 which are enabled by the |
| <<features-shaderOutputViewportIndex,shaderOutputViewportIndex>> and |
| <<features-shaderOutputLayer,shaderOutputLayer>> features, respectively. |
| Additionally, if Vulkan 1.2 is supported but this extension is not, these |
| capabilities are optional. |
| |
| Enabling both features is equivalent to enabling the |
| `VK_EXT_shader_viewport_index_layer` extension. |
| |
| include::{generated}/interfaces/VK_EXT_shader_viewport_index_layer.txt[] |
| |
| === New or Modified Built-In Variables |
| |
| * (modified) <<interfaces-builtin-variables-layer,code:Layer>> |
| * (modified) |
| <<interfaces-builtin-variables-viewportindex,code:ViewportIndex>> |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-ShaderViewportIndexLayerEXT,code:ShaderViewportIndexLayerEXT>> |
| |
| === Version History |
| |
| * Revision 1, 2017-08-08 (Daniel Koch) |
| - Internal drafts |