Make GrGLProgramDesc's key variable length by compacting the effect key array

R=robertphillips@google.com

Review URL: https://codereview.chromium.org/15252004

git-svn-id: http://skia.googlecode.com/svn/trunk@9239 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h
index 578b4a9..be6e687 100644
--- a/src/gpu/gl/GrGLProgram.h
+++ b/src/gpu/gl/GrGLProgram.h
@@ -48,7 +48,7 @@
     void abandon();
 
     /**
-     * The shader may modify the blend coefficients. Params are in/out
+     * The shader may modify the blend coefficients. Params are in/out.
      */
     void overrideBlend(GrBlendCoeff* srcCoeff, GrBlendCoeff* dstCoeff) const;
 
@@ -104,12 +104,10 @@
      * This function uploads uniforms and calls each GrGLEffect's setData. It is called before a
      * draw occurs using the program after the program has already been bound. It also uses the
      * GrGpuGL object to bind the textures required by the GrGLEffects.
-     *
-     * The color and coverage params override the GrDrawState's getColor() and getCoverage() values.
      */
     void setData(GrGpuGL*,
-                 GrColor color,
-                 GrColor coverage,
+                 GrDrawState::BlendOptFlags,
+                 const GrEffectStage* stages[],       // output of GrGLProgramDesc:Build()
                  const GrDeviceCoordTexture* dstCopy, // can be NULL
                  SharedGLState*);
 
@@ -121,7 +119,9 @@
     bool succeeded() const { return 0 != fProgramID; }
 
     /**
-     *  This is the heavy initialization routine for building a GLProgram.
+     * This is the heavy initialization routine for building a GLProgram. stages is all the enabled
+     * color stages followed by all the enabled coverage stages as output by
+     * GrGLProgramDesc::Build()
      */
     bool genProgram(const GrEffectStage* stages[]);