SPV_NV_stereo_view_rendering
SPV_NV_stereo_view_rendering
Table of Contents
Name Strings
Contact
Contributors
Status
Version
Dependencies
Overview
Extension Name
New Capabilities
New Decorations
New Builtins
New Instructions
Token Number Assignments
Modifications to the SPIR-V Specification, Version 1.1
Validation Rules
Issues
Revision History
Name Strings
SPV_NV_stereo_view_rendering
Contact
To report problems with this extension, please open a new issue at:
Contributors
Daniel Koch, NVIDIA
Status
Complete
Version
Last Modified Date
2017-02-15
Revision
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
Enabling Capabilities
Extra Operands
5256
SecondaryViewportRelativeNV
Apply to a variable. Indicates 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
Enabling Capabilities
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
Implicitly Declares
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
2016-12-18
Daniel Koch
Initial draft
2017-02-15
Daniel Koch
Mark complete.