[webkit-changes] [WebKit/WebKit] 57e516: REGRESSION(260575 at main): Google Meet Video renders...

Jer Noble noreply at github.com
Thu Mar 9 12:09:53 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57e51615e4e3388bcf66329ac3591f7121bd20ee
      https://github.com/WebKit/WebKit/commit/57e51615e4e3388bcf66329ac3591f7121bd20ee
  Author: Jer Noble <jer.noble at apple.com>
  Date:   2023-03-09 (Thu, 09 Mar 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm
    M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp

  Log Message:
  -----------
  REGRESSION(260575 at main): Google Meet Video renders blank (Affects all WebRTC and getUserMedia() rendering)
https://bugs.webkit.org/show_bug.cgi?id=253632
rdar://105795272

Reviewed by Eric Carlson.

When creating a layer for remote rendering, if the HTMLMediaElement does not have a valid
layerHostingContextID, try to create a local layer rather than passing over just the contextID.
This results in non-GPU-process hosted MediaPlayers (like all media-stream backed MediaPlayers) to
create a local layer, even when UI-side compositing is enabled. But in the case of GPU-process
hosted media elements, don't _actually_ create a new layer if we don't have a valid
layerHostingContextID. Whats more, whenever the layerHostingContextID changes, cause the layer to
get re-created by clearing m_videoLayer.

This exposes a bug in RemoteLayerTreeHostIOS, where added layers are never added to the
m_videoLayers map, so when those layers are removed, resources inside VideoFullscreenManagerProxy
aren't released.

* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setContentsToVideoElement):
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::platformLayer const):
(WebKit::MediaPlayerPrivateRemote::setLayerHostingContextID):

Canonical link: https://commits.webkit.org/261455@main




More information about the webkit-changes mailing list