Fix SW sRGB dst + LCD coverage bug.
authormtklein <mtklein@chromium.org>
Fri, 22 Jul 2016 14:35:08 +0000 (07:35 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 22 Jul 2016 14:35:08 +0000 (07:35 -0700)
We're using the linear procs for sRGB destintations
and the sRGB procs for linear destinations.  Fix that.

C.f. State32::getLCDProc(), which flags |= kDstIsSRGB_LCDFlag.
kDistIsSRGB is (1<<2) == 4, so the sRGB procs must be 4-7, not 0-3.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2177493002

Review-Url: https://codereview.chromium.org/2177493002

src/core/SkXfermode4f.cpp

index 87a12a7..1a9b58e 100644 (file)
@@ -464,11 +464,11 @@ SkXfermode::LCD32Proc SkXfermode::GetLCD32Proc(uint32_t flags) {
     flags &= 7;
 
     const LCD32Proc procs[] = {
-        srcover_n_lcd<kSRGB_Dst>,   src_n_lcd<kSRGB_Dst>,
-        srcover_1_lcd<kSRGB_Dst>,   src_1_lcd<kSRGB_Dst>,
-
         srcover_n_lcd<kLinear_Dst>, src_n_lcd<kLinear_Dst>,
         srcover_1_lcd<kLinear_Dst>, src_1_lcd<kLinear_Dst>,
+
+        srcover_n_lcd<kSRGB_Dst>,   src_n_lcd<kSRGB_Dst>,
+        srcover_1_lcd<kSRGB_Dst>,   src_1_lcd<kSRGB_Dst>,
     };
     return procs[flags];
 }