blob: 3b2a5818ab977b424551f0aac5471ca4a0fccc11 [file] [log] [blame]
// 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