Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6d631db91774a727f4b75cfa594b4ff809adeb6c
      
https://github.com/WebKit/WebKit/commit/6d631db91774a727f4b75cfa594b4ff809adeb6c
  Author: Kimmo Kinnunen <[email protected]>
  Date:   2026-09-07 (Mon, 07 Sep 2026)

  Changed paths:
    M Source/WebCore/html/canvas/PaintRenderingContext2D.cpp
    M Source/WebCore/platform/graphics/GraphicsContextState.cpp
    M Source/WebCore/platform/graphics/GraphicsContextState.h
    M Source/WebCore/platform/graphics/ImageBufferDisplayListBackend.cpp
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteSnapshotRecorder.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteSnapshotRecorderProxy.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp

  Log Message:
  -----------
  DisplayList::RecorderImpl depends on initial state
https://bugs.webkit.org/show_bug.cgi?id=323301
rdar://186549951

Reviewed by Taher Ali and Matt Woodrow.

General purpose display list recording was not useful, because the
the RecorderImpl had an initial GraphicsContextState and the state
setters would elide updates to properties that matched the state.
Thus command like recorder.setFillColor(Color::transparentBlack) would
not produce an item because the initial state had black fill color.

Fix by adding a property list for unknown properties to
GraphicsContextState and checking that per property update.

Test: Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp

* Source/WebCore/platform/graphics/GraphicsContextState.cpp:
(WebCore::GraphicsContextState::repurpose):
(WebCore::GraphicsContextState::mergeLastChanges):
(WebCore::GraphicsContextState::mergeAllChanges):
(WebCore::GraphicsContextState::filterLastChangesForMatching):
(WebCore::GraphicsContextState::propertiesEqualIgnoring const):
(WebCore::GraphicsContextState::propertiesEqual const): Deleted.
* Source/WebCore/platform/graphics/GraphicsContextState.h:
(WebCore::GraphicsContextState::initialIndeterminate):
(WebCore::GraphicsContextState::indeterminateProperties const):
(WebCore::GraphicsContextState::markDeterminate):
(WebCore::GraphicsContextState::setProperty):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::updateStateForRestore):
(WebCore::DisplayList::Recorder::commitStateChanges):
(WebCore::DisplayList::Recorder::updateStateForEndTransparencyLayer):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
(WebCore::DisplayList::RecorderImpl::RecorderImpl):
* Tools/TestWebKitAPI/Tests/WebCore/DisplayListRecorderTests.cpp:

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



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

Reply via email to