Add color filters to gpu path.

git-svn-id: http://skia.googlecode.com/svn/trunk@1297 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrGpuGLShaders.cpp b/gpu/src/GrGpuGLShaders.cpp
index 3ce6e55..2487563 100644
--- a/gpu/src/GrGpuGLShaders.cpp
+++ b/gpu/src/GrGpuGLShaders.cpp
@@ -438,6 +438,19 @@
                 GrCrash("Unknown color type.");
         }
     }
+    if (fProgramData->fUniLocations.fColorFilterUni
+                != GrGLProgram::kUnusedUniform
+            && fProgramData->fColorFilterColor
+                != fCurrDrawState.fColorFilterColor) {
+        float c[] = {
+            GrColorUnpackR(fCurrDrawState.fColorFilterColor) / 255.f,
+            GrColorUnpackG(fCurrDrawState.fColorFilterColor) / 255.f,
+            GrColorUnpackB(fCurrDrawState.fColorFilterColor) / 255.f,
+            GrColorUnpackA(fCurrDrawState.fColorFilterColor) / 255.f
+        };
+        GR_GL(Uniform4fv(fProgramData->fUniLocations.fColorFilterUni, 1, c));
+        fProgramData->fColorFilterColor = fCurrDrawState.fColorFilterColor;
+    }
 }
 
 
@@ -693,6 +706,8 @@
             fCurrentProgram.fStageEffects[s] = NULL;
         }
     }
+    desc.fColorFilterColor = fCurrDrawState.fColorFilterColor;
+    desc.fColorFilterXfermode = fCurrDrawState.fColorFilterXfermode;
 }