Refactoring the GrGpuGLShaders2 into 2 classes: GrGpuGLShaders
and GrGLProgram.  The change also contains stubs and placeholders for GrEffect
(work in progress), which will extend shader and rendering capabilities in
Ganesh.  The hash keys for the program cache table have been modified to be able
to accomodate variable-length keys, which will be required for GrEffect support.

Code review: http://codereview.appspot.com/4309045/



git-svn-id: http://skia.googlecode.com/svn/trunk@1031 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/include/GrConfig.h b/gpu/include/GrConfig.h
index 5d9d20f..6f519b5 100644
--- a/gpu/include/GrConfig.h
+++ b/gpu/include/GrConfig.h
@@ -328,6 +328,10 @@
     #define GR_DUMP_TEXTURE_UPLOAD  0
 #endif
 
+#ifndef GR_USE_NEW_GLSHADERS
+    #define GR_USE_NEW_GLSHADERS 0
+#endif
+
 /**
  *  GR_COLLECT_STATS controls whether the GrGpu class collects stats.
  *  If not already defined then collect in debug build but not release.
diff --git a/gpu/include/GrDrawTarget.h b/gpu/include/GrDrawTarget.h
index 35f912b..33469a3 100644
--- a/gpu/include/GrDrawTarget.h
+++ b/gpu/include/GrDrawTarget.h
@@ -30,6 +30,7 @@
 class GrClipIterator;
 class GrVertexBuffer;
 class GrIndexBuffer;
+class GrEffect;
 
 class GrDrawTarget : public GrRefCnt {
 public:
@@ -138,6 +139,7 @@
         GrBlendCoeff            fDstBlend;
         GrColor                 fBlendConstant;
         GrTexture*              fTextures[kNumStages];
+        GrEffect*               fEffects[kNumStages];
         GrSamplerState          fSamplerStates[kNumStages];
         GrRenderTarget*         fRenderTarget;
         GrColor                 fColor;