-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[LBSE] Add RenderSVGResourceClipper #18286
[LBSE] Add RenderSVGResourceClipper #18286
Conversation
EWS run on previous version of this PR (hash cf31169) |
cf31169
to
cd13b19
Compare
EWS run on previous version of this PR (hash cd13b19) |
cd13b19
to
b27a017
Compare
EWS run on previous version of this PR (hash b27a017) |
b27a017
to
48514c0
Compare
EWS run on previous version of this PR (hash 48514c0) |
48514c0
to
cb8eec4
Compare
EWS run on previous version of this PR (hash cb8eec4) |
cb8eec4
to
fe928d8
Compare
EWS run on previous version of this PR (hash fe928d8) |
fe928d8
to
fa98287
Compare
EWS run on previous version of this PR (hash fa98287) |
fa98287
to
eb74c07
Compare
EWS run on previous version of this PR (hash eb74c07) |
EWS run on previous version of this PR (hash aff0855) |
eb74c07
to
aff0855
Compare
4db8c06
to
436b17b
Compare
EWS run on previous version of this PR (hash 436b17b)
|
436b17b
to
c489de5
Compare
EWS run on previous version of this PR (hash c489de5)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job @rwlbuis - not much left :-) Fortunately the first resource is the worst, the others are much less work....
c489de5
to
ce00a1f
Compare
EWS run on previous version of this PR (hash ce00a1f)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me, excellent job Rob! I've left another comment, still one thing to fix prior to mq+.
ce00a1f
to
3721e21
Compare
EWS run on previous version of this PR (hash 3721e21)
|
3721e21
to
43b2050
Compare
EWS run on current version of this PR (hash 43b2050)
|
https://bugs.webkit.org/show_bug.cgi?id=262191 Reviewed by Nikolas Zimmermann. Implement the first SVG resource in LBSE: clipping (RenderSVGResourceClipper). Unlike the legacy engine, LBSE does not make use of temporary ImageBuffers for clipping, but relies on Porter-Duff DestinationIn/SourceOver compositing operations, to achieve the same effect, but faster. This aligns SVG clipping with HTML/CSS clipping. This is only the beginning: dynamic invalidations are not working, as we're introducing them incrementally in a unified, clean way. Covered by existing tests (dozens of progressions, see TestExpectations). * LayoutTests/platform/mac-ventura-wk2-lbse-text/TestExpectations: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-32-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/masking-path-01-b-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/masking-path-02-b-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/masking-path-04-b-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/masking-path-05-f-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/painting-marker-02-f-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/shapes-intro-01-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/text-align-01-b-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/text-text-05-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/W3C-SVG-1.1/text-text-06-t-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/batik/text/textEffect2-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/batik/text/textProperties-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/carto.net/textbox-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/embedding-external-svgs-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/path-moveto-only-rendering-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/subpaths-moveto-only-rendering-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/text-clip-expected.png: Added. * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/text-clip-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/custom/use-on-symbol-inside-pattern-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/filters/filter-clip-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/foreignObject/clip-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/repaint/mask-clip-target-transform-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/text/text-align-01-b-expected.txt: * LayoutTests/platform/mac-ventura-wk2-lbse-text/svg/text/text-text-05-t-expected.txt: * LayoutTests/svg/clip-path/clip-opacity.html: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/dom/TreeScope.cpp: (WebCore::TreeScope::removeSVGResource): (WebCore::TreeScope::lookupSVGResourceById const): (WebCore::TreeScope::lookupLegacySVGResoureById const): (WebCore::TreeScope::svgResourceById const): Deleted. * Source/WebCore/dom/TreeScope.h: * Source/WebCore/rendering/PaintPhase.h: * Source/WebCore/rendering/RenderBox.cpp: (WebCore::RenderBox::hitTestClipPath const): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::recursiveUpdateLayerPositions): (WebCore::RenderLayer::updateAncestorDependentState): (WebCore::RenderLayer::computeHasVisibleContent const): (WebCore::RenderLayer::beginTransparencyLayers): (WebCore::RenderLayer::paintSVGResourceLayer): (WebCore::RenderLayer::setupClipPath): (WebCore::RenderLayer::paintLayerContents): (WebCore::RenderLayer::enclosingSVGRootLayer const): (WebCore::RenderLayer::calculateClipRects const): * Source/WebCore/rendering/RenderLayer.h: (WebCore::RenderLayer::isPaintingSVGResourceLayer const): * Source/WebCore/rendering/RenderLayerInlines.h: (WebCore::RenderLayer::hasFilter const): (WebCore::RenderLayer::hasNonOpacityTransparency const): * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::isSVGForeignObject const): (WebCore::RenderObject::isSVGResourceContainer const): (WebCore::RenderObject::isLegacySVGResourceClipper const): (WebCore::RenderObject::isSVGResourceClipper const): * Source/WebCore/rendering/svg/RenderSVGContainer.cpp: (WebCore::RenderSVGContainer::paint): * Source/WebCore/rendering/svg/RenderSVGImage.cpp: (WebCore::RenderSVGImage::paint): * Source/WebCore/rendering/svg/RenderSVGModelObject.cpp: (WebCore::RenderSVGModelObject::computeClipPath const): * Source/WebCore/rendering/svg/RenderSVGModelObject.h: * Source/WebCore/rendering/svg/RenderSVGResource.cpp: (WebCore::requestPaintingResource): * Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp: Added. (WebCore::RenderSVGResourceClipper::RenderSVGResourceClipper): (WebCore::RenderSVGResourceClipper::shouldApplyPathClipping const): (WebCore::currentClippingMode): (WebCore::sharedClipAllPath): (WebCore::RenderSVGResourceClipper::applyPathClipping): (WebCore::RenderSVGResourceClipper::applyMaskClipping): (WebCore::RenderSVGResourceClipper::hitTestClipContent): (WebCore::RenderSVGResourceClipper::resourceBoundingBox): * Source/WebCore/rendering/svg/RenderSVGResourceClipper.h: Added. * Source/WebCore/rendering/svg/RenderSVGResourceClipperInlines.h: Added. (WebCore::RenderSVGResourceClipper::clipPathElement const): (WebCore::RenderSVGResourceClipper::clipPathUnits const): * Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.cpp: (WebCore::RenderSVGResourceSolidColor::applyResource): * 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/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::paint): * Source/WebCore/rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::paintSVGClippingMask): * Source/WebCore/rendering/svg/SVGRenderSupport.h: * Source/WebCore/rendering/svg/SVGRenderingContext.cpp: (WebCore::isRenderingMaskImage): * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.cpp: (WebCore::LegacyRenderSVGResourceClipper::drawContentIntoMaskImage): * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h: (isType): * Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.h: (WebCore::getRenderSVGResourceContainerById): * Source/WebCore/svg/SVGClipPathElement.cpp: (WebCore::SVGClipPathElement::createElementRenderer): (WebCore::SVGClipPathElement::shouldApplyPathClipping const): * Source/WebCore/svg/SVGClipPathElement.h: * Source/WebCore/svg/SVGElement.cpp: (WebCore::isSVGLayerAwareElement): Canonical link: https://commits.webkit.org/269635@main
43b2050
to
57393b5
Compare
Committed 269635@main (57393b5): https://commits.webkit.org/269635@main Reviewed commits have been landed. Closing PR #18286 and removing active labels. |
57393b5
43b2050
π§ͺ ios-wk2-wpt