Hash :
2c8f0845
Author :
Date :
2018-09-12T14:44:55
Add ANGLE_multiview_multisample We add a novel multiview multisampling extension that includes the requirement to explicitly resolve the multisampled framebuffer. The explicit resolve is much more straightforward to implement on top of OpenGL and D3D11 than implicit resolve found in the native extension OVR_multiview_multisampled_render_to_texture. It also has predictable performance characteristics. The extension allows multiview drawing to 2D multisample texture arrays and is now enabled on both the GL backend and the D3D11 backend. The implementation is fairly simple, as it involves just small changes in validation to allow multisampled framebuffer attachments. The multiview rendering logic is exactly the same regardless of whether multisampling is enabled. For the most part the same tests are used to test both multisampled and non-multisampled rendering. The tests will use a different framebuffer setup depending on the test param. They resolve the multisampled framebuffer to a non-multisampled framebuffer prior to any readbacks from the framebuffer. Some of the tests are adjusted so that they have the correct sub-pixel positioning of multisampled quads, so there won't be any pixels that would be just partially covered. The tests don't have any tolerance for partially covered pixels - if we find any platforms where the tests run into a sub-pixel positioning corner case, tolerance may need to be added later. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I590d7f300a92ea5439f2720d9db14a7976db2e1d Reviewed-on: https://chromium-review.googlesource.com/1221214 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
Name
ANGLE_multiview_multisample
Name Strings
GL_ANGLE_multiview_multisample
Contributors
Olli Etuaho, NVIDIA Corporation
Contact
Olli Etuaho (oetuaho 'at' nvidia.com)
Status
Incomplete
Version
Last Modified Date: September 12, 2018
Author Revision: 1
Number
OpenGL ES Extension XX
Dependencies
OpenGL ES 3.0 and the extensions ANGLE_texture_multisample, ANGLE_multiview
and OES_texture_storage_multisample_2d_array are required.
With OpenGL ES 3.1, only the extensions ANGLE_multiview and
OES_texture_storage_multisample_2d_array are required.
Overview
This extension enhances the functionality introduced in ANGLE_multiview by
enabling rendering into multisample texture arrays in addition to regular
non-multisampled texture arrays.
IP Status
No known IP claims.
New Tokens
None
New Procedures and Functions
None
Additions to Chapter 4 of the OpenGL ES 3.0 Specification
(Per-Fragment Operations and the Framebuffer)
Modify section 4.4.2 (Attaching Images to Framebuffer Objects), p. 202
Add the following bullet point:
"* Layers of a two-dimensional multisample array texture which can be used
for multi-view rendering."
Modify the error list of FramebufferTextureMultiviewLayeredANGLE:
Change
"An INVALID_OPERATION error is generated if texture is not zero,
and does not name an existing texture object of type TEXTURE_2D_ARRAY."
to
"An INVALID_OPERATION error is generated if texture is not zero,
and does not name an existing texture object of type TEXTURE_2D_ARRAY or
TEXTURE_2D_MULTISAMPLE_ARRAY_OES."
Modify section 4.4.4.1 (Framebuffer Attachment Completeness), p. 213
Change the bullet point about num_views and base_view_index:
"If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is TEXTURE and
the value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME names a two-dimensional
array texture or a two-dimensional multisample array texture, then the sum
of FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_ANGLE and
FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_ANGLE must be less than the
number of layers in the texture."
Additions to the AGL/EGL/GLX/WGL Specifications
None
Errors
None
Issues