// Copyright (c) 2017-2020 NVIDIA Corporation // // SPDX-License-Identifier: CC-BY-4.0 include::{generated}/meta/{refprefix}VK_NV_viewport_array2.adoc[] === 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 {GLregistry}/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 specification. 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.adoc[] === New or Modified Built-In Variables * (modified) <> * (modified) <> * <> === New Variable Decoration * <> === New SPIR-V Capabilities * <> * <> === Version History * Revision 1, 2017-02-15 (Daniel Koch) ** Internal revisions