[webkit-changes] [WebKit/WebKit] a73cf0: [Filters] Do not clip the destination context when...

Said Abou-Hallawa noreply at github.com
Fri Sep 22 16:06:14 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a73cf0548cd6e04f725ac36102b13cb4890781da
      https://github.com/WebKit/WebKit/commit/a73cf0548cd6e04f725ac36102b13cb4890781da
  Author: Said Abou-Hallawa <said at apple.com>
  Date:   2023-09-22 (Fri, 22 Sep 2023)

  Changed paths:
    A LayoutTests/css3/filters/drop-shadow-child-clipped-expected.html
    A LayoutTests/css3/filters/drop-shadow-child-clipped.html
    M LayoutTests/fast/filter-image/clipped-filter.html
    M Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.h
    M Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h
    M Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayerFilters.cpp
    M Source/WebCore/rendering/RenderLayerFilters.h
    M Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp

  Log Message:
  -----------
  [Filters] Do not clip the destination context when compositing the filter style transparency layers
https://bugs.webkit.org/show_bug.cgi?id=261926
rdar://115901634

Reviewed by Simon Fraser.

Clipping is not needed at that time because it has to be applied to the filter
style transparency layers before drawing the target element.

If this unneeded clipping is applied, removing this clipping will overlap with
ending the transparency layers. This will end up calling GraphicsContext::restore()
with the wrong purpose.

Rename FilterTargetSwitcher::needsRedrawSourceImage() to hasSourceImage() and
flip its meaning. This will make differentiating software filters from style
filters clearer. When hasSourceImage() is true, this means the target element is
drawn to an ImageBuffer.

* LayoutTests/css3/filters/drop-shadow-child-clipped-expected.html: Added.
* LayoutTests/css3/filters/drop-shadow-child-clipped.html: Added.
* LayoutTests/fast/filter-image/clipped-filter.html:
* Source/WebCore/platform/graphics/filters/FilterImageTargetSwitcher.h:
* Source/WebCore/platform/graphics/filters/FilterStyleTargetSwitcher.h:
(): Deleted.
* Source/WebCore/platform/graphics/filters/FilterTargetSwitcher.h:
(WebCore::FilterTargetSwitcher::hasSourceImage const):
(WebCore::FilterTargetSwitcher::needsRedrawSourceImage const): Deleted.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::applyFilters):
* Source/WebCore/rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::hasSourceImage const):
(WebCore::RenderLayerFilters::beginFilterEffect):
(WebCore::RenderLayerFilters::needsRedrawSourceImage const): Deleted.
* Source/WebCore/rendering/RenderLayerFilters.h:
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):

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




More information about the webkit-changes mailing list