[webkit-changes] [WebKit/WebKit] 75e7dc: Implement the 'backdrop root' concept for backdrop...

mattwoodrow noreply at github.com
Tue Sep 19 17:19:47 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 75e7dc79cac94cf706b9f77f016cbd4c805b4719
      https://github.com/WebKit/WebKit/commit/75e7dc79cac94cf706b9f77f016cbd4c805b4719
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
    M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt
    M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt
    M LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt
    M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt
    M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt
    M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt
    M LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt
    M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt
    M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt
    M LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt
    M Source/JavaScriptCore/inspector/protocol/LayerTree.json
    M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp
    M Source/WebCore/platform/graphics/GraphicsLayer.cpp
    M Source/WebCore/platform/graphics/GraphicsLayer.h
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
    M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
    M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h
    M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayer.h
    M Source/WebCore/rendering/RenderLayerBacking.cpp
    M Source/WebCore/rendering/RenderLayerBacking.h
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebCore/rendering/RenderLayerCompositor.h
    M Source/WebCore/rendering/style/WillChangeData.cpp
    M Source/WebCore/rendering/style/WillChangeData.h
    M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
    M Source/WebInspectorUI/UserInterface/Views/LayerTreeDetailsSidebarPanel.js
    M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  -----------
  Implement the 'backdrop root' concept for backdrop-filter.
https://bugs.webkit.org/show_bug.cgi?id=261717
<rdar://115703346>

Reviewed by Simon Fraser.

https://drafts.fxtf.org/filter-effects-2/#backdrop-root
Backdrop-filter should only uses the backdrop of the content behind up to the nearest backdrop-root, which isn't yet implemented.

Unfortunately no new WPT passes yet, due to other platform rendering issues, but this gets us much closer to spec compliance.

* Source/JavaScriptCore/inspector/protocol/LayerTree.json:
* Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
* Source/WebCore/platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::setIsBackdropRoot):
(WebCore::GraphicsLayer::isBackdropRoot const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setIsBackdropRoot):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateBackdropRoot):
(WebCore::GraphicsLayerCA::ensureStructuralLayer):
(WebCore::GraphicsLayerCA::layerChangeAsString):
(WebCore::GraphicsLayerCA::changeLayerTypeTo):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayer.h:
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::setIsBackdropRoot):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::shouldBeBackdropRootCandidate const):
(WebCore::RenderLayer::setIsBackdropRootCandidate):
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
(WebCore::RenderLayer::hasBackdropFilterDescendantsWithoutRoot const):
(WebCore::RenderLayer::setHasBackdropFilterDescendantsWithoutRoot):
(WebCore::RenderLayer::isBackdropRootCandidate const):
(WebCore::RenderLayer::isBackdropRoot const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateBackdropRoot):
(WebCore::RenderLayerBacking::updateConfigurationAfterStyleChange):
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateGeometry):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const):
(WebCore::RenderLayerCompositor::CompositingState::updateWithDescendantStateAndLayer):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::reasonsForCompositing const):
(WebCore::compositingReasonToString):
(WebCore::RenderLayerCompositor::computeIndirectCompositingReason const):
* Source/WebCore/rendering/RenderLayerCompositor.h:
* Source/WebCore/rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::canBeBackdropRoot const):
* Source/WebCore/rendering/style/WillChangeData.h:
* Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:
* Source/WebInspectorUI/UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WI.LayerTreeDetailsSidebarPanel):
* Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::setIsBackdropRoot):

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




More information about the webkit-changes mailing list