/ appendices / VK_NV_viewport_array2.txt
VK_NV_viewport_array2.txt
  1  include::meta/VK_NV_viewport_array2.txt[]
  2  
  3  *Last Modified Date*::
  4      2017-02-15
  5  *Interactions and External Dependencies*::
  6    - This extension requires the
  7      https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NV_viewport_array2.html[`SPV_NV_viewport_array2`]
  8      SPIR-V extension.
  9    - This extension requires the
 10      https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt[`GL_NV_viewport_array2`]
 11      extension for GLSL source languages.
 12    - This extension requires the pname:geometryShader and pname:multiViewport
 13      features.
 14    - This extension interacts with the pname:tessellationShader feature.
 15  *Contributors*::
 16    - Piers Daniell, NVIDIA
 17    - Jeff Bolz, NVIDIA
 18  
 19  This extension adds support for the following SPIR-V extension in Vulkan:
 20  
 21    * `SPV_NV_viewport_array2`
 22  
 23  which allows a single primitive to be broadcast to multiple viewports and/or
 24  multiple layers.
 25  A new shader built-in output code:ViewportMaskNV is provided, which allows a
 26  single primitive to be output to multiple viewports simultaneously.
 27  Also, a new SPIR-V decoration is added to control whether the effective
 28  viewport index is added into the variable decorated with the code:Layer
 29  built-in decoration.
 30  These capabilities allow a single primitive to be output to multiple layers
 31  simultaneously.
 32  
 33  This extension allows variables decorated with the code:Layer and
 34  code:ViewportIndex built-ins to be exported from vertex or tessellation
 35  shaders, using the code:ShaderViewportIndexLayerNV capability.
 36  
 37  This extension adds a new code:ViewportMaskNV built-in decoration that is
 38  available for output variables in vertex, tessellation evaluation, and
 39  geometry shaders, and a new code:ViewportRelativeNV decoration that can be
 40  added on variables decorated with code:Layer when using the
 41  code:ShaderViewportMaskNV capability.
 42  
 43  When using GLSL source-based shading languages, the code:gl_ViewportMask[]
 44  built-in output variable and code:viewport_relative layout qualifier from
 45  `GL_NV_viewport_array2` map to the code:ViewportMaskNV and
 46  code:ViewportRelativeNV decorations, respectively.
 47  Behaviour is described in the `GL_NV_viewport_array2` extension
 48  specificiation.
 49  
 50  ifdef::VK_EXT_shader_viewport_index_layer[]
 51  [NOTE]
 52  .Note
 53  ====
 54  The code:ShaderViewportIndexLayerNV capability is equivalent to the
 55  code:ShaderViewportIndexLayerEXT capability added by
 56  `<<VK_EXT_shader_viewport_index_layer>>`.
 57  ====
 58  endif::VK_EXT_shader_viewport_index_layer[]
 59  
 60  
 61  === New Object Types
 62  
 63  None.
 64  
 65  === New Enum Constants
 66  
 67  None.
 68  
 69  === New Enums
 70  
 71  None.
 72  
 73  === New Structures
 74  
 75  None.
 76  
 77  === New Functions
 78  
 79  None.
 80  
 81  === New or Modified Built-In Variables
 82  
 83    * (modified) <<interfaces-builtin-variables-layer,code:Layer>>
 84    * (modified)
 85      <<interfaces-builtin-variables-viewportindex,code:ViewportIndex>>
 86    * <<interfaces-builtin-variables-viewportmask,code:ViewportMaskNV>>
 87  
 88  === New Variable Decoration
 89  
 90    * <<interfaces-builtin-variables-layer,code:ViewportRelativeNV in
 91      code:Layer>>
 92  
 93  === New SPIR-V Capabilities
 94  
 95    * <<spirvenv-capabilities-table-viewportarray2,code:ShaderViewportIndexLayerNV>>
 96    * <<spirvenv-capabilities-table-viewportarray2,code:ShaderViewportMaskNV>>
 97  
 98  === Issues
 99  
100  None yet!
101  
102  === Version History
103  
104    * Revision 1, 2017-02-15 (Daniel Koch)
105      - Internal revisions