1Name
2
3    EXT_multiview_texture_multisample
4
5Name Strings
6
7    GL_EXT_multiview_texture_multisample
8
9Contact
10
11    Robert Menzel, NVIDIA Corporation (rmenzel 'at' nvidia.com)
12
13Contributors
14
15    Pat Brown, NVIDIA Corporation
16    James Helferty, NVIDIA Corporation
17    Kedarnath Thangudu, NVIDIA Corporation
18
19Status
20
21    Complete.
22
23Version
24
25    Last Modified Date:  May 13, 2019
26    Author Revision: 1
27
28Number
29
30    OpenGL Extension #537
31    OpenGL ES Extension #318
32
33Dependencies
34
35    OpenGL 4.0 or OpenGL ES 3.2 are required.
36
37    This extension is written against the OpenGL 4.6 specification
38    (Core Profile) (February 2, 2019) and OpenGL ES 3.2 specification
39    (February 2, 2019).
40
41    OVR_multiview is required.
42
43Overview
44
45    OVR_multiview introduced multiview rendering to OpenGL and OpenGL ES.
46    
47    This extension removes one of the limitations of the OVR_multiview 
48    extension by allowing the use of multisample textures during multiview rendering.
49    
50    This is one of two extensions that allow multisampling when using 
51    OVR_multiview. Each supports one of the two different approaches to 
52    multisampling in OpenGL and OpenGL ES:
53    
54        Core OpenGL and OpenGL ES 3.1+ have explicit support for multisample 
55        texture types, such as TEXTURE_2D_MULTISAMPLE. Applications can access 
56        the values of individual samples and can explicitly "resolve" the 
57        samples of each pixel down to a single color.
58        
59        The extension EXT_multisampled_render_to_texture provides support for 
60        multisampled rendering to non-multisample texture types, such as 
61        TEXTURE_2D. The individual samples for each pixel are maintained 
62        internally by the implementation and can not be accessed directly 
63        by applications. These samples are eventually resolved implicitly to 
64        a single color for each pixel.
65        
66    This extension supports the first multisampling style with multiview 
67    rendering; the OVR_multiview_multisampled_render_to_texture extension 
68    supports the second style. Note that support for one of these multiview 
69    extensions does not imply support for the other.
70    
71    
72New Tokens
73
74    None.
75
76    
77New Procedures and Functions
78
79    None.
80    
81    
82Modifications to Chapter 9 of the OpenGL ES 3.2 Specification as well as
83Chapter 9 of the OpenGL 4.6 Specification (Framebuffers and Framebuffer 
84Objects) 
85    
86Modifications to all sections added and/or modified by OVR_multiview
87
88    Where OVR_multiview references a "two-dimensional array texture", replace 
89    this with "two-dimensional array texture or two-dimensional multisample 
90    array texture" to explicitly allow rendering to multisampled textures.
91    
92    The following is an explicit list of these changes:
93    
94    In subsection 9.2.2.2 (introduced by OVR_multiview) replace
95        "Finally, multiple layers of two-dimensional array textures can be
96        attached to an attachment point."
97    with
98        "Finally, multiple layers of two-dimensional array textures or 
99        two-dimensional multisample array textures can be
100        attached to an attachment point."
101    
102    In the additions to section 9.2.3 (Framebuffer Object Queries) replace
103        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value
104        of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture..."
105    with
106        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value
107        of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture
108        or a two-dimensional multisample array texture..."
109    
110    Also replace
111        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the
112        value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array
113        texture..."
114    with
115        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the
116        value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array
117        texture or a two-dimensional multisample array texture..."
118    
119    In the addition to the end of section 9.2.8 (Attaching Textures to a Framebuffer)
120    replace
121        "Multiple layers of a two-dimensional array texture can be
122        attached as one of the logical buffers of a framebuffer object with the
123        commands"
124    with
125        "Multiple layers of a two-dimensional array texture or a two-dimensional 
126        multisample array texture can be
127        attached as one of the logical buffers of a framebuffer object with the
128        commands"
129    
130    Later in that section under "Errors" replace
131        "An INVALID_VALUE error is generated if:
132        - <texture> is a two-dimensional array texture and <baseViewIndex> +
133          <numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS."
134    with
135        "An INVALID_VALUE error is generated if:
136        - <texture> is a two-dimensional array texture or a two-dimensional 
137        multisample array texture and <baseViewIndex> +
138          <numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS."
139    
140    Also replace
141        "An INVALID_OPERATION error is generated if texture is non-zero and is not
142        the name of a two-dimensional array texture."
143    with
144        "An INVALID_OPERATION error is generated if texture is non-zero and is not
145        the name of a two-dimensional array texture or a two-dimensional 
146        multisample array texture."
147      
148    
149Issues
150
151    (1) This extension is based on an OVR extension, why call it EXT?
152    
153    While started as a single vendor extension, OVR_multiview and OVR_multiview2
154    are already supported by multiple vendors. This new extension also has the 
155    support from multiple vendors to be specified as EXT.
156    
157    (2) Can this extension be used together with 
158    OVR_multiview_multisampled_render_to_texture if both are supported?
159    
160    The two extensions can be used together in the same application, but not in 
161    the same framebuffer. OVR_multiview_multisampled_render_to_texture is based 
162    on EXT_multisampled_render_to_texture, which explicitly does not permit a 
163    single framebuffer to contain explicit multisample texture types (from 
164    OpenGL ES 3.1 and core OpenGL) and "multisampled" bindings of non-multisample 
165    texture types.
166    
167Revision History
168
169      Rev.    Date    Author    Changes
170      ----  --------  --------  -----------------------------------------
171        1   05/13/19  rmenzel   Initial version.
172