Skip to content
  • Timothy Nikkel's avatar
    Bug 1635658. Fix how CSS filters render with webrender that are represented as... · fe56adee
    Timothy Nikkel authored
    Bug 1635658. Fix how CSS filters render with webrender that are represented as component transfer when they are required to be represented as SVG filters. r=mstange a=pascalc
    
    The brightness, contrast, and invert css filters are represented as component transfer filters when they required to be represented as an svg filter (ie when an element has a combination of CSS and SVG filters specified).
    
    https://hg.mozilla.org/mozilla-central/rev/4f3360c4f104 (bug 1417699) used the value SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN for the function type in the G and B channels to specify that the R channel function should be used. As we know from https://hg.mozilla.org/mozilla-central/rev/a1ff0af83ad2 (bug 1605223) SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN is the value we get if the function is not specified, and by spec that is to be interpreted as the identity function.
    
    To fix this use a special function type that is not exposed to content, SVG_FECOMPONENTTRANSFER_SAME_AS_R, when we want to do this optimization. And then teach the webrender filter code to understand it.
    
    Differential Revision: https://phabricator.services.mozilla.com/D74189
    fe56adee