Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1be44ed3b71a2438bb4ac84a49945d016fbf4684
      
https://github.com/WebKit/WebKit/commit/1be44ed3b71a2438bb4ac84a49945d016fbf4684
  Author: Carlos Garcia Campos <[email protected]>
  Date:   2026-06-17 (Wed, 17 Jun 2026)

  Changed paths:
    M 
Source/WebCore/page/scrolling/coordinated/ScrollingTreeFixedNodeCoordinated.cpp
    M 
Source/WebCore/page/scrolling/coordinated/ScrollingTreeFrameScrollingNodeCoordinated.cpp
    M 
Source/WebCore/page/scrolling/coordinated/ScrollingTreePositionedNodeCoordinated.cpp
    M 
Source/WebCore/page/scrolling/coordinated/ScrollingTreeStickyNodeCoordinated.cpp
    M Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp
    M Source/WebCore/platform/graphics/skia/SkiaBackingStore.h
    M Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp
    M Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h
    M 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStore.cpp
    M 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStore.h
    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
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.h
    M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostPlayStation.cpp
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositorPlayStation.cpp

  Log Message:
  -----------
  [GTK][WPE] ThreadedCompositor can composite a half-committed set of 
scrolling-tree layer positions
https://bugs.webkit.org/show_bug.cgi?id=315185

Reviewed by Fujii Hironori.

Add pending values for CoordinatedPlatformLayer position, boundsOrigin
when updated directly or from scroling tree. The values from scrolling
always take precedence. Those pending values are later committed by a
flush that is called during the layer flush or by the scrolling tree.
The scene state now has a global lock that is taken before flusing
pending state for all layers in the tree and before flusing compositing
state before compositing. This ensures that those values are updated
atomically and with the scene lock held, preventing the compositor to
take partially updated trees. This is not needed for most of the other
layer properties, because for rendering updates we ensure that we can't
start a new layer flush until the composition for the previous one is
done.

* 
Source/WebCore/page/scrolling/coordinated/ScrollingTreeFixedNodeCoordinated.cpp:
(WebCore::ScrollingTreeFixedNodeCoordinated::applyLayerPositions):
* 
Source/WebCore/page/scrolling/coordinated/ScrollingTreeFrameScrollingNodeCoordinated.cpp:
(WebCore::ScrollingTreeFrameScrollingNodeCoordinated::repositionScrollingLayers):
* 
Source/WebCore/page/scrolling/coordinated/ScrollingTreePositionedNodeCoordinated.cpp:
(WebCore::ScrollingTreePositionedNodeCoordinated::applyLayerPositions):
* 
Source/WebCore/page/scrolling/coordinated/ScrollingTreeStickyNodeCoordinated.cpp:
(WebCore::ScrollingTreeStickyNodeCoordinated::applyLayerPositions):
* Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp:
(WebCore::SkiaBackingStore::update):
(WebCore::SkiaBackingStore::processPendingTileUpdates):
(WebCore::SkiaBackingStore::Tile::scheduleUpdate):
(WebCore::SkiaBackingStore::Tile::processPendingUpdateIfNeeded):
* Source/WebCore/platform/graphics/skia/SkiaBackingStore.h:
(WebCore::SkiaBackingStore::hasPendingTileUpdates const):
* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:
(WebCore::SkiaCompositingLayer::hasPendingBackingStoreTileUpdates const):
(WebCore::SkiaCompositingLayer::processPendingTileUpdates):
* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:
* 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStore.cpp:
(WebCore::CoordinatedBackingStore::updateTile):
(WebCore::CoordinatedBackingStore::processPendingUpdates):
* Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStore.h:
* 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:
(WebCore::CoordinatedPlatformLayer::setPosition):
(WebCore::CoordinatedPlatformLayer::setPositionForScrolling):
(WebCore::CoordinatedPlatformLayer::setTopLeftPositionForScrolling):
(WebCore::CoordinatedPlatformLayer::setBoundsOrigin):
(WebCore::CoordinatedPlatformLayer::setBoundsOriginForScrolling):
(WebCore::CoordinatedPlatformLayer::flushPendingState):
(WebCore::CoordinatedPlatformLayer::flushCompositingStateOnTarget):
(WebCore::CoordinatedPlatformLayer::hasPendingBackingStoreTileUpdates const):
(WebCore::CoordinatedPlatformLayer::processPendingBackingStoreTileUpdates):
* 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h:
* 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.cpp:
(WebKit::CoordinatedSceneState::flush):
(WebKit::CoordinatedSceneState::flushPendingState):
(WebKit::CoordinatedSceneState::flushCompositingState):
(WebKit::CoordinatedSceneState::committedLayers): Deleted.
* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.h:
* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
(WebKit::LayerTreeHost::requestComposition):
* 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostPlayStation.cpp:
(WebKit::LayerTreeHost::requestComposition):
* Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::flushCompositingState):
* 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositorPlayStation.cpp:
(WebKit::ThreadedCompositor::updateSceneState):

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



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

Reply via email to