Name Strings

SPV_NV_stereo_view_rendering

Contact

See Issues list in the Khronos SPIRV-Headers repository: https://github.com/KhronosGroup/SPIRV-Headers

Contributors

  • Daniel Koch, NVIDIA

Status

  • Complete

Version

Last Modified Date

2017-02-15

Revision

2

Dependencies

This extension is written against the SPIR-V Specification, Version 1.1 Revision 4.

This extension requires SPIR-V 1.0.

This extension requires SVP_NV_viewport_array2.

Overview

This extension adds a new capability to support the OpenGL GL_NV_stereo_view_rendering extension in SPIR-V.

The new ShaderStereoViewNV capability adds two builtin variables, SecondaryPositionNV and SecondaryViewportMaskNV, which can be exported from Vertex, Tessellation or Geometry shaders, or imported to Tessellation or Geometry shaders.

The SecondaryPositionNV builtin decoration corresponds to the gl_SecondaryPositionNV variable in GLSL and is used to specify the position for the second view.

The SecondaryViewportMaskNV builtin decoration corresponds to the gl_SecondaryViewportMaskNV[] variable in GLSL and is used to specify the viewport mask for the second view.

This capability also adds the SecondaryViewportRelativeNV decoration that corresponds to the secondary_view_offset layout qualifier that can be applied to the gl_Layer geometry shader output variable in GLSL.

Extension Name

To use this extension within a SPIR-V module, the following OpExtension must be present in the module:

OpExtension "SPV_NV_stereo_view_rendering"

New Capabilities

This extension introduces a new capability:

ShaderStereoViewNV

New Decorations

Decoration added under the ShaderStereoViewNV capability:

SecondaryViewportRelativeNV

New Builtins

Two new builtins are added as outputs for the Vertex, Tessellation and Geometry Execution Models under the ShaderStereoViewNV capability:

SecondaryPositionNV
SecondaryViewportMaskNV

SecondaryPositionNV can also be used as an input for the Tesselation and Geometry Execution Models.

New Instructions

None.

Token Number Assignments

SecondaryViewportRelativeNV

5256

SecondaryPositionNV

5257

SecondaryViewportMaskNV

5258

ShaderStereoViewNV

5259

Modifications to the SPIR-V Specification, Version 1.1

(Modify Section 3.20, Decoration, adding a row to the Decoration table)
Decoration Required Capability Extra Operands

5256

SecondaryViewportRelativeNV
Apply to a variable. Indictates the layer offset for primitives in the second view. If used with ViewportRelativeNV, the layer used for rendering primitives of the second view is computed by adding the value of the variable decorated with ViewportIndex to the value specified by SecondaryViewportRelativeNV Only valid for the Output Storage Class.

ShaderStereoViewNV

Literal Number Offset

(Modify Section 3.21, BuiltIn)

(add two new rows to the BuiltIn table)

BuiltIn Required Capability

5257

SecondaryPositionNV
Output vertex position for secondary view in Vertex, Tessellation, or Geometry Execution Model, and input secondary view position for Tessellation and Geometry Execution Models. See Vulkan or OpenGL API specifications for more detail.

ShaderStereoViewNV

5258

SecondaryViewportMaskNV
Output secondary viewport mask in Vertex, Tessellation, or Geometry Execution Model. See Vulkan or OpenGL API specifications for more detail.

ShaderStereoViewNV

(Modify Section 3.31, Capability, add a new row to the Capability table)
Capability Depends On Enabled by Extension

5259

ShaderStereoViewNV

ShaderViewportMaskNV

SPV_NV_stereo_view_rendering

Validation Rules

An OpExtension must be added to the SPIR-V for validation layers to check legal use of this extension:

OpExtension "SPV_NV_stereo_view_rendering"

Issues

None yet!

Revision History

Rev Date Author Changes

1

2016-12-18

Daniel Koch

Initial draft

2

2017-02-15

Daniel Koch

Mark complete.