Edit

kc3-lang/angle/extensions/ANGLE_multiview_multisample.txt

Branch :

  • Show log

    Commit

  • Author : Olli Etuaho
    Date : 2018-09-12 14:44:55
    Hash : 2c8f0845
    Message : 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>

  • extensions/ANGLE_multiview_multisample.txt
  • 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