Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e4d2a7474950a53bd369b91a6d7210a182c07a79
      
https://github.com/WebKit/WebKit/commit/e4d2a7474950a53bd369b91a6d7210a182c07a79
  Author: Simon Fraser <simon.fra...@apple.com>
  Date:   2023-04-18 (Tue, 18 Apr 2023)

  Changed paths:
    A LayoutTests/svg/masking/masking-with-event-region-expected.html
    A LayoutTests/svg/masking/masking-with-event-region.html
    M Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp
    M Source/WebCore/rendering/svg/RenderSVGResourceClipper.h

  Log Message:
  -----------
  SVG clip-path is sometimes broken on stevejobsarchive.com
https://bugs.webkit.org/show_bug.cgi?id=255577
rdar://107885344

Reviewed by Said Abou-Hallawa.

http://book.stevejobsarchive.com/ uses CSS clip-path with a reference to an SVG 
<clipPath> element
which contains text.

In this configuration, RenderSVGResourceClipper::applyClippingToContext() falls 
back to a code path
that uses an ImageBuffer as a mask, and it caches the ImageBuffer between 
calls. This caused a
problem when DOM Rendering in the GPU Process was enabled; this code is first 
hit for a "fake" paint
with a NullGraphicsContext which is updating EventRegions, called out of
`RenderLayerBacking::updateEventRegion()`. The NullGraphicsContext will make a 
local ImageBuffer.

If we then hit this same code for actual painting with a painting 
GraphicsContext, we'll use that
cached ImageBuffer, rather than creating a new one with appropriate GPU Process 
backing.

Fix this by adding `isPaintingDisabled` to the criteria used to decide if the 
cached buffer can be
re-used.

* LayoutTests/svg/masking/masking-with-event-region-expected.html: Added.
* LayoutTests/svg/masking/masking-with-event-region.html: Added.
* Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::computeInputs):
(WebCore::RenderSVGResourceClipper::applyClippingToContext):
* Source/WebCore/rendering/svg/RenderSVGResourceClipper.h:
(WebCore::ClipperData::Inputs::operator== const):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to