/ 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