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.
