12021-11-10 Said Abou-Hallawa <said@apple.com>
2
3 [GPU Process] Remove the reference to Filter from FilterEffect
4 https://bugs.webkit.org/show_bug.cgi?id=232551
5 rdar://85136447
6
7 Reviewed by NOBODY (OOPS!).
8
9 Instead of having a reference to the Filter in the FilterEffect, we are
10 going to pass a reference to the Filter to the FilterEffect functions
11 only when needed. FilterEffect may need access to the Filter only in two
12 methods: determineAbsolutePaintRect() and platformApplySoftware().
13
14 We need to change all the FilterEffect create methods to not take a Filter
15 as input. This requires the SVG filter effect elements to change their
16 build() method. And it requires also CSSFilter to not pass itself to the
17 FilterEffects its create.
18
19 * platform/graphics/coreimage/FilterEffectRendererCoreImage.h:
20 * platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:
21 (WebCore::FilterEffectRendererCoreImage::applyEffects):
22 (WebCore::FilterEffectRendererCoreImage::connectCIFilters):
23 (WebCore::FilterEffectRendererCoreImage::imageForSourceGraphic):
24 * platform/graphics/cpu/arm/filters/FEBlendNEON.h:
25 (WebCore::FEBlend::platformApplySoftware):
26 * platform/graphics/filters/FEBlend.cpp:
27 (WebCore::FEBlend::create):
28 (WebCore::FEBlend::FEBlend):
29 (WebCore::FEBlend::platformApplySoftware):
30 * platform/graphics/filters/FEBlend.h:
31 * platform/graphics/filters/FEColorMatrix.cpp:
32 (WebCore::FEColorMatrix::create):
33 (WebCore::FEColorMatrix::FEColorMatrix):
34 (WebCore::FEColorMatrix::platformApplySoftware):
35 * platform/graphics/filters/FEColorMatrix.h:
36 * platform/graphics/filters/FEComponentTransfer.cpp:
37 (WebCore::FEComponentTransfer::create):
38 (WebCore::FEComponentTransfer::FEComponentTransfer):
39 (WebCore::FEComponentTransfer::platformApplySoftware):
40 * platform/graphics/filters/FEComponentTransfer.h:
41 * platform/graphics/filters/FEComposite.cpp:
42 (WebCore::FEComposite::create):
43 (WebCore::FEComposite::FEComposite):
44 (WebCore::FEComposite::determineAbsolutePaintRect):
45 (WebCore::FEComposite::platformApplySoftware):
46 * platform/graphics/filters/FEComposite.h:
47 * platform/graphics/filters/FEConvolveMatrix.cpp:
48 (WebCore::FEConvolveMatrix::create):
49 (WebCore::FEConvolveMatrix::FEConvolveMatrix):
50 (WebCore::FEConvolveMatrix::platformApplySoftware):
51 * platform/graphics/filters/FEConvolveMatrix.h:
52 * platform/graphics/filters/FEDiffuseLighting.cpp:
53 (WebCore::FEDiffuseLighting::create):
54 (WebCore::FEDiffuseLighting::FEDiffuseLighting):
55 * platform/graphics/filters/FEDiffuseLighting.h:
56 * platform/graphics/filters/FEDisplacementMap.cpp:
57 (WebCore::FEDisplacementMap::create):
58 (WebCore::FEDisplacementMap::FEDisplacementMap):
59 (WebCore::FEDisplacementMap::platformApplySoftware):
60 * platform/graphics/filters/FEDisplacementMap.h:
61 * platform/graphics/filters/FEDropShadow.cpp:
62 (WebCore::FEDropShadow::create):
63 (WebCore::FEDropShadow::FEDropShadow):
64 (WebCore::FEDropShadow::determineAbsolutePaintRect):
65 (WebCore::FEDropShadow::platformApplySoftware):
66 * platform/graphics/filters/FEDropShadow.h:
67 * platform/graphics/filters/FEFlood.cpp:
68 (WebCore::FEFlood::create):
69 (WebCore::FEFlood::FEFlood):
70 (WebCore::FEFlood::platformApplySoftware):
71 * platform/graphics/filters/FEFlood.h:
72 * platform/graphics/filters/FEGaussianBlur.cpp:
73 (WebCore::FEGaussianBlur::create):
74 (WebCore::FEGaussianBlur::FEGaussianBlur):
75 (WebCore::FEGaussianBlur::determineAbsolutePaintRect):
76 (WebCore::FEGaussianBlur::platformApplySoftware):
77 * platform/graphics/filters/FEGaussianBlur.h:
78 * platform/graphics/filters/FELighting.cpp:
79 (WebCore::FELighting::FELighting):
80 (WebCore::FELighting::platformApplySoftware):
81 * platform/graphics/filters/FELighting.h:
82 * platform/graphics/filters/FEMerge.cpp:
83 (WebCore::FEMerge::create):
84 (WebCore::FEMerge::FEMerge):
85 (WebCore::FEMerge::platformApplySoftware):
86 * platform/graphics/filters/FEMerge.h:
87 * platform/graphics/filters/FEMorphology.cpp:
88 (WebCore::FEMorphology::create):
89 (WebCore::FEMorphology::FEMorphology):
90 (WebCore::FEMorphology::determineAbsolutePaintRect):
91 (WebCore::FEMorphology::platformApplySoftware):
92 * platform/graphics/filters/FEMorphology.h:
93 * platform/graphics/filters/FEOffset.cpp:
94 (WebCore::FEOffset::create):
95 (WebCore::FEOffset::FEOffset):
96 (WebCore::FEOffset::determineAbsolutePaintRect):
97 (WebCore::FEOffset::platformApplySoftware):
98 * platform/graphics/filters/FEOffset.h:
99 * platform/graphics/filters/FESpecularLighting.cpp:
100 (WebCore::FESpecularLighting::create):
101 (WebCore::FESpecularLighting::FESpecularLighting):
102 * platform/graphics/filters/FESpecularLighting.h:
103 * platform/graphics/filters/FETile.cpp:
104 (WebCore::FETile::create):
105 (WebCore::FETile::FETile):
106 (WebCore::FETile::platformApplySoftware):
107 * platform/graphics/filters/FETile.h:
108 * platform/graphics/filters/FETurbulence.cpp:
109 (WebCore::FETurbulence::create):
110 (WebCore::FETurbulence::FETurbulence):
111 (WebCore::FETurbulence::fillRegion const):
112 (WebCore::FETurbulence::fillRegionWorker):
113 (WebCore::FETurbulence::platformApplySoftware):
114 * platform/graphics/filters/FETurbulence.h:
115 * platform/graphics/filters/Filter.h:
116 (WebCore::Filter::sourceImage const):
117 (WebCore::Filter::sourceImage): Deleted.
118
119 * platform/graphics/filters/FilterEffect.cpp:
120 (WebCore::FilterEffect::FilterEffect):
121 (WebCore::FilterEffect::determineAbsolutePaintRect):
122 (WebCore::FilterEffect::determineFilterPrimitiveSubregion):
123 (WebCore::FilterEffect::apply):
124 (WebCore::FilterEffect::imageBufferResult):
125 (WebCore::FilterEffect::convertPixelBufferToColorSpace):
126 (WebCore::FilterEffect::convertImageBufferToColorSpace):
127 (WebCore::FilterEffect::createImageBufferResult):
128 * platform/graphics/filters/FilterEffect.h:
129 (WebCore::FilterEffect::filter): Deleted.
130 (WebCore::FilterEffect::filter const): Deleted.
131 Create a unaccelerated filter image result for now. This will be fixed
132 in the following patch. Anyway currently we never create accelerated
133 intermediate ImageBuffers for filters.
134
135 * platform/graphics/filters/FilterEffectRenderer.h:
136 * platform/graphics/filters/SourceAlpha.cpp:
137 (WebCore::SourceAlpha::SourceAlpha):
138 (WebCore::SourceAlpha::determineAbsolutePaintRect):
139 (WebCore::SourceAlpha::platformApplySoftware):
140 * platform/graphics/filters/SourceAlpha.h:
141 * platform/graphics/filters/SourceGraphic.cpp:
142 (WebCore::SourceGraphic::create):
143 (WebCore::SourceGraphic::SourceGraphic):
144 (WebCore::SourceGraphic::determineAbsolutePaintRect):
145 (WebCore::SourceGraphic::platformApplySoftware):
146 * platform/graphics/filters/SourceGraphic.h:
147 (WebCore::SourceGraphic::SourceGraphic): Deleted.
148 * rendering/CSSFilter.cpp:
149 (WebCore::createBlurEffect):
150 (WebCore::createBrightnessEffect):
151 (WebCore::createContrastEffect):
152 (WebCore::createDropShadowEffect):
153 (WebCore::createGrayScaleEffect):
154 (WebCore::createHueRotateEffect):
155 (WebCore::createInvertEffect):
156 (WebCore::createOpacityEffect):
157 (WebCore::createSaturateEffect):
158 (WebCore::createSepiaEffect):
159 (WebCore::CSSFilter::buildFilterFunctions):
160 (WebCore::CSSFilter::determineFilterPrimitiveSubregion):
161 (WebCore::CSSFilter::apply):
162 * rendering/CSSFilter.h:
163 Apply the FilterFunctions of the CSSFilter in the forward direction.
164
165 * rendering/svg/RenderSVGResourceFilter.cpp:
166 (WebCore::RenderSVGResourceFilter::applyResource):
167 (WebCore::RenderSVGResourceFilter::postApplyResource):
168
169 * svg/SVGFEBlendElement.cpp:
170 (WebCore::SVGFEBlendElement::build const):
171 * svg/SVGFEBlendElement.h:
172 * svg/SVGFEColorMatrixElement.cpp:
173 (WebCore::SVGFEColorMatrixElement::build const):
174 * svg/SVGFEColorMatrixElement.h:
175 * svg/SVGFEComponentTransferElement.cpp:
176 (WebCore::SVGFEComponentTransferElement::build const):
177 * svg/SVGFEComponentTransferElement.h:
178 * svg/SVGFECompositeElement.cpp:
179 (WebCore::SVGFECompositeElement::build const):
180 * svg/SVGFECompositeElement.h:
181 * svg/SVGFEConvolveMatrixElement.cpp:
182 (WebCore::SVGFEConvolveMatrixElement::build const):
183 * svg/SVGFEConvolveMatrixElement.h:
184 * svg/SVGFEDiffuseLightingElement.cpp:
185 (WebCore::SVGFEDiffuseLightingElement::build const):
186 * svg/SVGFEDiffuseLightingElement.h:
187 * svg/SVGFEDisplacementMapElement.cpp:
188 (WebCore::SVGFEDisplacementMapElement::build const):
189 * svg/SVGFEDisplacementMapElement.h:
190 * svg/SVGFEDropShadowElement.cpp:
191 (WebCore::SVGFEDropShadowElement::build const):
192 * svg/SVGFEDropShadowElement.h:
193 * svg/SVGFEFloodElement.cpp:
194 (WebCore::SVGFEFloodElement::build const):
195 * svg/SVGFEFloodElement.h:
196 * svg/SVGFEGaussianBlurElement.cpp:
197 (WebCore::SVGFEGaussianBlurElement::build const):
198 * svg/SVGFEGaussianBlurElement.h:
199 * svg/SVGFEImageElement.cpp:
200 (WebCore::SVGFEImageElement::build const):
201 * svg/SVGFEImageElement.h:
202 * svg/SVGFEMergeElement.cpp:
203 (WebCore::SVGFEMergeElement::build const):
204 * svg/SVGFEMergeElement.h:
205 * svg/SVGFEMorphologyElement.cpp:
206 (WebCore::SVGFEMorphologyElement::build const):
207 * svg/SVGFEMorphologyElement.h:
208 * svg/SVGFEOffsetElement.cpp:
209 (WebCore::SVGFEOffsetElement::build const):
210 * svg/SVGFEOffsetElement.h:
211 * svg/SVGFESpecularLightingElement.cpp:
212 (WebCore::SVGFESpecularLightingElement::build const):
213 * svg/SVGFESpecularLightingElement.h:
214 * svg/SVGFETileElement.cpp:
215 (WebCore::SVGFETileElement::build const):
216 * svg/SVGFETileElement.h:
217 * svg/SVGFETurbulenceElement.cpp:
218 (WebCore::SVGFETurbulenceElement::build const):
219 * svg/SVGFETurbulenceElement.h:
220 * svg/SVGFilterPrimitiveStandardAttributes.h:
221 Remove the Filter as an input to the build() method and pass a reference
222 to SVGFilterBuilder instead of passing a pointer.
223
224 * svg/graphics/filters/SVGFEImage.cpp:
225 (WebCore::FEImage::create):
226 (WebCore::FEImage::FEImage):
227 (WebCore::FEImage::determineAbsolutePaintRect):
228 (WebCore::FEImage::platformApplySoftware):
229 * svg/graphics/filters/SVGFEImage.h:
230 * svg/graphics/filters/SVGFilter.cpp:
231 (WebCore::SVGFilter::create):
232 (WebCore::SVGFilter::apply):
233 * svg/graphics/filters/SVGFilter.h:
234 * svg/graphics/filters/SVGFilterBuilder.cpp:
235 (WebCore::SVGFilterBuilder::buildFilterEffects):
236 * svg/graphics/filters/SVGFilterBuilder.h:
237