Bug 1411813 - Don't fallback nsDisplayFilter if opacity is present. r=kats
MozReview-Commit-ID: 4I8W5JZ2fyx
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -9613,17 +9613,17 @@ ClampStdDeviation(float aStdDeviation)
bool
nsDisplayFilter::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
- if (mFrame->IsFrameOfType(nsIFrame::eSVG) || mFrame->StyleEffects()->mOpacity != 1.0f) {
+ if (mFrame->IsFrameOfType(nsIFrame::eSVG)) {
return false;
}
// Due to differences in the way that WebRender filters operate
// only the brightness and contrast filters use that path. We
// can gradually enable more filters as WebRender bugs are fixed.
nsTArray<mozilla::wr::WrFilterOp> wrFilters;
const nsTArray<nsStyleFilter>& filters = mFrame->StyleEffects()->mFilters;
@@ -9653,17 +9653,18 @@ nsDisplayFilter::CreateWebRenderCommands
wrFilters.AppendElement(filterOp);
break;
}
default:
return false;
}
}
- StackingContextHelper sc(aSc, aBuilder, wrFilters);
+ float opacity = mFrame->StyleEffects()->mOpacity;
+ StackingContextHelper sc(aSc, aBuilder, wrFilters, nullptr, 0, opacity != 1.0f && mHandleOpacity ? &opacity : nullptr);
nsDisplaySVGEffects::CreateWebRenderCommands(aBuilder, aResources, sc, aManager, aDisplayListBuilder);
return true;
}
#ifdef MOZ_DUMP_PAINTING
void
nsDisplayFilter::PrintEffects(nsACString& aTo)