| Name | |
| EXT_multiview_texture_multisample | |
| Name Strings | |
| GL_EXT_multiview_texture_multisample | |
| Contact | |
| Robert Menzel, NVIDIA Corporation (rmenzel 'at' nvidia.com) | |
| Contributors | |
| Pat Brown, NVIDIA Corporation | |
| James Helferty, NVIDIA Corporation | |
| Kedarnath Thangudu, NVIDIA Corporation | |
| Status | |
| Complete. | |
| Version | |
| Last Modified Date: May 13, 2019 | |
| Author Revision: 1 | |
| Number | |
| OpenGL Extension #537 | |
| OpenGL ES Extension #318 | |
| Dependencies | |
| OpenGL 4.0 or OpenGL ES 3.2 are required. | |
| This extension is written against the OpenGL 4.6 specification | |
| (Core Profile) (February 2, 2019) and OpenGL ES 3.2 specification | |
| (February 2, 2019). | |
| OVR_multiview is required. | |
| Overview | |
| OVR_multiview introduced multiview rendering to OpenGL and OpenGL ES. | |
| This extension removes one of the limitations of the OVR_multiview | |
| extension by allowing the use of multisample textures during multiview rendering. | |
| This is one of two extensions that allow multisampling when using | |
| OVR_multiview. Each supports one of the two different approaches to | |
| multisampling in OpenGL and OpenGL ES: | |
| Core OpenGL and OpenGL ES 3.1+ have explicit support for multisample | |
| texture types, such as TEXTURE_2D_MULTISAMPLE. Applications can access | |
| the values of individual samples and can explicitly "resolve" the | |
| samples of each pixel down to a single color. | |
| The extension EXT_multisampled_render_to_texture provides support for | |
| multisampled rendering to non-multisample texture types, such as | |
| TEXTURE_2D. The individual samples for each pixel are maintained | |
| internally by the implementation and can not be accessed directly | |
| by applications. These samples are eventually resolved implicitly to | |
| a single color for each pixel. | |
| This extension supports the first multisampling style with multiview | |
| rendering; the OVR_multiview_multisampled_render_to_texture extension | |
| supports the second style. Note that support for one of these multiview | |
| extensions does not imply support for the other. | |
| New Tokens | |
| None. | |
| New Procedures and Functions | |
| None. | |
| Modifications to Chapter 9 of the OpenGL ES 3.2 Specification as well as | |
| Chapter 9 of the OpenGL 4.6 Specification (Framebuffers and Framebuffer | |
| Objects) | |
| Modifications to all sections added and/or modified by OVR_multiview | |
| Where OVR_multiview references a "two-dimensional array texture", replace | |
| this with "two-dimensional array texture or two-dimensional multisample | |
| array texture" to explicitly allow rendering to multisampled textures. | |
| The following is an explicit list of these changes: | |
| In subsection 9.2.2.2 (introduced by OVR_multiview) replace | |
| "Finally, multiple layers of two-dimensional array textures can be | |
| attached to an attachment point." | |
| with | |
| "Finally, multiple layers of two-dimensional array textures or | |
| two-dimensional multisample array textures can be | |
| attached to an attachment point." | |
| In the additions to section 9.2.3 (Framebuffer Object Queries) replace | |
| "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value | |
| of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture..." | |
| with | |
| "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value | |
| of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture | |
| or a two-dimensional multisample array texture..." | |
| Also replace | |
| "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the | |
| value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array | |
| texture..." | |
| with | |
| "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the | |
| value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array | |
| texture or a two-dimensional multisample array texture..." | |
| In the addition to the end of section 9.2.8 (Attaching Textures to a Framebuffer) | |
| replace | |
| "Multiple layers of a two-dimensional array texture can be | |
| attached as one of the logical buffers of a framebuffer object with the | |
| commands" | |
| with | |
| "Multiple layers of a two-dimensional array texture or a two-dimensional | |
| multisample array texture can be | |
| attached as one of the logical buffers of a framebuffer object with the | |
| commands" | |
| Later in that section under "Errors" replace | |
| "An INVALID_VALUE error is generated if: | |
| - <texture> is a two-dimensional array texture and <baseViewIndex> + | |
| <numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS." | |
| with | |
| "An INVALID_VALUE error is generated if: | |
| - <texture> is a two-dimensional array texture or a two-dimensional | |
| multisample array texture and <baseViewIndex> + | |
| <numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS." | |
| Also replace | |
| "An INVALID_OPERATION error is generated if texture is non-zero and is not | |
| the name of a two-dimensional array texture." | |
| with | |
| "An INVALID_OPERATION error is generated if texture is non-zero and is not | |
| the name of a two-dimensional array texture or a two-dimensional | |
| multisample array texture." | |
| Issues | |
| (1) This extension is based on an OVR extension, why call it EXT? | |
| While started as a single vendor extension, OVR_multiview and OVR_multiview2 | |
| are already supported by multiple vendors. This new extension also has the | |
| support from multiple vendors to be specified as EXT. | |
| (2) Can this extension be used together with | |
| OVR_multiview_multisampled_render_to_texture if both are supported? | |
| The two extensions can be used together in the same application, but not in | |
| the same framebuffer. OVR_multiview_multisampled_render_to_texture is based | |
| on EXT_multisampled_render_to_texture, which explicitly does not permit a | |
| single framebuffer to contain explicit multisample texture types (from | |
| OpenGL ES 3.1 and core OpenGL) and "multisampled" bindings of non-multisample | |
| texture types. | |
| Revision History | |
| Rev. Date Author Changes | |
| ---- -------- -------- ----------------------------------------- | |
| 1 05/13/19 rmenzel Initial version. |