Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a73186252db3bc5c0877e3ecb1764556efdb6dc9
      
https://github.com/WebKit/WebKit/commit/a73186252db3bc5c0877e3ecb1764556efdb6dc9
  Author: Alejandro G. Castro <[email protected]>
  Date:   2026-07-17 (Fri, 17 Jul 2026)

  Changed paths:
    M 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp
    M 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.cpp

  Log Message:
  -----------
  [GTK][WPE]  The scrolling thread shouldn't block the compositor thread to 
flush compositing state
https://bugs.webkit.org/show_bug.cgi?id=319596

Reviewed by Fujii Hironori.

The scene state lock currently covers the compositor's entire per-layer flush
(positions, transforms, animations, backing store and tile bookkeeping), so the
scrolling thread's end-of-walk commit in flushPendingState() can wait for up to
a whole flush, milliseconds on layer-heavy pages, adding input latency.

Split the compositor's flush in two passes. The first pass, under the scene
state lock, applies only Change::Position and Change::BoundsOrigin to the
targets: positions are the only state committed by the scrolling thread, and
applying them for the whole tree under a single lock hold is what keeps the
compositor from observing a half-committed set (bug 315185). The second pass
everything else, runs without the scene state lock.

* 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:
(WebCore::CoordinatedPlatformLayer::flushPositionChanges):
(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnTarget):
(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnSkiaTarget):
* 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h:
* 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.cpp:
(WebKit::CoordinatedSceneState::flushCompositingState):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to