Diff
Modified: trunk/Source/WebCore/ChangeLog (286863 => 286864)
--- trunk/Source/WebCore/ChangeLog 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/ChangeLog 2021-12-10 19:26:37 UTC (rev 286864)
@@ -1,3 +1,62 @@
+2021-12-10 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] [Filters] Make FilterEffectVector a Vector of Ref<FilterEffect>
+ https://bugs.webkit.org/show_bug.cgi?id=234108
+
+ Reviewed by Cameron McCormack.
+
+ There is no case that would require inserting a nullptr in FilterEffectVector.
+
+ * platform/graphics/displaylists/DisplayListRecorder.cpp:
+ (WebCore::DisplayList::Recorder::drawFilteredImageBuffer):
+ * platform/graphics/filters/FilterEffect.cpp:
+ (WebCore::FilterEffect::inputEffect const):
+ * platform/graphics/filters/FilterEffect.h:
+ * platform/graphics/filters/FilterEffectVector.h:
+ * platform/graphics/filters/SourceAlpha.cpp:
+ (WebCore::SourceAlpha::SourceAlpha):
+ * rendering/CSSFilter.cpp:
+ (WebCore::CSSFilter::buildFilterFunctions):
+ (WebCore::CSSFilter::effectsOfType const):
+ * rendering/svg/RenderSVGResourceFilter.cpp:
+ (WebCore::RenderSVGResourceFilter::primitiveAttributeChanged):
+ * svg/SVGFEBlendElement.cpp:
+ (WebCore::SVGFEBlendElement::build const):
+ * svg/SVGFEColorMatrixElement.cpp:
+ (WebCore::SVGFEColorMatrixElement::build const):
+ * svg/SVGFEComponentTransferElement.cpp:
+ (WebCore::SVGFEComponentTransferElement::build const):
+ * svg/SVGFECompositeElement.cpp:
+ (WebCore::SVGFECompositeElement::build const):
+ * svg/SVGFEConvolveMatrixElement.cpp:
+ (WebCore::SVGFEConvolveMatrixElement::build const):
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ (WebCore::SVGFEDiffuseLightingElement::build const):
+ * svg/SVGFEDisplacementMapElement.cpp:
+ (WebCore::SVGFEDisplacementMapElement::build const):
+ * svg/SVGFEDropShadowElement.cpp:
+ (WebCore::SVGFEDropShadowElement::build const):
+ * svg/SVGFEGaussianBlurElement.cpp:
+ (WebCore::SVGFEGaussianBlurElement::build const):
+ * svg/SVGFEMergeElement.cpp:
+ (WebCore::SVGFEMergeElement::build const):
+ * svg/SVGFEMorphologyElement.cpp:
+ (WebCore::SVGFEMorphologyElement::build const):
+ * svg/SVGFEOffsetElement.cpp:
+ (WebCore::SVGFEOffsetElement::build const):
+ * svg/SVGFESpecularLightingElement.cpp:
+ (WebCore::SVGFESpecularLightingElement::build const):
+ * svg/SVGFETileElement.cpp:
+ (WebCore::SVGFETileElement::build const):
+ * svg/graphics/filters/SVGFilter.cpp:
+ (WebCore::SVGFilter::effectsOfType const):
+ * svg/graphics/filters/SVGFilterBuilder.cpp:
+ (WebCore::SVGFilterBuilder::clearResultsRecursive):
+ (WebCore::SVGFilterBuilder::buildEffectExpression const):
+ (WebCore::SVGFilterBuilder::buildExpression const):
+ * svg/graphics/filters/SVGFilterBuilder.h:
+ (WebCore::SVGFilterBuilder::effectReferences):
+
2021-12-10 Devin Rousso <[email protected]>
Add a way to write a `SharedBuffer` to the Pasteboard
Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp (286863 => 286864)
--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -155,7 +155,7 @@
}
for (auto& effect : filter.effectsOfType(FilterEffect::Type::FEImage)) {
- bool isRecorded = WTF::switchOn(downcast<FEImage>(effect.get())->sourceImage(),
+ bool isRecorded = WTF::switchOn(downcast<FEImage>(effect.get()).sourceImage(),
[&] (const Ref<Image>& image) {
if (auto nativeImage = image->nativeImage()) {
recordResourceUse(*nativeImage);
Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp (286863 => 286864)
--- trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -147,10 +147,10 @@
return m_filterImage;
}
-FilterEffect* FilterEffect::inputEffect(unsigned number) const
+FilterEffect& FilterEffect::inputEffect(unsigned number) const
{
ASSERT_WITH_SECURITY_IMPLICATION(number < m_inputEffects.size());
- return m_inputEffects.at(number).get();
+ return m_inputEffects.at(number);
}
void FilterEffect::clearResult()
Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h (286863 => 286864)
--- trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h 2021-12-10 19:26:37 UTC (rev 286864)
@@ -51,7 +51,7 @@
FilterImageVector takeImageInputs(FilterImageVector& stack) const;
FilterEffectVector& inputEffects() { return m_inputEffects; }
- FilterEffect* inputEffect(unsigned) const;
+ FilterEffect& inputEffect(unsigned) const;
RefPtr<FilterImage> apply(const Filter&, const FilterImageVector& inputs, const std::optional<FilterEffectGeometry>& = std::nullopt);
Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h (286863 => 286864)
--- trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffectVector.h 2021-12-10 19:26:37 UTC (rev 286864)
@@ -31,6 +31,6 @@
class FilterEffect;
-using FilterEffectVector = Vector<RefPtr<FilterEffect>>;
+using FilterEffectVector = Vector<Ref<FilterEffect>>;
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp (286863 => 286864)
--- trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -46,7 +46,7 @@
: FilterEffect(FilterEffect::Type::SourceAlpha)
{
setOperatingColorSpace(sourceEffect.operatingColorSpace());
- inputEffects().append(&sourceEffect);
+ inputEffects().append(sourceEffect);
}
std::unique_ptr<FilterEffectApplier> SourceAlpha::createApplier(const Filter&) const
Modified: trunk/Source/WebCore/rendering/CSSFilter.cpp (286863 => 286864)
--- trunk/Source/WebCore/rendering/CSSFilter.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/rendering/CSSFilter.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -315,7 +315,7 @@
if (effect) {
effect->setOperatingColorSpace(DestinationColorSpace::SRGB());
- effect->inputEffects() = { WTFMove(previousEffect) };
+ effect->inputEffects() = { previousEffect.releaseNonNull() };
m_functions.append({ *effect });
previousEffect = WTFMove(effect);
}
@@ -353,7 +353,7 @@
for (auto& function : m_functions) {
if (function->filterType() == filterType) {
- effects.append({ downcast<FilterEffect>(function.ptr()) });
+ effects.append({ downcast<FilterEffect>(function.get()) });
continue;
}
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (286863 => 286864)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -245,7 +245,7 @@
// or none of them will be changed.
if (!primitve->setFilterEffectAttribute(effect, attribute))
return;
- builder->clearResultsRecursive(effect);
+ builder->clearResultsRecursive(*effect);
// Repaint the image on the screen.
markClientForInvalidation(*objectFilterDataPair.key, RepaintInvalidation);
Modified: trunk/Source/WebCore/svg/SVGFEBlendElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEBlendElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEBlendElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -109,7 +109,7 @@
return nullptr;
auto effect = FEBlend::create(mode());
- effect->inputEffects() = { WTFMove(input1), WTFMove(input2) };
+ effect->inputEffects() = { input1.releaseNonNull(), input2.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -142,7 +142,7 @@
}
auto effect = FEColorMatrix::create(filterType, WTFMove(filterValues));
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -87,7 +87,7 @@
}
auto effect = FEComponentTransfer::create(red, green, blue, alpha);
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFECompositeElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFECompositeElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFECompositeElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -140,7 +140,7 @@
return nullptr;
auto effect = FEComposite::create(svgOperator(), k1(), k2(), k3(), k4());
- effect->inputEffects() = { WTFMove(input1), WTFMove(input2) };
+ effect->inputEffects() = { input1.releaseNonNull(), input2.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -247,7 +247,7 @@
}
auto effect = FEConvolveMatrix::create(IntSize(orderXValue, orderYValue), divisorValue, bias(), IntPoint(targetXValue, targetYValue), edgeMode(), FloatPoint(kernelUnitLengthXValue, kernelUnitLengthYValue), preserveAlpha(), kernelMatrix);
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -171,7 +171,7 @@
Color color = renderer->style().colorByApplyingColorFilter(renderer->style().svgStyle().lightingColor());
auto effect = FEDiffuseLighting::create(color, surfaceScale(), diffuseConstant(), kernelUnitLengthX(), kernelUnitLengthY(), WTFMove(lightSource));
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -124,7 +124,7 @@
return nullptr;
auto effect = FEDisplacementMap::create(xChannelSelector(), yChannelSelector(), scale());
- effect->inputEffects() = { WTFMove(input1), WTFMove(input2) };
+ effect->inputEffects() = { input1.releaseNonNull(), input2.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -116,7 +116,7 @@
float opacity = svgStyle.floodOpacity();
auto effect = FEDropShadow::create(stdDeviationX(), stdDeviationY(), dx(), dy(), color, opacity);
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -105,7 +105,7 @@
return nullptr;
auto effect = FEGaussianBlur::create(stdDeviationX(), stdDeviationY(), edgeMode());
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEMergeElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEMergeElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEMergeElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -53,7 +53,7 @@
auto mergeEffect = filterBuilder.getEffectById(mergeNode.in1());
if (!mergeEffect)
return nullptr;
- mergeInputs.append(WTFMove(mergeEffect));
+ mergeInputs.append(mergeEffect.releaseNonNull());
}
mergeInputs.shrinkToFit();
Modified: trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -126,7 +126,7 @@
return nullptr;
auto effect = FEMorphology::create(svgOperator(), xRadius, yRadius);
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -88,7 +88,7 @@
return nullptr;
auto effect = FEOffset::create(dx(), dy());
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -179,7 +179,7 @@
Color color = renderer->style().colorByApplyingColorFilter(renderer->style().svgStyle().lightingColor());
auto effect = FESpecularLighting::create(color, surfaceScale(), specularConstant(), specularExponent(), kernelUnitLengthX(), kernelUnitLengthY(), WTFMove(lightSource));
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/SVGFETileElement.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/SVGFETileElement.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/SVGFETileElement.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -77,7 +77,7 @@
return nullptr;
auto effect = FETile::create();
- effect->inputEffects() = { WTFMove(input1) };
+ effect->inputEffects() = { input1.releaseNonNull() };
return effect;
}
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -119,12 +119,12 @@
FilterEffectVector SVGFilter::effectsOfType(FilterFunction::Type filterType) const
{
- HashSet<RefPtr<FilterEffect>> effects;
+ HashSet<Ref<FilterEffect>> effects;
for (auto& term : m_expression) {
auto& effect = term.effect;
if (effect->filterType() == filterType)
- effects.add({ effect.ptr() });
+ effects.add(effect);
}
return copyToVector(effects);
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp (286863 => 286864)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -171,15 +171,15 @@
addBuiltinEffects();
}
-void SVGFilterBuilder::clearResultsRecursive(FilterEffect* effect)
+void SVGFilterBuilder::clearResultsRecursive(FilterEffect& effect)
{
- if (!effect->hasResult())
+ if (!effect.hasResult())
return;
- effect->clearResult();
+ effect.clearResult();
for (auto& reference : effectReferences(effect))
- clearResultsRecursive(reference);
+ clearResultsRecursive(*reference);
}
std::optional<FilterEffectGeometry> SVGFilterBuilder::effectGeometry(FilterEffect& effect) const
@@ -190,7 +190,7 @@
return std::nullopt;
}
-bool SVGFilterBuilder::buildEffectExpression(const RefPtr<FilterEffect>& effect, FilterEffectVector& stack, unsigned level, SVGFilterExpression& _expression_) const
+bool SVGFilterBuilder::buildEffectExpression(FilterEffect& effect, FilterEffectVector& stack, unsigned level, SVGFilterExpression& _expression_) const
{
// A cycle is detected.
if (stack.contains(effect))
@@ -198,9 +198,9 @@
stack.append(effect);
- _expression_.append({ *effect, effectGeometry(*effect), level });
+ _expression_.append({ effect, effectGeometry(effect), level });
- for (auto& inputEffect : effect->inputEffects()) {
+ for (auto& inputEffect : effect.inputEffects()) {
if (!buildEffectExpression(inputEffect, stack, level + 1, _expression_))
return false;
}
@@ -218,7 +218,7 @@
return false;
FilterEffectVector stack;
- if (!buildEffectExpression(m_lastEffect, stack, 0, _expression_))
+ if (!buildEffectExpression(*m_lastEffect, stack, 0, _expression_))
return false;
if (_expression_.size() > maxTotalNumberFilterEffects)
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h (286863 => 286864)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h 2021-12-10 19:26:37 UTC (rev 286864)
@@ -54,11 +54,11 @@
void appendEffectToEffectReferences(RefPtr<FilterEffect>&&, RenderObject*);
- inline FilterEffectSet& effectReferences(FilterEffect* effect)
+ inline FilterEffectSet& effectReferences(FilterEffect& effect)
{
// Only allowed for effects belongs to this builder.
- ASSERT(m_effectReferences.contains(effect));
- return m_effectReferences.find(effect)->value;
+ ASSERT(m_effectReferences.contains(&effect));
+ return m_effectReferences.find(&effect)->value;
}
// Required to change the attributes of a filter during an svgAttributeChanged.
@@ -65,7 +65,7 @@
inline FilterEffect* effectByRenderer(RenderObject* object) { return m_effectRenderer.get(object); }
void clearEffects();
- void clearResultsRecursive(FilterEffect*);
+ void clearResultsRecursive(FilterEffect&);
void setupBuiltinEffects(Ref<FilterEffect> sourceGraphic);
RefPtr<FilterEffect> buildFilterEffects(SVGFilterElement&);
@@ -79,7 +79,7 @@
}
std::optional<FilterEffectGeometry> effectGeometry(FilterEffect&) const;
- bool buildEffectExpression(const RefPtr<FilterEffect>&, FilterEffectVector& stack, unsigned level, SVGFilterExpression&) const;
+ bool buildEffectExpression(FilterEffect&, FilterEffectVector& stack, unsigned level, SVGFilterExpression&) const;
HashMap<AtomString, RefPtr<FilterEffect>> m_builtinEffects;
HashMap<AtomString, RefPtr<FilterEffect>> m_namedEffects;
Modified: trunk/Source/WebKit/ChangeLog (286863 => 286864)
--- trunk/Source/WebKit/ChangeLog 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebKit/ChangeLog 2021-12-10 19:26:37 UTC (rev 286864)
@@ -1,3 +1,13 @@
+2021-12-10 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] [Filters] Make FilterEffectVector a Vector of Ref<FilterEffect>
+ https://bugs.webkit.org/show_bug.cgi?id=234108
+
+ Reviewed by Cameron McCormack.
+
+ * GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
+ (WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):
+
2021-12-10 Per Arne Vollan <[email protected]>
[WP][macOS] Add required system call
Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp (286863 => 286864)
--- trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp 2021-12-10 19:26:14 UTC (rev 286863)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp 2021-12-10 19:26:37 UTC (rev 286864)
@@ -236,7 +236,7 @@
auto filter = filterReference.takeFilter();
for (auto& effect : filter->effectsOfType(FilterEffect::Type::FEImage)) {
- auto& feImage = *downcast<FEImage>(effect.get());
+ auto& feImage = downcast<FEImage>(effect.get());
const auto* resourceIdentifier = std::get_if<RenderingResourceIdentifier>(&feImage.sourceImage());
if (!resourceIdentifier) {