Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 23f1d29063a8db18bcd50ef9cfab2c40df25c3f0
https://github.com/WebKit/WebKit/commit/23f1d29063a8db18bcd50ef9cfab2c40df25c3f0
Author: Nikolas Zimmermann <[email protected]>
Date: 2026-09-07 (Mon, 07 Sep 2026)
Changed paths:
A LayoutTests/platform/glib/damage/animations-drop-shadow-color-expected.txt
A LayoutTests/platform/glib/damage/animations-drop-shadow-color.html
A
LayoutTests/platform/glib/damage/layer-blur-filter-child-change-expected.txt
A LayoutTests/platform/glib/damage/layer-blur-filter-child-change.html
A LayoutTests/platform/glib/damage/layer-blur-filter-expected.txt
A LayoutTests/platform/glib/damage/layer-blur-filter.html
M Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp
M Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h
Log Message:
-----------
SkiaCompositingLayer: layers with filters are always damaged
https://bugs.webkit.org/show_bug.cgi?id=322563
Reviewed by Carlos Garcia Campos.
SkiaCompositingLayer::paintWithFilterAndMask added damage in every frame, even
when nothing in the filtered subtree had changed. Only add damage if any
descendant of the subtree was damaged, and compute the overlap region only in
that case - instead of in every collecting walk.
If the filter of a static layer changes, its indicated by setFilters(),
which marks the group as changed: collectGroupDamage() is then able to
pick up the change. Animated filters are applied on the compositor side
by syncAnimations(), which added no damage at all, so add damage there
when the applied filter changes. This also handles the end of an animation,
where the value goes back to the pre-animation state of the layer.
Tests: platform/glib/damage/animations-drop-shadow-color.html
platform/glib/damage/layer-blur-filter.html
platform/glib/damage/layer-blur-filter-child-change.html
* LayoutTests/platform/glib/damage/animations-drop-shadow-color-expected.txt:
Added.
* LayoutTests/platform/glib/damage/animations-drop-shadow-color.html: Added.
* LayoutTests/platform/glib/damage/layer-blur-filter-child-change-expected.txt:
Added.
* LayoutTests/platform/glib/damage/layer-blur-filter-child-change.html: Added.
* LayoutTests/platform/glib/damage/layer-blur-filter-expected.txt: Added.
* LayoutTests/platform/glib/damage/layer-blur-filter.html: Added.
* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.cpp:
(WebCore::expandByOutsets):
(WebCore::SkiaCompositingLayer::unclippedFilterOutsets const):
(WebCore::SkiaCompositingLayer::paintedLayerRect const):
(WebCore::SkiaCompositingLayer::syncAnimations):
(WebCore::SkiaCompositingLayer::hasGroupPropertyDamage const):
(WebCore::SkiaCompositingLayer::hasDamageInSubtree const):
(WebCore::SkiaCompositingLayer::collectGroupDamage):
(WebCore::SkiaCompositingLayer::paintWithFilterAndMask):
(WebCore::SkiaCompositingLayer::computeOverlapRegions):
* Source/WebCore/platform/graphics/skia/SkiaCompositingLayer.h:
Canonical link: https://commits.webkit.org/320622@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications