[webkit-changes] [WebKit/WebKit] 0ccc45: [UI-side compositing] css3/masking/clip-path-overf...
Kimmo Kinnunen
noreply at github.com
Thu Mar 9 11:37:33 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0ccc458e846190c097901782265d11d9631c234a
https://github.com/WebKit/WebKit/commit/0ccc458e846190c097901782265d11d9631c234a
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2023-03-09 (Thu, 09 Mar 2023)
Changed paths:
M Source/WebCore/platform/graphics/displaylists/DisplayList.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayList.h
M Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp
Log Message:
-----------
[UI-side compositing] css3/masking/clip-path-overflow-hidden-bounds.html fails
https://bugs.webkit.org/show_bug.cgi?id=253575
rdar://106115074
Reviewed by Said Abou-Hallawa.
Display list recorder would batch state changes and only emit a state
change item when a draw would need. This algorithm would hoist state
changes made outside of save/restore blocks to be applied inside:
ASSERT_TRUE(c.shouldAntialias());
c.setShouldAntialias(false);
c.save();
c.fillRect({..});
c.restore();
Would become:
c.save();
c.setShouldAntialias(false);
c.fillRect({..});
c.restore();
For tests like clip-path-overflow-hidden-bounds.html this would fail
on GPUP DOM rendering with layout tests.
The tests would not fail interactively.
This is because the browsers run with device scale > 1, and layout test
runner tests with device scale == 1.
The most noticeable errors due to state change problems were the antialias
toggles. Clipping, for example, toggles these when the device scale == 1
but not otherwise.
* Source/WebCore/platform/graphics/displaylists/DisplayList.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.cpp:
* Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::commitRecording):
(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp: Added.
(TestWebKitAPI::createReferenceTarget):
(TestWebKitAPI::createDisplayListTarget):
(TestWebKitAPI::forBoth):
(TestWebKitAPI::checkEqualState):
(TestWebKitAPI::TYPED_TEST_P):
Canonical link: https://commits.webkit.org/261451@main
More information about the webkit-changes
mailing list