[webkit-changes] [WebKit/WebKit] 346fda: RemoteLayerTreeDrawingAreaProxy needs to hold use-...

mattwoodrow noreply at github.com
Wed Aug 23 15:06:32 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 346fdad1569da1c50564a62ee569a7f519d9cd46
      https://github.com/WebKit/WebKit/commit/346fdad1569da1c50564a62ee569a7f519d9cd46
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-08-23 (Wed, 23 Aug 2023)

  Changed paths:
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

  Log Message:
  -----------
  RemoteLayerTreeDrawingAreaProxy needs to hold use-count for IOSurfaces until CA commits.
https://bugs.webkit.org/show_bug.cgi?id=260374
<rdar://112269436>

Reviewed by Simon Fraser.

CoreAnimation doesn't guarantee to have marked the IOSurface as in-use until the transaction is committed, not once the layer mutation happens.

This code was removed in 266557 at main (rdar://111986083) with the belief that it was no longer necessary.

This adds it back, but replaces kCATransactionPhasePostSynchronize with kCATransactionPhasePostCommit.

Waiting for the synchronize phase was a performance regression, and is unnecessary with the latest CoreAnimation, but we
still need to wait for the commit to happen. WebKit doesn't explicitly commit the CoreAnimation transaction, so the implicit
transaction commit might happen significantly later, and we need to ensure that we continue to mark any IOSurfaces as in-use (by
retaining the wrapping mach_port) in the interim.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

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




More information about the webkit-changes mailing list