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