Skip to content

Commit

Permalink
[GPU Process] CSSFilter should be created only at the painting time
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=236574
rdar://89210004

Reviewed by Simon Fraser.

Instead of building the whole filter chain to get the filter outsets at
the layout time, we can use the SVGFilterPrimitiveStandardAttributes and
the FilterOperation super classes to get their outsets without having to
build the FilterEffects.

CSSFilter::calculateOutsets() is a static method which will loop through
the FilterOperations and will add up the outsets of the blur, the drop-
shadow and the reference FilterOperation.

SVGFilterBuilder::calculateFilterOutsets() will loop through the primitives
of the filter element and will call the new virtual method outsets() which
will call a static method in the corresponding FilterEffect.

FEDropShadow, FEGaussianBlur and FEOffset will be provide static methods
for calculating the effect outsets. These static methods will be called
from CSSFilter::calculateOutsets() and from the SVGFExxxElements.

To remove the duplication of the code from SVGFilterBuilder::
buildFilterEffects() and calculateFilterOutsets(), a new template class
named SVGFilterGraph will be introduced. It represents the graph of the
SVGFilter. The nodes of  this graph will be of type FilterEffecct when
it is used to build the SVGFilterExpression. The nodes will be of type
SVGFilterPrimitiveStandardAttributes when it is used to calculate the
filter outsets.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::calculateOutsets):
(WebCore::FEDropShadow::outsets const): Deleted.
* platform/graphics/filters/FEDropShadow.h:
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::calculateOutsets):
(WebCore::FEGaussianBlur::outsets const): Deleted.
* platform/graphics/filters/FEGaussianBlur.h:
* platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::calculateOutsets):
(WebCore::FEOffset::outsets const): Deleted.
* platform/graphics/filters/FEOffset.h:
* platform/graphics/filters/Filter.h:
* platform/graphics/filters/FilterFunction.h:
(WebCore::FilterFunction::apply):
(WebCore::FilterFunction::outsets const): Deleted.
* rendering/CSSFilter.cpp:
(WebCore::calculateBlurEffectOutsets):
(WebCore::calculateDropShadowEffectOutsets):
(WebCore::referenceFilterElement):
(WebCore::calculateReferenceFilterOutsets):
(WebCore::createReferenceFilter):
(WebCore::CSSFilter::buildFilterFunctions):
(WebCore::CSSFilter::calculateOutsets):
(WebCore::createSVGFilter): Deleted.
(WebCore::CSSFilter::outsets const): Deleted.
* rendering/CSSFilter.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::filtersForPainting const):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::calculateOutsets):
(WebCore::RenderLayerFilters::beginFilterEffect):
(WebCore::RenderLayerFilters::setFilter): Deleted.
(WebCore::RenderLayerFilters::buildFilter): Deleted.
* rendering/RenderLayerFilters.h:
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::outsets const):
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::outsets const):
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::outsets const):
* svg/SVGFEOffsetElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::outsets const):
* svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::calculateResolvedSize):
(WebCore::SVGFilter::resolvedSize const):
(WebCore::SVGFilter::outsets const): Deleted.
* svg/graphics/filters/SVGFilter.h:
* svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::SVGFilterBuilder):
(WebCore::appendEffectToExpression):
(WebCore::appendGraphToExpression):
(WebCore::SVGFilterBuilder::buildFilterExpression):
(WebCore::calculatePrimitiveOutsets):
(WebCore::calculateGraphOutsets):
(WebCore::SVGFilterBuilder::calculateFilterOutsets):
(WebCore::SVGFilterBuilder::setupBuiltinEffects): Deleted.
(WebCore::SVGFilterBuilder::buildFilterEffects): Deleted.
(WebCore::SVGFilterBuilder::sourceGraphic const): Deleted.
(WebCore::SVGFilterBuilder::sourceAlpha const): Deleted.
(WebCore::SVGFilterBuilder::addNamedEffect): Deleted.
(WebCore::SVGFilterBuilder::namedEffect const): Deleted.
(WebCore::SVGFilterBuilder::namedEffects const): Deleted.
(WebCore::SVGFilterBuilder::setEffectInputs): Deleted.
(WebCore::SVGFilterBuilder::appendEffectToEffectRenderer): Deleted.
(WebCore::SVGFilterBuilder::effectGeometry const): Deleted.
(WebCore::SVGFilterBuilder::buildEffectExpression const): Deleted.
(WebCore::SVGFilterBuilder::buildExpression const): Deleted.
* svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::targetBoundingBox const):
(WebCore::SVGFilterBuilder::primitiveUnits const):
(WebCore::SVGFilterBuilder::effectByRenderer):
(WebCore::SVGFilterBuilder::setTargetBoundingBox): Deleted.
(WebCore::SVGFilterBuilder::setPrimitiveUnits): Deleted.
* svg/graphics/filters/SVGFilterExpression.h:
* svg/graphics/filters/SVGFilterGraph.h: Added.
(WebCore::SVGFilterGraph::SVGFilterGraph):
(WebCore::SVGFilterGraph::sourceGraphic const):
(WebCore::SVGFilterGraph::sourceAlpha const):
(WebCore::SVGFilterGraph::addNamedNode):
(WebCore::SVGFilterGraph::getNamedNode const):
(WebCore::SVGFilterGraph::getNamedNodes const):
(WebCore::SVGFilterGraph::setNodeInputs):
(WebCore::SVGFilterGraph::getNodeInputs const):
(WebCore::SVGFilterGraph::lastNode const):

Canonical link: https://commits.webkit.org/249229@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292364 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
shallawa committed Apr 5, 2022
1 parent bf50dc0 commit 19c9835
Show file tree
Hide file tree
Showing 30 changed files with 520 additions and 252 deletions.
129 changes: 129 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,132 @@
2022-04-04 Said Abou-Hallawa <said@apple.com>

[GPU Process] CSSFilter should be created only at the painting time
https://bugs.webkit.org/show_bug.cgi?id=236574
rdar://89210004

Reviewed by Simon Fraser.

Instead of building the whole filter chain to get the filter outsets at
the layout time, we can use the SVGFilterPrimitiveStandardAttributes and
the FilterOperation super classes to get their outsets without having to
build the FilterEffects.

CSSFilter::calculateOutsets() is a static method which will loop through
the FilterOperations and will add up the outsets of the blur, the drop-
shadow and the reference FilterOperation.

SVGFilterBuilder::calculateFilterOutsets() will loop through the primitives
of the filter element and will call the new virtual method outsets() which
will call a static method in the corresponding FilterEffect.

FEDropShadow, FEGaussianBlur and FEOffset will be provide static methods
for calculating the effect outsets. These static methods will be called
from CSSFilter::calculateOutsets() and from the SVGFExxxElements.

To remove the duplication of the code from SVGFilterBuilder::
buildFilterEffects() and calculateFilterOutsets(), a new template class
named SVGFilterGraph will be introduced. It represents the graph of the
SVGFilter. The nodes of this graph will be of type FilterEffecct when
it is used to build the SVGFilterExpression. The nodes will be of type
SVGFilterPrimitiveStandardAttributes when it is used to calculate the
filter outsets.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::calculateOutsets):
(WebCore::FEDropShadow::outsets const): Deleted.
* platform/graphics/filters/FEDropShadow.h:
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::calculateOutsets):
(WebCore::FEGaussianBlur::outsets const): Deleted.
* platform/graphics/filters/FEGaussianBlur.h:
* platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::calculateOutsets):
(WebCore::FEOffset::outsets const): Deleted.
* platform/graphics/filters/FEOffset.h:
* platform/graphics/filters/Filter.h:
* platform/graphics/filters/FilterFunction.h:
(WebCore::FilterFunction::apply):
(WebCore::FilterFunction::outsets const): Deleted.
* rendering/CSSFilter.cpp:
(WebCore::calculateBlurEffectOutsets):
(WebCore::calculateDropShadowEffectOutsets):
(WebCore::referenceFilterElement):
(WebCore::calculateReferenceFilterOutsets):
(WebCore::createReferenceFilter):
(WebCore::CSSFilter::buildFilterFunctions):
(WebCore::CSSFilter::calculateOutsets):
(WebCore::createSVGFilter): Deleted.
(WebCore::CSSFilter::outsets const): Deleted.
* rendering/CSSFilter.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::filtersForPainting const):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayerFilters.cpp:
(WebCore::RenderLayerFilters::calculateOutsets):
(WebCore::RenderLayerFilters::beginFilterEffect):
(WebCore::RenderLayerFilters::setFilter): Deleted.
(WebCore::RenderLayerFilters::buildFilter): Deleted.
* rendering/RenderLayerFilters.h:
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::outsets const):
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::outsets const):
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::outsets const):
* svg/SVGFEOffsetElement.h:
* svg/SVGFilterPrimitiveStandardAttributes.h:
(WebCore::SVGFilterPrimitiveStandardAttributes::outsets const):
* svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::calculateResolvedSize):
(WebCore::SVGFilter::resolvedSize const):
(WebCore::SVGFilter::outsets const): Deleted.
* svg/graphics/filters/SVGFilter.h:
* svg/graphics/filters/SVGFilterBuilder.cpp:
(WebCore::SVGFilterBuilder::SVGFilterBuilder):
(WebCore::appendEffectToExpression):
(WebCore::appendGraphToExpression):
(WebCore::SVGFilterBuilder::buildFilterExpression):
(WebCore::calculatePrimitiveOutsets):
(WebCore::calculateGraphOutsets):
(WebCore::SVGFilterBuilder::calculateFilterOutsets):
(WebCore::SVGFilterBuilder::setupBuiltinEffects): Deleted.
(WebCore::SVGFilterBuilder::buildFilterEffects): Deleted.
(WebCore::SVGFilterBuilder::sourceGraphic const): Deleted.
(WebCore::SVGFilterBuilder::sourceAlpha const): Deleted.
(WebCore::SVGFilterBuilder::addNamedEffect): Deleted.
(WebCore::SVGFilterBuilder::namedEffect const): Deleted.
(WebCore::SVGFilterBuilder::namedEffects const): Deleted.
(WebCore::SVGFilterBuilder::setEffectInputs): Deleted.
(WebCore::SVGFilterBuilder::appendEffectToEffectRenderer): Deleted.
(WebCore::SVGFilterBuilder::effectGeometry const): Deleted.
(WebCore::SVGFilterBuilder::buildEffectExpression const): Deleted.
(WebCore::SVGFilterBuilder::buildExpression const): Deleted.
* svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::targetBoundingBox const):
(WebCore::SVGFilterBuilder::primitiveUnits const):
(WebCore::SVGFilterBuilder::effectByRenderer):
(WebCore::SVGFilterBuilder::setTargetBoundingBox): Deleted.
(WebCore::SVGFilterBuilder::setPrimitiveUnits): Deleted.
* svg/graphics/filters/SVGFilterExpression.h:
* svg/graphics/filters/SVGFilterGraph.h: Added.
(WebCore::SVGFilterGraph::SVGFilterGraph):
(WebCore::SVGFilterGraph::sourceGraphic const):
(WebCore::SVGFilterGraph::sourceAlpha const):
(WebCore::SVGFilterGraph::addNamedNode):
(WebCore::SVGFilterGraph::getNamedNode const):
(WebCore::SVGFilterGraph::getNamedNodes const):
(WebCore::SVGFilterGraph::setNodeInputs):
(WebCore::SVGFilterGraph::getNodeInputs const):
(WebCore::SVGFilterGraph::lastNode const):

2022-04-04 Gabriel Nava Marino <gnavamarino@apple.com>

Use Ref and RefPtr pattern when handling document close calls
Expand Down
4 changes: 3 additions & 1 deletion Source/WebCore/WebCore.xcodeproj/project.pbxproj
Expand Up @@ -11462,6 +11462,7 @@
72F1ADA31A390B9F00014E18 /* JSEXTFragDepth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSEXTFragDepth.cpp; sourceTree = "<group>"; };
72F1ADA41A390B9F00014E18 /* JSEXTFragDepth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEXTFragDepth.h; sourceTree = "<group>"; };
72F667DF260C264400EE36AD /* DiagnosticLoggingDomain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiagnosticLoggingDomain.h; sourceTree = "<group>"; };
72F7A08027F171BF0008EEE8 /* SVGFilterGraph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVGFilterGraph.h; sourceTree = "<group>"; };
72F7E742279B8F7400D82D2D /* SourceImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SourceImage.cpp; sourceTree = "<group>"; };
72F7E744279B8F7400D82D2D /* SourceImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceImage.h; sourceTree = "<group>"; };
72F7E74E279CEDE800D82D2D /* FEImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FEImage.cpp; sourceTree = "<group>"; };
Expand Down Expand Up @@ -28894,6 +28895,7 @@
081EBF380FD34F4100DA7559 /* SVGFilterBuilder.cpp */,
081EBF390FD34F4100DA7559 /* SVGFilterBuilder.h */,
726CDE25275B489700A445B2 /* SVGFilterExpression.h */,
72F7A08027F171BF0008EEE8 /* SVGFilterGraph.h */,
);
path = filters;
sourceTree = "<group>";
Expand Down Expand Up @@ -34057,6 +34059,7 @@
F442C35923E3ADD200499582 /* CompositionHighlight.h in Headers */,
2DD5A7271EBEE47D009BA597 /* CompositionUnderline.h in Headers */,
7116E2CC1FED75DC00C06FDE /* ComputedEffectTiming.h in Headers */,
7A7C8B5827F32EF70008E234 /* ComputedStylePropertyMapReadOnly.h in Headers */,
55AD09412408964A00DE4D2F /* ConcreteImageBuffer.h in Headers */,
FD31608F12B026F700C1A359 /* Cone.h in Headers */,
65C97AF308EA908800ACD273 /* config.h in Headers */,
Expand Down Expand Up @@ -36298,7 +36301,6 @@
44E349F9246F4E190068479C /* LibWebRTCEnumTraits.h in Headers */,
415747471E3869A400E914D8 /* LibWebRTCMacros.h in Headers */,
417612B01E3A994000C3D81D /* LibWebRTCMediaEndpoint.h in Headers */,
7A7C8B5827F32EF70008E234 /* ComputedStylePropertyMapReadOnly.h in Headers */,
417612B21E3A994000C3D81D /* LibWebRTCPeerConnectionBackend.h in Headers */,
415747481E3869A700E914D8 /* LibWebRTCProvider.h in Headers */,
41B28B3D1F860EF300FB52AC /* LibWebRTCProviderCocoa.h in Headers */,
Expand Down
14 changes: 7 additions & 7 deletions Source/WebCore/platform/graphics/filters/FEDropShadow.cpp
Expand Up @@ -61,14 +61,14 @@ FloatRect FEDropShadow::calculateImageRect(const Filter& filter, const FilterIma
return filter.clipToMaxEffectRect(imageRect, primitiveSubregion);
}

IntOutsets FEDropShadow::outsets(const Filter&) const
IntOutsets FEDropShadow::calculateOutsets(const FloatSize& offset, const FloatSize& stdDeviation)
{
IntSize outsetSize = FEGaussianBlur::calculateOutsetSize({ m_stdX, m_stdY });
IntSize outsetSize = FEGaussianBlur::calculateOutsetSize(stdDeviation);

int top = std::max<int>(0, outsetSize.height() - m_dy);
int right = std::max<int>(0, outsetSize.width() + m_dx);
int bottom = std::max<int>(0, outsetSize.height() + m_dy);
int left = std::max<int>(0, outsetSize.width() - m_dx);
int top = std::max<int>(0, outsetSize.height() - offset.height());
int right = std::max<int>(0, outsetSize.width() + offset.width());
int bottom = std::max<int>(0, outsetSize.height() + offset.height());
int left = std::max<int>(0, outsetSize.width() - offset.width());

return { top, right, bottom, left };
}
Expand All @@ -77,7 +77,7 @@ std::unique_ptr<FilterEffectApplier> FEDropShadow::createSoftwareApplier() const
{
return FilterEffectApplier::create<FEDropShadowSoftwareApplier>(*this);
}

TextStream& FEDropShadow::externalRepresentation(TextStream& ts, FilterRepresentation representation) const
{
ts << indent <<"[feDropShadow";
Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/platform/graphics/filters/FEDropShadow.h
Expand Up @@ -47,6 +47,8 @@ class FEDropShadow : public FilterEffect {
float shadowOpacity() const { return m_shadowOpacity; }
void setShadowOpacity(float shadowOpacity) { m_shadowOpacity = shadowOpacity; }

static IntOutsets calculateOutsets(const FloatSize& offset, const FloatSize& stdDeviation);

template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static std::optional<Ref<FEDropShadow>> decode(Decoder&);

Expand All @@ -55,8 +57,6 @@ class FEDropShadow : public FilterEffect {

FloatRect calculateImageRect(const Filter&, const FilterImageVector& inputs, const FloatRect& primitiveSubregion) const override;

IntOutsets outsets(const Filter&) const override;

std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;

WTF::TextStream& externalRepresentation(WTF::TextStream&, FilterRepresentation) const override;
Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp
Expand Up @@ -120,9 +120,9 @@ FloatRect FEGaussianBlur::calculateImageRect(const Filter& filter, const FilterI
return filter.clipToMaxEffectRect(imageRect, primitiveSubregion);
}

IntOutsets FEGaussianBlur::outsets(const Filter& filter) const
IntOutsets FEGaussianBlur::calculateOutsets(const FloatSize& stdDeviation)
{
IntSize outsetSize = calculateOutsetSize(filter.resolvedSize({ m_stdX, m_stdY }));
IntSize outsetSize = calculateOutsetSize(stdDeviation);
return { outsetSize.height(), outsetSize.width(), outsetSize.height(), outsetSize.width() };
}

Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/platform/graphics/filters/FEGaussianBlur.h
Expand Up @@ -44,6 +44,8 @@ class FEGaussianBlur : public FilterEffect {
static IntSize calculateUnscaledKernelSize(FloatSize stdDeviation);
static IntSize calculateOutsetSize(FloatSize stdDeviation);

static IntOutsets calculateOutsets(const FloatSize& stdDeviation);

template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static std::optional<Ref<FEGaussianBlur>> decode(Decoder&);

Expand All @@ -52,8 +54,6 @@ class FEGaussianBlur : public FilterEffect {

FloatRect calculateImageRect(const Filter&, const FilterImageVector& inputs, const FloatRect& primitiveSubregion) const override;

IntOutsets outsets(const Filter&) const override;

bool resultIsAlphaImage(const FilterImageVector& inputs) const override;

std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
Expand Down
16 changes: 8 additions & 8 deletions Source/WebCore/platform/graphics/filters/FEOffset.cpp
Expand Up @@ -60,19 +60,19 @@ FloatRect FEOffset::calculateImageRect(const Filter& filter, const FilterImageVe
return filter.clipToMaxEffectRect(imageRect, primitiveSubregion);
}

IntOutsets FEOffset::outsets(const Filter& filter) const
IntOutsets FEOffset::calculateOutsets(const FloatSize& offset)
{
auto offset = expandedIntSize(filter.resolvedSize({ m_dx, m_dy }));
auto adjustedOffset = expandedIntSize(offset);

IntOutsets outsets;
if (offset.height() < 0)
outsets.setTop(-offset.height());
if (adjustedOffset.height() < 0)
outsets.setTop(-adjustedOffset.height());
else
outsets.setBottom(offset.height());
if (offset.width() < 0)
outsets.setLeft(-offset.width());
outsets.setBottom(adjustedOffset.height());
if (adjustedOffset.width() < 0)
outsets.setLeft(-adjustedOffset.width());
else
outsets.setRight(offset.width());
outsets.setRight(adjustedOffset.width());

return outsets;
}
Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/platform/graphics/filters/FEOffset.h
Expand Up @@ -36,6 +36,8 @@ class FEOffset : public FilterEffect {
float dy() const { return m_dy; }
void setDy(float);

static IntOutsets calculateOutsets(const FloatSize& offset);

template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static std::optional<Ref<FEOffset>> decode(Decoder&);

Expand All @@ -44,8 +46,6 @@ class FEOffset : public FilterEffect {

FloatRect calculateImageRect(const Filter&, const FilterImageVector& inputs, const FloatRect& primitiveSubregion) const override;

IntOutsets outsets(const Filter&) const override;

bool resultIsAlphaImage(const FilterImageVector& inputs) const override;

std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
Expand Down
2 changes: 0 additions & 2 deletions Source/WebCore/platform/graphics/filters/Filter.h
Expand Up @@ -36,7 +36,6 @@ class FilterResults;

class Filter : public FilterFunction {
using FilterFunction::apply;
using FilterFunction::outsets;

public:
enum class ClipOperation { Intersect, Unite };
Expand Down Expand Up @@ -66,7 +65,6 @@ class Filter : public FilterFunction {

bool clampFilterRegionIfNeeded();

virtual IntOutsets outsets() const = 0;
virtual RefPtr<FilterImage> apply(FilterImage* sourceImage, FilterResults&) = 0;
WEBCORE_EXPORT RefPtr<FilterImage> apply(ImageBuffer* sourceImage, const FloatRect& sourceImageRect, FilterResults&);

Expand Down
1 change: 0 additions & 1 deletion Source/WebCore/platform/graphics/filters/FilterFunction.h
Expand Up @@ -95,7 +95,6 @@ class FilterFunction : public RefCounted<FilterFunction> {

virtual bool supportsAcceleratedRendering() const { return false; }
virtual RefPtr<FilterImage> apply(const Filter&, FilterImage&, FilterResults&) { return nullptr; }
virtual IntOutsets outsets(const Filter&) const { return { }; }

virtual WTF::TextStream& externalRepresentation(WTF::TextStream&, FilterRepresentation = FilterRepresentation::TestOutput) const = 0;

Expand Down

0 comments on commit 19c9835

Please sign in to comment.