Fix GLPrograms test.
Review URL: https://codereview.chromium.org/13327008

git-svn-id: http://skia.googlecode.com/svn/trunk@8450 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index 705faf8..6f22aa4 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -984,13 +984,20 @@
                               const TextureSamplerArray& samplers) SK_OVERRIDE {
             const char* dstColorName = builder->dstColor();
             GrAssert(NULL != dstColorName);
-            builder->fsCodeAppendf("\t\t%s.a = 1.0 - (1.0 - %s.a) * (1.0 - %s.a);\n",
-                                   outputColor, dstColorName, inputColor);
-            builder->fsCodeAppendf("\t\t%s.rgb = min((1.0 - %s.a) * %s.rgb + %s.rgb,"
-                                                   " (1.0 - %s.a) * %s.rgb + %s.rgb);\n",
-                                   outputColor,
-                                   inputColor, dstColorName, inputColor,
-                                   dstColorName, inputColor, dstColorName);
+            if (NULL == inputColor) {
+                // the input color is solid white
+                builder->fsCodeAppendf("\t\t%s.a = 1.0;\n", outputColor);
+                builder->fsCodeAppendf("\t\t%s.rgb = vec3(1.0, 1.0, 1.0) - %s.aaa + %s.rgb;\n",
+                                       outputColor, dstColorName, dstColorName);
+            } else {
+                builder->fsCodeAppendf("\t\t%s.a = 1.0 - (1.0 - %s.a) * (1.0 - %s.a);\n",
+                                       outputColor, dstColorName, inputColor);
+                builder->fsCodeAppendf("\t\t%s.rgb = min((1.0 - %s.a) * %s.rgb + %s.rgb,"
+                                                       " (1.0 - %s.a) * %s.rgb + %s.rgb);\n",
+                                       outputColor,
+                                       inputColor, dstColorName, inputColor,
+                                       dstColorName, inputColor, dstColorName);
+            }
         }
 
         static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&) { return 0; }
diff --git a/src/gpu/gl/GrGLProgramDesc.h b/src/gpu/gl/GrGLProgramDesc.h
index b1660d8..df5729f 100644
--- a/src/gpu/gl/GrGLProgramDesc.h
+++ b/src/gpu/gl/GrGLProgramDesc.h
@@ -38,6 +38,7 @@
     // For unit testing.
     void setRandom(SkMWCRandom*,
                    const GrGpuGL* gpu,
+                   const GrTexture* dummyDstTexture,
                    const GrEffectStage stages[GrDrawState::kNumStages]);
 
     /**