Bug 1415407 - Add webrender support for filters (hue-rotate, opacity, saturate). r=kats
MozReview-Commit-ID: 7LGmFOsyPUU
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -9670,24 +9670,34 @@ nsDisplayFilter::CreateWebRenderCommands
nsTArray<mozilla::wr::WrFilterOp> wrFilters;
const nsTArray<nsStyleFilter>& filters = mFrame->StyleEffects()->mFilters;
for (const nsStyleFilter& filter : filters) {
switch (filter.GetType()) {
case NS_STYLE_FILTER_BRIGHTNESS:
case NS_STYLE_FILTER_CONTRAST:
case NS_STYLE_FILTER_GRAYSCALE:
case NS_STYLE_FILTER_INVERT:
+ case NS_STYLE_FILTER_OPACITY:
+ case NS_STYLE_FILTER_SATURATE:
case NS_STYLE_FILTER_SEPIA: {
mozilla::wr::WrFilterOp filterOp = {
wr::ToWrFilterOpType(filter.GetType()),
filter.GetFilterParameter().GetFactorOrPercentValue(),
};
wrFilters.AppendElement(filterOp);
break;
}
+ case NS_STYLE_FILTER_HUE_ROTATE: {
+ mozilla::wr::WrFilterOp filterOp = {
+ wr::ToWrFilterOpType(filter.GetType()),
+ (float)filter.GetFilterParameter().GetAngleValueInDegrees(),
+ };
+ wrFilters.AppendElement(filterOp);
+ break;
+ }
case NS_STYLE_FILTER_BLUR: {
float appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
mozilla::wr::WrFilterOp filterOp = {
wr::ToWrFilterOpType(filter.GetType()),
ClampStdDeviation(
NSAppUnitsToFloatPixels(
filter.GetFilterParameter().GetCoordValue(),
appUnitsPerDevPixel)),