VK_NV_viewport_array2(3)

# VK_NV_viewport_array2(3) Manual Page

## Name

VK_NV_viewport_array2 - device extension

Loading… please wait.

## Registered Extension Number

97

## Revision

1

## Ratification Status

Not ratified

## Extension and Version Dependencies

None

## SPIR-V Dependencies

- SPV_NV_viewport_array2

## Contact

- Daniel Koch [GitHub]dgkoch

## Other Extension Metadata

Last Modified Date

  2017-02-15

Interactions and External Dependencies

  - This extension provides API support for `GL_NV_viewport_array2`

  - This extension requires the `geometryShader` and `multiViewport` features.

  - This extension interacts with the `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 `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 `Layer` built-in decoration. These capabilities allow a single primitive to be output to multiple layers simultaneously.

This extension allows variables decorated with the `Layer` and `ViewportIndex` built-ins to be exported from vertex or tessellation shaders, using the `ShaderViewportIndexLayerNV` capability.

This extension adds a new `ViewportMaskNV` built-in decoration that is available for output variables in vertex, tessellation evaluation, and geometry shaders, and a new `ViewportRelativeNV` decoration that can be added on variables decorated with `Layer` when using the `ShaderViewportMaskNV` capability.

When using GLSL source-based shading languages, the `gl_ViewportMask`[] built-in output variable and `viewport_relative` layout qualifier from `GL_NV_viewport_array2` map to the `ViewportMaskNV` and `ViewportRelativeNV` decorations, respectively. Behavior is described in the `GL_NV_viewport_array2` extension specification.

Note | The `ShaderViewportIndexLayerNV` capability is equivalent to the `ShaderViewportIndexLayerEXT` capability added by `VK_EXT_shader_viewport_index_layer`.

## New Enum Constants

- `VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME`

- `VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION`

- `VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME`

- `VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION`

## New or Modified Built-In Variables

- (modified) `Layer`

- (modified) `ViewportIndex`

- `ViewportMaskNV`

## New Variable Decoration

- `ViewportRelativeNV` in `Layer`

## New SPIR-V Capabilities

- `ShaderViewportIndexLayerNV`

- `ShaderViewportMaskNV`

## Version History

- Revision 1, 2017-02-15 (Daniel Koch)

  - Internal revisions

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification.

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0