Branch: refs/heads/webkitglib/2.54
  Home:   https://github.com/WebKit/WebKit
  Commit: d88d1024d30f00812aa271c48d23dc27234e645e
      
https://github.com/WebKit/WebKit/commit/d88d1024d30f00812aa271c48d23dc27234e645e
  Author: Devin Rousso <[email protected]>
  Date:   2026-09-23 (Wed, 23 Sep 2026)

  Changed paths:
    A 
LayoutTests/platform/gtk/non-compositing/reparent-view-without-damage-expected.txt
    A LayoutTests/platform/gtk/non-compositing/reparent-view-without-damage.html
    A LayoutTests/platform/gtk/reparent-view-without-damage-expected.txt
    A LayoutTests/platform/gtk/reparent-view-without-damage.html
    A LayoutTests/platform/gtk/resources/reparent-view-without-damage.js
    M Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp
    M Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.cpp
    M Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphicsGLib.cpp
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphicsGLib.h
    M 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/NonCompositedFrameRenderer.cpp
    M Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp
    M Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp

  Log Message:
  -----------
  Cherry-pick 321558@main (99fe659f25c8). 
https://bugs.webkit.org/show_bug.cgi?id=323978

    [GTK] skip non-composited frames without damage
    https://bugs.webkit.org/show_bug.cgi?id=323978

    Reviewed by Carlos Alberto Lopez Perez.

    GTK can still (re)present frames even after `requestAnimationFrame` 
callbacks with no rendering changes.
    Removing that waste also exposes cases where GTK loses its displayed image 
without any WebCore damage.

    * 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/NonCompositedFrameRenderer.cpp:
    (WebKit::NonCompositedFrameRenderer::updateRendering):
    Skipping unnecessary frames must not stop animation callbacks or strand 
callers waiting for an explicit repaint.

    * Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h:
    * Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.cpp:
    (WebKit::AcceleratedBackingStore::realize):
    (WebKit::AcceleratedBackingStore::unrealize):
    Removing and reinserting a view in one callback can coalesce visibility 
changes (i.e. `resume` may never run).
    Recovery must follow actual buffer loss without requesting another frame 
when one is already pending.

    * Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in:
    * 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphicsGLib.h:
    * 
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphicsGLib.cpp:
    (WebKit::DrawingAreaCoordinatedGraphics::didDiscardBackingStore): Added.
    The UIProcess knows when GTK lost the image even though the WebProcess owns 
damage and rendering.
    The missing picture requires full recovery, including when painting was 
suspended.

    * Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:
    (webkitWebViewBaseSnapshotFromWidget):
    GTK events can invalidate the allocation during reparenting and attempting 
to snapshot that state can cause a null PNG data dereference.

    * 
LayoutTests/platform/gtk/non-compositing/reparent-view-without-damage.html: 
Added.
    * 
LayoutTests/platform/gtk/non-compositing/reparent-view-without-damage-expected.txt:
 Added.
    * LayoutTests/platform/gtk/reparent-view-without-damage.html: Added.
    * LayoutTests/platform/gtk/reparent-view-without-damage-expected.txt: Added.
    * LayoutTests/platform/gtk/resources/reparent-view-without-damage.js: Added.

    * Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp:
    (WTR::TestController::takeViewPortSnapshot):
    * Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp:
    (PresentationWebViewTest): Added.
    (PresentationWebViewTest::PresentationWebViewTest): Added.
    (PresentationWebViewTest::~PresentationWebViewTest): Added.
    (PresentationWebViewTest::waitForColor): Added.
    (PresentationWebViewTest::waitForNextFrame): Added.
    (PresentationWebViewTest::waitForAnimationFrames): Added.
    (PresentationWebViewTest::assertAnimationFramesWithoutDamage): Added.
    (PresentationWebViewTest::loadPageForReparenting): Added.
    (AcceleratedPresentationWebViewTest): Added.
    (AcceleratedPresentationWebViewTest::AcceleratedPresentationWebViewTest): 
Added.
    (testWebViewPresentationWithoutDamage): Added.
    (testWebViewPresentationAfterReparentToNewWindow): Added.
    (testWebViewPresentationAfterRapidReparent): Added.
    (testWebViewPresentationAfterReparentDuringLoad): Added.
    (testWebViewCloseAfterReparent): Added.
    (beforeAll):

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

Canonical link: https://commits.webkit.org/317695.345@webkitglib/2.54


  Commit: 9cf6fd3c6d9e8d66a677db8e02c4234079ac8396
      
https://github.com/WebKit/WebKit/commit/9cf6fd3c6d9e8d66a677db8e02c4234079ac8396
  Author: Nikolas Zimmermann <[email protected]>
  Date:   2026-09-23 (Wed, 23 Sep 2026)

  Changed paths:
    M Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp

  Log Message:
  -----------
  Cherry-pick 321493@main (9a32d7b70a01). 
https://bugs.webkit.org/show_bug.cgi?id=324631

    [GTK][WPE] Do not rasterize the part of a tile that the clip drops
    https://bugs.webkit.org/show_bug.cgi?id=324631

    Reviewed by Carlos Garcia Campos.

    A backing store draws each tile as one quad, at the full size of the tile. 
The
    clip then throws away the parts that are not visible, but the rasterizer has
    already filled them.

    In a normal frame this costs almost nothing, because a tile is about as 
large as
    the clip. It costs a lot when a subtree is painted into a surface that 
covers
    one layer only, with the layer transform on the canvas.

    Cut the quad down to the clip before drawing it, and cut the source rect the
    same way. A tile that already fits inside the clip is drawn as before.

    * Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp:
    (WebCore::clipTileToBounds):
    (WebCore::SkiaBackingStore::paintToCanvas):
    (WebCore::SkiaBackingStore::appendImageSetEntries const):

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

Canonical link: https://commits.webkit.org/317695.346@webkitglib/2.54


Compare: https://github.com/WebKit/WebKit/compare/14ef410d5d74...9cf6fd3c6d9e

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

Reply via email to