15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_multiview_texture_multisample
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_multiview_texture_multisample
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Robert Menzel, NVIDIA Corporation (rmenzel 'at' nvidia.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContributors
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Pat Brown, NVIDIA Corporation
165bd8deadSopenharmony_ci    James Helferty, NVIDIA Corporation
175bd8deadSopenharmony_ci    Kedarnath Thangudu, NVIDIA Corporation
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciStatus
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Complete.
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciVersion
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Last Modified Date:  May 13, 2019
265bd8deadSopenharmony_ci    Author Revision: 1
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciNumber
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    OpenGL Extension #537
315bd8deadSopenharmony_ci    OpenGL ES Extension #318
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ciDependencies
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    OpenGL 4.0 or OpenGL ES 3.2 are required.
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    This extension is written against the OpenGL 4.6 specification
385bd8deadSopenharmony_ci    (Core Profile) (February 2, 2019) and OpenGL ES 3.2 specification
395bd8deadSopenharmony_ci    (February 2, 2019).
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    OVR_multiview is required.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ciOverview
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    OVR_multiview introduced multiview rendering to OpenGL and OpenGL ES.
465bd8deadSopenharmony_ci    
475bd8deadSopenharmony_ci    This extension removes one of the limitations of the OVR_multiview 
485bd8deadSopenharmony_ci    extension by allowing the use of multisample textures during multiview rendering.
495bd8deadSopenharmony_ci    
505bd8deadSopenharmony_ci    This is one of two extensions that allow multisampling when using 
515bd8deadSopenharmony_ci    OVR_multiview. Each supports one of the two different approaches to 
525bd8deadSopenharmony_ci    multisampling in OpenGL and OpenGL ES:
535bd8deadSopenharmony_ci    
545bd8deadSopenharmony_ci        Core OpenGL and OpenGL ES 3.1+ have explicit support for multisample 
555bd8deadSopenharmony_ci        texture types, such as TEXTURE_2D_MULTISAMPLE. Applications can access 
565bd8deadSopenharmony_ci        the values of individual samples and can explicitly "resolve" the 
575bd8deadSopenharmony_ci        samples of each pixel down to a single color.
585bd8deadSopenharmony_ci        
595bd8deadSopenharmony_ci        The extension EXT_multisampled_render_to_texture provides support for 
605bd8deadSopenharmony_ci        multisampled rendering to non-multisample texture types, such as 
615bd8deadSopenharmony_ci        TEXTURE_2D. The individual samples for each pixel are maintained 
625bd8deadSopenharmony_ci        internally by the implementation and can not be accessed directly 
635bd8deadSopenharmony_ci        by applications. These samples are eventually resolved implicitly to 
645bd8deadSopenharmony_ci        a single color for each pixel.
655bd8deadSopenharmony_ci        
665bd8deadSopenharmony_ci    This extension supports the first multisampling style with multiview 
675bd8deadSopenharmony_ci    rendering; the OVR_multiview_multisampled_render_to_texture extension 
685bd8deadSopenharmony_ci    supports the second style. Note that support for one of these multiview 
695bd8deadSopenharmony_ci    extensions does not imply support for the other.
705bd8deadSopenharmony_ci    
715bd8deadSopenharmony_ci    
725bd8deadSopenharmony_ciNew Tokens
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    None.
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    
775bd8deadSopenharmony_ciNew Procedures and Functions
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    None.
805bd8deadSopenharmony_ci    
815bd8deadSopenharmony_ci    
825bd8deadSopenharmony_ciModifications to Chapter 9 of the OpenGL ES 3.2 Specification as well as
835bd8deadSopenharmony_ciChapter 9 of the OpenGL 4.6 Specification (Framebuffers and Framebuffer 
845bd8deadSopenharmony_ciObjects) 
855bd8deadSopenharmony_ci    
865bd8deadSopenharmony_ciModifications to all sections added and/or modified by OVR_multiview
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    Where OVR_multiview references a "two-dimensional array texture", replace 
895bd8deadSopenharmony_ci    this with "two-dimensional array texture or two-dimensional multisample 
905bd8deadSopenharmony_ci    array texture" to explicitly allow rendering to multisampled textures.
915bd8deadSopenharmony_ci    
925bd8deadSopenharmony_ci    The following is an explicit list of these changes:
935bd8deadSopenharmony_ci    
945bd8deadSopenharmony_ci    In subsection 9.2.2.2 (introduced by OVR_multiview) replace
955bd8deadSopenharmony_ci        "Finally, multiple layers of two-dimensional array textures can be
965bd8deadSopenharmony_ci        attached to an attachment point."
975bd8deadSopenharmony_ci    with
985bd8deadSopenharmony_ci        "Finally, multiple layers of two-dimensional array textures or 
995bd8deadSopenharmony_ci        two-dimensional multisample array textures can be
1005bd8deadSopenharmony_ci        attached to an attachment point."
1015bd8deadSopenharmony_ci    
1025bd8deadSopenharmony_ci    In the additions to section 9.2.3 (Framebuffer Object Queries) replace
1035bd8deadSopenharmony_ci        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value
1045bd8deadSopenharmony_ci        of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture..."
1055bd8deadSopenharmony_ci    with
1065bd8deadSopenharmony_ci        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value
1075bd8deadSopenharmony_ci        of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture
1085bd8deadSopenharmony_ci        or a two-dimensional multisample array texture..."
1095bd8deadSopenharmony_ci    
1105bd8deadSopenharmony_ci    Also replace
1115bd8deadSopenharmony_ci        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the
1125bd8deadSopenharmony_ci        value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array
1135bd8deadSopenharmony_ci        texture..."
1145bd8deadSopenharmony_ci    with
1155bd8deadSopenharmony_ci        "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the
1165bd8deadSopenharmony_ci        value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array
1175bd8deadSopenharmony_ci        texture or a two-dimensional multisample array texture..."
1185bd8deadSopenharmony_ci    
1195bd8deadSopenharmony_ci    In the addition to the end of section 9.2.8 (Attaching Textures to a Framebuffer)
1205bd8deadSopenharmony_ci    replace
1215bd8deadSopenharmony_ci        "Multiple layers of a two-dimensional array texture can be
1225bd8deadSopenharmony_ci        attached as one of the logical buffers of a framebuffer object with the
1235bd8deadSopenharmony_ci        commands"
1245bd8deadSopenharmony_ci    with
1255bd8deadSopenharmony_ci        "Multiple layers of a two-dimensional array texture or a two-dimensional 
1265bd8deadSopenharmony_ci        multisample array texture can be
1275bd8deadSopenharmony_ci        attached as one of the logical buffers of a framebuffer object with the
1285bd8deadSopenharmony_ci        commands"
1295bd8deadSopenharmony_ci    
1305bd8deadSopenharmony_ci    Later in that section under "Errors" replace
1315bd8deadSopenharmony_ci        "An INVALID_VALUE error is generated if:
1325bd8deadSopenharmony_ci        - <texture> is a two-dimensional array texture and <baseViewIndex> +
1335bd8deadSopenharmony_ci          <numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS."
1345bd8deadSopenharmony_ci    with
1355bd8deadSopenharmony_ci        "An INVALID_VALUE error is generated if:
1365bd8deadSopenharmony_ci        - <texture> is a two-dimensional array texture or a two-dimensional 
1375bd8deadSopenharmony_ci        multisample array texture and <baseViewIndex> +
1385bd8deadSopenharmony_ci          <numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS."
1395bd8deadSopenharmony_ci    
1405bd8deadSopenharmony_ci    Also replace
1415bd8deadSopenharmony_ci        "An INVALID_OPERATION error is generated if texture is non-zero and is not
1425bd8deadSopenharmony_ci        the name of a two-dimensional array texture."
1435bd8deadSopenharmony_ci    with
1445bd8deadSopenharmony_ci        "An INVALID_OPERATION error is generated if texture is non-zero and is not
1455bd8deadSopenharmony_ci        the name of a two-dimensional array texture or a two-dimensional 
1465bd8deadSopenharmony_ci        multisample array texture."
1475bd8deadSopenharmony_ci      
1485bd8deadSopenharmony_ci    
1495bd8deadSopenharmony_ciIssues
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    (1) This extension is based on an OVR extension, why call it EXT?
1525bd8deadSopenharmony_ci    
1535bd8deadSopenharmony_ci    While started as a single vendor extension, OVR_multiview and OVR_multiview2
1545bd8deadSopenharmony_ci    are already supported by multiple vendors. This new extension also has the 
1555bd8deadSopenharmony_ci    support from multiple vendors to be specified as EXT.
1565bd8deadSopenharmony_ci    
1575bd8deadSopenharmony_ci    (2) Can this extension be used together with 
1585bd8deadSopenharmony_ci    OVR_multiview_multisampled_render_to_texture if both are supported?
1595bd8deadSopenharmony_ci    
1605bd8deadSopenharmony_ci    The two extensions can be used together in the same application, but not in 
1615bd8deadSopenharmony_ci    the same framebuffer. OVR_multiview_multisampled_render_to_texture is based 
1625bd8deadSopenharmony_ci    on EXT_multisampled_render_to_texture, which explicitly does not permit a 
1635bd8deadSopenharmony_ci    single framebuffer to contain explicit multisample texture types (from 
1645bd8deadSopenharmony_ci    OpenGL ES 3.1 and core OpenGL) and "multisampled" bindings of non-multisample 
1655bd8deadSopenharmony_ci    texture types.
1665bd8deadSopenharmony_ci    
1675bd8deadSopenharmony_ciRevision History
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci      Rev.    Date    Author    Changes
1705bd8deadSopenharmony_ci      ----  --------  --------  -----------------------------------------
1715bd8deadSopenharmony_ci        1   05/13/19  rmenzel   Initial version.
172