⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 286960 in webkit


Ignore:
Timestamp:
Dec 13, 2021, 11:46:53 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

REGRESSION(Safari 15, BigSur): Poor video texture upload performance with MacBook M1, ANGLE OpenGL backend
https://bugs.webkit.org/show_bug.cgi?id=232235
<rdar://problem/84878815>
Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-12-13
Reviewed by Dean Jackson.

Remove validation for IOSurface element size when a IOSurface is bound
to a pbuffer. The IOSurfaceGetBytesPerElementOfPlane is not valid for some internal formats
that might be compressed.

Will add a WebKit level test in subsequent fix.
Will add an ANGLE level test during upstreaming of the patch.

Same as "Textures Fail to Render in WebGL from HLS Stream on iPhone 12 [iOS 14.2]"
but this time for CGL.
https://webkit.org/b/218637 rdar://problem/71102126

Remove incorrect validation that IOSurface pixel format matches
the pixel format of the texture image being specified.

The "Element" in IOSurface is a block of pixels, while the validation assumed
it means one pixel. The validation failed for a compressed format.

Currently we map non-public YUV formats, to which there is no elequent way
of implementing the validation.

  • src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:

(rx::IOSurfaceSurfaceCGL::validateAttributes):

Location:
trunk/Source/ThirdParty/ANGLE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/ThirdParty/ANGLE/ChangeLog

    r286899 r286960  
     12021-12-13  Kimmo Kinnunen  <kkinnunen@apple.com>
     2
     3        REGRESSION(Safari 15, BigSur): Poor video texture upload performance with MacBook M1, ANGLE OpenGL backend
     4        https://bugs.webkit.org/show_bug.cgi?id=232235
     5        <rdar://problem/84878815>
     6        Reviewed by Dean Jackson.
     7
     8        Remove validation for IOSurface element size when a IOSurface is bound
     9        to a pbuffer. The IOSurfaceGetBytesPerElementOfPlane is not valid for some internal formats
     10        that might be compressed.
     11
     12        Will add a WebKit level test in subsequent fix.
     13        Will add an ANGLE level test during upstreaming of the patch.
     14
     15        Same as "Textures Fail to Render in WebGL from HLS Stream on iPhone 12 [iOS 14.2]"
     16        but this time for CGL.
     17        https://webkit.org/b/218637  rdar://problem/71102126
     18
     19        Remove incorrect validation that IOSurface pixel format matches
     20        the pixel format of the texture image being specified.
     21
     22        The "Element" in IOSurface is a block of pixels, while the validation assumed
     23        it means one pixel. The validation failed for a compressed format.
     24
     25        Currently we map non-public YUV formats, to which there is no elequent way
     26        of implementing the validation.
     27
     28
     29        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
     30        (rx::IOSurfaceSurfaceCGL::validateAttributes):
     31
    1322021-12-10  Kyle Piddington  <kpiddington@apple.com>
    233
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp

    r270351 r286960  
    251251    }
    252252
    253     // Check that the format matches this IOSurface plane
    254     if (IOSurfaceGetBytesPerElementOfPlane(ioSurface, plane) !=
    255         kIOSurfaceFormats[formatIndex].componentBytes)
    256     {
    257         return false;
    258     }
     253    // FIXME: Check that the format matches this IOSurface plane for pixel formats that we know of.
     254    // We could map IOSurfaceGetPixelFormat to expected type plane and format type.
     255    // However, the caller might supply us non-public pixel format, which makes exhaustive checks
     256    // problematic.
    259257
    260258    return true;
Note: See TracChangeset for help on using the changeset viewer.