[Webkit-unassigned] [Bug 257290] New: Multiple RemoteLayerTreeDrawingAreas should not be driven from a single display refresh monitor

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed May 24 15:45:43 PDT 2023


https://bugs.webkit.org/show_bug.cgi?id=257290

            Bug ID: 257290
           Summary: Multiple RemoteLayerTreeDrawingAreas should not be
                    driven from a single display refresh monitor
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Layout and Rendering
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: mattwoodrow at apple.com
                CC: bfulgham at webkit.org, simon.fraser at apple.com,
                    zalan at apple.com

RemoteLayerTreeDisplayRefreshMonitor is mostly just a wrapper around asking the RemoteLayerTreeDrawingArea to schedule when it wants to display next. This is specific to that drawing area, and can be throttled if the drawing area is failing to commit layer trees as fast as expected.

DisplayRefreshMonitorManager caches DisplayRefreshMonitors, and shares them between all WebCore::Page/RenderingUpdateSchedulers on the same Display. This means if we have multiple RemoteLayerTreeDrawingAreas on the same display (and in the same process), we'll be sharing a single RemoteLayerTreeDisplayRefreshMonitor, driven at the effective rate of one of the drawing areas.

It looks like DrawingAreaCoordinatedGraphics has the same problem, and synthesises a unique DisplayID for each DrawingArea to ensure a unique display refresh monitor for each -  https://searchfox.org/wubkat/rev/dab28312bc80bc475196b7d6221b060347254e33/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp#565-569

I think RenderingUpdateScheduler as a DisplayRefreshMonitorClient isn't the right abstraction for what behaviour we want.

I think we should make WebCore::Page ask the ChromeClient/DrawingArea more directly to schedule the next rendering update, and DrawingArea implementations can choose to use DisplayRefreshMonitor to implement this if they choose. RemoteLayerTreeDrawingArea can just use its internal IPC-based scheduling, and we shouldn't need RemoteLayerTreeDisplayRefreshMonitor.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20230524/1325c238/attachment.htm>


More information about the webkit-unassigned mailing list