blob: 1f74abfcdbcd6f8f0bef26c9e3deb2569948cc15 [file] [log] [blame]
// Copyright (c) 2017-2020 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0
include::{generated}/meta/{refprefix}VK_NV_viewport_array2.txt[]
=== Other Extension Metadata
*Last Modified Date*::
2017-02-15
*Interactions and External Dependencies*::
- This extension requires
{spirv}/NV/SPV_NV_viewport_array2.html[`SPV_NV_viewport_array2`]
- This extension provides API support for
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt[`GL_NV_viewport_array2`]
- This extension requires the pname:geometryShader and pname:multiViewport
features.
- This extension interacts with the pname:tessellationShader feature.
*Contributors*::
- Piers Daniell, NVIDIA
- Jeff Bolz, NVIDIA
=== Description
This extension adds support for the following SPIR-V extension in Vulkan:
* `SPV_NV_viewport_array2`
which allows a single primitive to be broadcast to multiple viewports and/or
multiple layers.
A new shader built-in output code:ViewportMaskNV is provided, which allows a
single primitive to be output to multiple viewports simultaneously.
Also, a new SPIR-V decoration is added to control whether the effective
viewport index is added into the variable decorated with the code:Layer
built-in decoration.
These capabilities allow a single primitive to be output to multiple layers
simultaneously.
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:ShaderViewportIndexLayerNV capability.
This extension adds a new code:ViewportMaskNV built-in decoration that is
available for output variables in vertex, tessellation evaluation, and
geometry shaders, and a new code:ViewportRelativeNV decoration that can be
added on variables decorated with code:Layer when using the
code:ShaderViewportMaskNV capability.
When using GLSL source-based shading languages, the code:gl_ViewportMask[]
built-in output variable and code:viewport_relative layout qualifier from
`GL_NV_viewport_array2` map to the code:ViewportMaskNV and
code:ViewportRelativeNV decorations, respectively.
Behaviour is described in the `GL_NV_viewport_array2` extension
specificiation.
ifdef::VK_EXT_shader_viewport_index_layer[]
[NOTE]
.Note
====
The code:ShaderViewportIndexLayerNV capability is equivalent to the
code:ShaderViewportIndexLayerEXT capability added by
`apiext:VK_EXT_shader_viewport_index_layer`.
====
endif::VK_EXT_shader_viewport_index_layer[]
include::{generated}/interfaces/VK_NV_viewport_array2.txt[]
=== New or Modified Built-In Variables
* (modified) <<interfaces-builtin-variables-layer,code:Layer>>
* (modified)
<<interfaces-builtin-variables-viewportindex,code:ViewportIndex>>
* <<interfaces-builtin-variables-viewportmask,code:ViewportMaskNV>>
=== New Variable Decoration
* <<interfaces-builtin-variables-layer,code:ViewportRelativeNV in
code:Layer>>
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-ShaderViewportIndexLayerNV,code:ShaderViewportIndexLayerNV>>
* <<spirvenv-capabilities-table-ShaderViewportMaskNV,code:ShaderViewportMaskNV>>
=== Version History
* Revision 1, 2017-02-15 (Daniel Koch)
- Internal revisions