Bug 1415407 - Add webrender support for filters (hue-rotate, opacity, saturate). r=kats draft
authorEthan Lin <ethlin@mozilla.com>
Wed, 08 Nov 2017 04:04:27 +0000
changeset 698372 d7c27c248d4c7839684529214c2f433be7da4c8f
parent 698261 45715ece25fcb064eee4f977ebd842d44a87f22b
child 698373 d470c0fb36fdc3aed921fa49141b2a164d22ed1d
push id89268
push userbmo:ethlin@mozilla.com
push dateWed, 15 Nov 2017 16:49:40 +0000
reviewerskats
bugs1415407
milestone59.0a1
Bug 1415407 - Add webrender support for filters (hue-rotate, opacity, saturate). r=kats MozReview-Commit-ID: 7LGmFOsyPUU
layout/painting/nsDisplayList.cpp
--- 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)),