Extract GrDrawTarget::DrState into independent GrDrawState struct.
This is intended to be a first step towards making the stack of states
maintained by GrDrawTarget cheaper to maintain.



git-svn-id: http://skia.googlecode.com/svn/trunk@2544 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrGLProgram.h b/src/gpu/GrGLProgram.h
index 1dd1e3e..58e24d9 100644
--- a/src/gpu/GrGLProgram.h
+++ b/src/gpu/GrGLProgram.h
@@ -10,6 +10,7 @@
 #ifndef GrGLProgram_DEFINED
 #define GrGLProgram_DEFINED
 
+#include "GrDrawState.h"
 #include "GrGLInterface.h"
 #include "GrStringBuilder.h"
 #include "GrGpu.h"
@@ -76,17 +77,17 @@
      */
     static int PositionAttributeIdx() { return 0; }
     static int TexCoordAttributeIdx(int tcIdx) { return 1 + tcIdx; }
-    static int ColorAttributeIdx() { return 1 + GrDrawTarget::kMaxTexCoords; }
+    static int ColorAttributeIdx() { return 1 + GrDrawState::kMaxTexCoords; }
     static int CoverageAttributeIdx() {
-        return 2 + GrDrawTarget::kMaxTexCoords;
+        return 2 + GrDrawState::kMaxTexCoords;
     }
-    static int EdgeAttributeIdx() { return 3 + GrDrawTarget::kMaxTexCoords; }
+    static int EdgeAttributeIdx() { return 3 + GrDrawState::kMaxTexCoords; }
 
     static int ViewMatrixAttributeIdx() {
-        return 4 + GrDrawTarget::kMaxTexCoords;
+        return 4 + GrDrawState::kMaxTexCoords;
     }
     static int TextureMatrixAttributeIdx(int stage) {
-        return 7 + GrDrawTarget::kMaxTexCoords + 3 * stage;
+        return 7 + GrDrawState::kMaxTexCoords + 3 * stage;
     }
 
 public:
@@ -172,12 +173,12 @@
             kDualSrcOutputCnt
         };
 
-        GrDrawTarget::VertexEdgeType fVertexEdgeType;
+        GrDrawState::VertexEdgeType fVertexEdgeType;
 
         // stripped of bits that don't affect prog generation
         GrVertexLayout fVertexLayout;
 
-        StageDesc fStages[GrDrawTarget::kNumStages];
+        StageDesc fStages[GrDrawState::kNumStages];
 
         // To enable experimental geometry shader code (not for use in
         // production)
@@ -236,13 +237,13 @@
         GrGLint fColorUni;
         GrGLint fEdgesUni;
         GrGLint fColorFilterUni;
-        StageUniLocations fStages[GrDrawTarget::kNumStages];
+        StageUniLocations fStages[GrDrawState::kNumStages];
         void reset() {
             fViewMatrixUni = kUnusedUniform;
             fColorUni = kUnusedUniform;
             fEdgesUni = kUnusedUniform;
             fColorFilterUni = kUnusedUniform;
-            for (int s = 0; s < GrDrawTarget::kNumStages; ++s) {
+            for (int s = 0; s < GrDrawState::kNumStages; ++s) {
                 fStages[s].reset();
             }
         }
@@ -276,14 +277,14 @@
         // (GL uniform values travel with program)
         GrColor                     fColor;
         GrColor                     fColorFilterColor;
-        GrMatrix                    fTextureMatrices[GrDrawTarget::kNumStages];
+        GrMatrix                    fTextureMatrices[GrDrawState::kNumStages];
         // width and height used for normalized texel size
-        int                         fTextureWidth[GrDrawTarget::kNumStages];
-        int                         fTextureHeight[GrDrawTarget::kNumStages]; 
-        GrScalar                    fRadial2CenterX1[GrDrawTarget::kNumStages];
-        GrScalar                    fRadial2Radius0[GrDrawTarget::kNumStages];
-        bool                        fRadial2PosRoot[GrDrawTarget::kNumStages];
-        GrRect                      fTextureDomain[GrDrawTarget::kNumStages];
+        int                         fTextureWidth[GrDrawState::kNumStages];
+        int                         fTextureHeight[GrDrawState::kNumStages]; 
+        GrScalar                    fRadial2CenterX1[GrDrawState::kNumStages];
+        GrScalar                    fRadial2Radius0[GrDrawState::kNumStages];
+        bool                        fRadial2PosRoot[GrDrawState::kNumStages];
+        GrRect                      fTextureDomain[GrDrawState::kNumStages];
 
     private:
         enum Constants {
@@ -340,7 +341,7 @@
     // links the program
     bool bindOutputsAttribsAndLinkProgram(
                 const GrGLInterface* gl,
-                GrStringBuilder texCoordAttrNames[GrDrawTarget::kMaxTexCoords],
+                GrStringBuilder texCoordAttrNames[GrDrawState::kMaxTexCoords],
                 bool bindColorOut,
                 bool bindDualSrcOut,
                 CachedData* programData) const;