// Copyright (c) 2017-2020 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_NVX_multiview_per_view_attributes.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2017-01-13
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/NV/SPV_NVX_multiview_per_view_attributes.html[`SPV_NVX_multiview_per_view_attributes`]
  - This extension provides API support for
    https://github.com/KhronosGroup/GLSL/blob/master/extensions/nvx/GL_NVX_multiview_per_view_attributes.txt[`GL_NVX_multiview_per_view_attributes`]
  - This extension interacts with `apiext:VK_NV_viewport_array2`.
*Contributors*::
  - Jeff Bolz, NVIDIA
  - Daniel Koch, NVIDIA

=== Description

This extension adds a new way to write shaders to be used with multiview
subpasses, where the attributes for all views are written out by a single
invocation of the
<<pipeline-graphics-subsets-pre-rasterization,pre-rasterization shader
stages>>.
Related SPIR-V and GLSL extensions `SPV_NVX_multiview_per_view_attributes`
and `GL_NVX_multiview_per_view_attributes` introduce per-view position and
viewport mask attributes arrays, and this extension defines how those
per-view attribute arrays are interpreted by Vulkan.
Pipelines using per-view attributes may: only execute the
<<pipeline-graphics-subsets-pre-rasterization,pre-rasterization shader
stages>> once for all views rather than once per-view, which reduces
redundant shading work.

A subpass creation flag controls whether the subpass uses this extension.
A subpass must: either exclusively use this extension or not use it at all.

Some Vulkan implementations only support the position attribute varying
between views in the X component.
A subpass can declare via a second creation flag whether all pipelines
compiled for this subpass will obey this restriction.

Shaders that use the new per-view outputs (e.g. code:gl_PositionPerViewNV)
must: also write the non-per-view output (code:gl_Position), and the values
written must: be such that `gl_Position =
gl_PositionPerViewNV[gl_ViewIndex]` for all views in the subpass.
Implementations are free to either use the per-view outputs or the
non-per-view outputs, whichever would be more efficient.

If `apiext:VK_NV_viewport_array2` is not also supported and enabled, the
per-view viewport mask must: not be used.

include::{generated}/interfaces/VK_NVX_multiview_per_view_attributes.txt[]

=== New Built-In Variables

  * <<interfaces-builtin-variables-positionperview,code:PositionPerViewNV>>
  * <<interfaces-builtin-variables-viewportmaskperview,code:ViewportMaskPerViewNV>>

=== New SPIR-V Capabilities

  * <<spirvenv-capabilities-table-PerViewAttributesNV,code:PerViewAttributesNV>>

=== Examples

[source,c]
---------------------------------------------------
#version 450 core

#extension GL_KHX_multiview : enable
#extension GL_NVX_multiview_per_view_attributes : enable

layout(location = 0) in vec4 position;
layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf;

void main()
{
    // Output both per-view positions and gl_Position as a function
    // of gl_ViewIndex
    gl_PositionPerViewNV[0] = buf.mvpPerView[0] * position;
    gl_PositionPerViewNV[1] = buf.mvpPerView[1] * position;
    gl_Position = buf.mvpPerView[gl_ViewIndex] * position;
}

---------------------------------------------------


=== Version History

 * Revision 1, 2017-01-13 (Jeff Bolz)
   - Internal revisions
