[webkit-changes] [WebKit/WebKit] 08ff1e: [LBSE] Add RenderSVGResourceMasker

Rob Buis noreply at github.com
Mon Nov 27 10:55:56 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 08ff1e4f09f8c06c8ffae86dd8e1bb4feed8abe5
      https://github.com/WebKit/WebKit/commit/08ff1e4f09f8c06c8ffae86dd8e1bb4feed8abe5
  Author: Rob Buis <rbuis at igalia.com>
  Date:   2023-11-27 (Mon, 27 Nov 2023)

  Changed paths:
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/TestExpectations
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/absolute-root-position-masking-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/empty-mask-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-late-mask-and-object-creation-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-late-mask-creation-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-changes-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-child-changes-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-colorspace-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-excessive-malloc-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-inside-defs-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-invalidation-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-with-all-units-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-with-default-value-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/recursive-mask-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/transformedMaskFails-expected.txt
    A LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/visibility-override-mask-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/filters/filter-clip-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/foreignObject/mask-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/mask-clip-target-transform-expected.txt
    M LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/text-mask-update-expected.txt
    A LayoutTests/svg/repaint/mask-object-bounding-box-expected.txt
    A LayoutTests/svg/repaint/mask-object-bounding-box-shrink-expected.txt
    A LayoutTests/svg/repaint/mask-object-bounding-box-shrink.html
    A LayoutTests/svg/repaint/mask-object-bounding-box-transformed-expected.txt
    A LayoutTests/svg/repaint/mask-object-bounding-box-transformed.html
    A LayoutTests/svg/repaint/mask-object-bounding-box.html
    A LayoutTests/svg/repaint/mask-user-space-on-use-expected.txt
    A LayoutTests/svg/repaint/mask-user-space-on-use-shrink-expected.txt
    A LayoutTests/svg/repaint/mask-user-space-on-use-shrink.html
    A LayoutTests/svg/repaint/mask-user-space-on-use-transformed-expected.txt
    A LayoutTests/svg/repaint/mask-user-space-on-use-transformed.html
    A LayoutTests/svg/repaint/mask-user-space-on-use.html
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/rendering/RenderLayerModelObject.cpp
    M Source/WebCore/rendering/RenderLayerModelObject.h
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/svg/RenderSVGContainer.cpp
    M Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp
    M Source/WebCore/rendering/svg/RenderSVGImage.cpp
    A Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
    A Source/WebCore/rendering/svg/RenderSVGResourceMasker.h
    A Source/WebCore/rendering/svg/RenderSVGResourceMaskerInlines.h
    M Source/WebCore/rendering/svg/RenderSVGRoot.cpp
    M Source/WebCore/rendering/svg/RenderSVGShape.cpp
    M Source/WebCore/rendering/svg/RenderSVGText.cpp
    M Source/WebCore/rendering/svg/SVGBoundingBoxComputation.cpp
    M Source/WebCore/rendering/svg/SVGRenderSupport.cpp
    M Source/WebCore/rendering/svg/SVGRenderSupport.h
    M Source/WebCore/rendering/svg/SVGResources.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp
    M Source/WebCore/svg/SVGElement.cpp
    M Source/WebCore/svg/SVGMaskElement.cpp
    M Source/WebCore/svg/SVGMaskElement.h

  Log Message:
  -----------
  [LBSE] Add RenderSVGResourceMasker
https://bugs.webkit.org/show_bug.cgi?id=264049

Reviewed by Nikolas Zimmermann.

Implement the second SVG resource in LBSE: masking (RenderSVGResourceMasker).
Mask content invalidations/changes are supported.

The resource takes cyclic references into account.

Covered by existing tests (dozens of progressions, see TestExpectations).

* LayoutTests/platform/mac-sonoma-wk2-lbse-text/TestExpectations:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/absolute-root-position-masking-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/empty-mask-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-late-mask-and-object-creation-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/js-late-mask-creation-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-changes-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-child-changes-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-colorspace-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-excessive-malloc-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-inside-defs-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-invalidation-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-with-all-units-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/mask-with-default-value-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/recursive-mask-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/transformedMaskFails-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/custom/visibility-override-mask-expected.txt: Added.
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/filters/filter-clip-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/foreignObject/mask-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/mask-clip-target-transform-expected.txt:
* LayoutTests/platform/mac-sonoma-wk2-lbse-text/svg/repaint/text-mask-update-expected.txt:
* LayoutTests/svg/repaint/mask-object-bounding-box-expected.txt: Added.
* LayoutTests/svg/repaint/mask-object-bounding-box-shrink-expected.txt: Added.
* LayoutTests/svg/repaint/mask-object-bounding-box-shrink.html: Added.
* LayoutTests/svg/repaint/mask-object-bounding-box-transformed-expected.txt: Added.
* LayoutTests/svg/repaint/mask-object-bounding-box-transformed.html: Added.
* LayoutTests/svg/repaint/mask-object-bounding-box.html: Added.
* LayoutTests/svg/repaint/mask-user-space-on-use-expected.txt: Added.
* LayoutTests/svg/repaint/mask-user-space-on-use-shrink-expected.txt: Added.
* LayoutTests/svg/repaint/mask-user-space-on-use-shrink.html: Added.
* LayoutTests/svg/repaint/mask-user-space-on-use-transformed-expected.txt: Added.
* LayoutTests/svg/repaint/mask-user-space-on-use-transformed.html: Added.
* LayoutTests/svg/repaint/mask-user-space-on-use.html: Added.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::svgMaskerResourceFromStyle const):
(WebCore::RenderLayerModelObject::paintSVGClippingMask const):
(WebCore::RenderLayerModelObject::paintSVGMask const):
* Source/WebCore/rendering/RenderLayerModelObject.h:
* Source/WebCore/rendering/RenderObject.h:
(WebCore::RenderObject::isRenderSVGResourceContainer const):
(WebCore::RenderObject::isRenderSVGResourceMasker const):
* Source/WebCore/rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::paint):
* Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp:
(WebCore::RenderSVGForeignObject::paint):
* Source/WebCore/rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::paint):
* Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp: Added.
(WebCore::RenderSVGResourceMasker::RenderSVGResourceMasker):
(WebCore::createImageBuffer):
(WebCore::RenderSVGResourceMasker::applyMask):
(WebCore::RenderSVGResourceMasker::resourceBoundingBox):
* Source/WebCore/rendering/svg/RenderSVGResourceMasker.h: Added.
* Source/WebCore/rendering/svg/RenderSVGResourceMaskerInlines.h: Added.
(WebCore::RenderSVGResourceMasker::maskElement const):
(WebCore::RenderSVGResourceMasker::maskUnits const):
(WebCore::RenderSVGResourceMasker::maskContentUnits const):
* Source/WebCore/rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::paintObject):
* Source/WebCore/rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::paint):
* Source/WebCore/rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::paint):
* Source/WebCore/rendering/svg/SVGBoundingBoxComputation.cpp:
(WebCore::SVGBoundingBoxComputation::adjustBoxForClippingAndEffects const):
* Source/WebCore/rendering/svg/SVGRenderSupport.cpp:
(WebCore::SVGRenderSupport::paintSVGClippingMask): Deleted.
* Source/WebCore/rendering/svg/SVGRenderSupport.h:
* Source/WebCore/rendering/svg/SVGResources.cpp:
(WebCore::SVGResources::buildCachedResources):
* Source/WebCore/svg/SVGElement.cpp:
(WebCore::isSVGLayerAwareElement):
* Source/WebCore/svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::createElementRenderer):
(WebCore::SVGMaskElement::calculateMaskContentRepaintRect):
* Source/WebCore/svg/SVGMaskElement.h:

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




More information about the webkit-changes mailing list