Branch: refs/heads/webkitglib/2.54
Home: https://github.com/WebKit/WebKit
Commit: 6ea7839d393f9e11821215e7640bdeeab32f94ad
https://github.com/WebKit/WebKit/commit/6ea7839d393f9e11821215e7640bdeeab32f94ad
Author: Nikolas Zimmermann <[email protected]>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A
LayoutTests/platform/glib/damage/animations-opacity-with-descendant-layer-expected.txt
A
LayoutTests/platform/glib/damage/animations-opacity-with-descendant-layer.html
A LayoutTests/platform/glib/damage/layer-blend-mode-change-expected.txt
A LayoutTests/platform/glib/damage/layer-blend-mode-change.html
A
LayoutTests/platform/glib/damage/layer-opacity-change-with-descendant-layer-expected.txt
A
LayoutTests/platform/glib/damage/layer-opacity-change-with-descendant-layer.html
M Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp
M Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h
Log Message:
-----------
Cherry-pick 319773@main (b62ea5f7bcc9).
https://bugs.webkit.org/show_bug.cgi?id=316052
[GTK][WPE][Damage] opacity animation doesn't damage descendant layers
https://bugs.webkit.org/show_bug.cgi?id=316052
Reviewed by Carlos Garcia Campos.
Opacity applies to the whole group it composites, but SkiaCompositingLayer
only damaged the layer itself, so a descendant layer painting outside the
layer bounds kept its stale pixels.
Masks used to have the same issue, and we solved it by introduced
a m_maskChanged flag and mask-specific damage collector. Generalize both
into
one m_groupPropertyChanged flag, set through groupPropertyChanged() by every
property that decides how the group is composited: opacity, filter, mask
blend mode and replica. collectGroupDamage() now damages the layer
plus the overlap region of its subtree, which fixes the problem.
Added new GTK/WPE specific damage tests, where coverage was missing.
*
LayoutTests/platform/glib/damage/animations-opacity-with-descendant-layer-expected.txt:
Added.
*
LayoutTests/platform/glib/damage/animations-opacity-with-descendant-layer.html:
Added.
* LayoutTests/platform/glib/damage/layer-blend-mode-change-expected.txt:
Added.
* LayoutTests/platform/glib/damage/layer-blend-mode-change.html: Added.
*
LayoutTests/platform/glib/damage/layer-opacity-change-with-descendant-layer-expected.txt:
Added.
*
LayoutTests/platform/glib/damage/layer-opacity-change-with-descendant-layer.html:
Added.
* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:
(WebCore::SkiaCompositingLayer::setOpacity):
(WebCore::SkiaCompositingLayer::setBlendMode):
(WebCore::SkiaCompositingLayer::setMask):
(WebCore::SkiaCompositingLayer::setReplica):
(WebCore::SkiaCompositingLayer::setFilters):
(WebCore::SkiaCompositingLayer::opacityForAnimationsState const):
(WebCore::SkiaCompositingLayer::opacity const):
(WebCore::SkiaCompositingLayer::syncAnimations):
(WebCore::SkiaCompositingLayer::addGroupDamage):
(WebCore::SkiaCompositingLayer::collectGroupDamage):
(WebCore::SkiaCompositingLayer::paintWithMaskAndBackdrop):
(WebCore::SkiaCompositingLayer::paintWithFilterAndMask):
(WebCore::SkiaCompositingLayer::recursiveCleanUpAfterPaint):
(WebCore::SkiaCompositingLayer::collectMaskDamage): Deleted.
* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:
Canonical link: https://commits.webkit.org/319773@main
Canonical link: https://commits.webkit.org/317695.173@webkitglib/2.54
Commit: fc46dd1d12b3c04eef61d95bcc77d744585c6a5a
https://github.com/WebKit/WebKit/commit/fc46dd1d12b3c04eef61d95bcc77d744585c6a5a
Author: Carlos Garcia Campos <[email protected]>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp
Log Message:
-----------
Cherry-pick 319866@main (68a8f633acf1).
https://bugs.webkit.org/show_bug.cgi?id=322587
[GTK][WPE] Skia compositor: tile cached SkImage should be re-created for
every update
https://bugs.webkit.org/show_bug.cgi?id=322587
Reviewed by Nikolas Zimmermann.
We create a new SkImage every time the tile texture is created, but
SkImage is supposed to be immutable, in particular the
SkImages::BorrowTextureFrom documentations says: "The backend texture
must stay valid and unchanged until textureReleaseProc is called". So,
even if the texture id is the same, every time the contents are updated
we should reset the cached image to be regenerated. We should also use a
textureReleaseProc to ensure the texture is valid.
* Source/WebCore/platform/graphics/skia/SkiaBackingStore.cpp:
(WebCore::SkiaBackingStore::Tile::ensureTexture):
(WebCore::SkiaBackingStore::Tile::image const):
Canonical link: https://commits.webkit.org/319866@main
Canonical link: https://commits.webkit.org/317695.174@webkitglib/2.54
Compare: https://github.com/WebKit/WebKit/compare/b59f185686db...fc46dd1d12b3
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications