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