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/GrGpuGLShaders.cpp b/src/gpu/GrGpuGLShaders.cpp
index 0742c3b..6817580 100644
--- a/src/gpu/GrGpuGLShaders.cpp
+++ b/src/gpu/GrGpuGLShaders.cpp
@@ -210,7 +210,7 @@
         int idx = (int)(random.nextF() * (SkXfermode::kCoeffModesCnt));
         pdesc.fColorFilterXfermode = (SkXfermode::Mode)idx;
 
-        idx = (int)(random.nextF() * (kNumStages+1));
+        idx = (int)(random.nextF() * (GrDrawState::kNumStages + 1));
         pdesc.fFirstCoverageStage = idx;
 
         pdesc.fVertexLayout |= (random.nextF() > .5f) ?
@@ -229,10 +229,10 @@
                 pdesc.fVertexLayout |= GrDrawTarget::kEdge_VertexLayoutBit;
                 if (this->getCaps().fShaderDerivativeSupport) {
                     pdesc.fVertexEdgeType = random.nextF() > 0.5f ?
-                                                        kHairQuad_EdgeType :
-                                                        kHairLine_EdgeType;
+                        GrDrawState::kHairQuad_EdgeType :
+                        GrDrawState::kHairLine_EdgeType;
                 } else {
-                    pdesc.fVertexEdgeType = kHairLine_EdgeType;
+                    pdesc.fVertexEdgeType = GrDrawState::kHairLine_EdgeType;
                 }
                 pdesc.fEdgeAANumEdges = 0;
             } else {
@@ -252,12 +252,12 @@
             pdesc.fDualSrcOutput = ProgramDesc::kNone_DualSrcOutput;
         }
 
-        for (int s = 0; s < kNumStages; ++s) {
+        for (int s = 0; s < GrDrawState::kNumStages; ++s) {
             // enable the stage?
             if (random.nextF() > .5f) {
                 // use separate tex coords?
                 if (random.nextF() > .5f) {
-                    int t = (int)(random.nextF() * kMaxTexCoords);
+                    int t = (int)(random.nextF() * GrDrawState::kMaxTexCoords);
                     pdesc.fVertexLayout |= StageTexCoordVertexLayoutBit(s, t);
                 } else {
                     pdesc.fVertexLayout |= StagePosAsTexCoordVertexLayoutBit(s);
@@ -575,7 +575,7 @@
     const int& uni = fProgramData->fUniLocations.fEdgesUni;
     if (GrGLProgram::kUnusedUniform != uni) {
         int count = fCurrDrawState.fEdgeAANumEdges;
-        Edge edges[kMaxEdges];
+        GrDrawState::Edge edges[GrDrawState::kMaxEdges];
         // Flip the edges in Y
         float height = 
             static_cast<float>(fCurrDrawState.fRenderTarget->height());
@@ -701,7 +701,7 @@
         *currViewMatrix = fCurrDrawState.fViewMatrix;
     }
 
-    for (int s = 0; s < kNumStages; ++s) {
+    for (int s = 0; s < GrDrawState::kNumStages; ++s) {
         this->flushTextureMatrix(s);
 
         this->flushRadial2(s);
@@ -727,7 +727,7 @@
 
     int newColorOffset;
     int newCoverageOffset;
-    int newTexCoordOffsets[kMaxTexCoords];
+    int newTexCoordOffsets[GrDrawState::kMaxTexCoords];
     int newEdgeOffset;
 
     GrGLsizei newStride = VertexSizeAndOffsetsByIdx(
@@ -738,7 +738,7 @@
                                             &newEdgeOffset);
     int oldColorOffset;
     int oldCoverageOffset;
-    int oldTexCoordOffsets[kMaxTexCoords];
+    int oldTexCoordOffsets[GrDrawState::kMaxTexCoords];
     int oldEdgeOffset;
 
     GrGLsizei oldStride = VertexSizeAndOffsetsByIdx(
@@ -789,7 +789,7 @@
         fHWGeometryState.fVertexOffset = vertexOffset;
     }
 
-    for (int t = 0; t < kMaxTexCoords; ++t) {
+    for (int t = 0; t < GrDrawState::kMaxTexCoords; ++t) {
         if (newTexCoordOffsets[t] > 0) {
             GrGLvoid* texCoordOffset = (GrGLvoid*)(vertexOffset + newTexCoordOffsets[t]);
             int idx = GrGLProgram::TexCoordAttributeIdx(t);
@@ -924,10 +924,10 @@
         desc.fVertexEdgeType = fCurrDrawState.fVertexEdgeType;
     } else {
         // use canonical value when not set to avoid cache misses
-        desc.fVertexEdgeType = GrDrawTarget::kHairLine_EdgeType;
+        desc.fVertexEdgeType = GrDrawState::kHairLine_EdgeType;
     }
 
-    for (int s = 0; s < kNumStages; ++s) {
+    for (int s = 0; s < GrDrawState::kNumStages; ++s) {
         StageDesc& stage = desc.fStages[s];
 
         stage.fOptFlags = 0;
@@ -1032,8 +1032,8 @@
     // We set field in the desc to kNumStages when either there are no 
     // coverage stages or the distinction between coverage and color is
     // immaterial.
-    int firstCoverageStage = kNumStages;
-    desc.fFirstCoverageStage = kNumStages;
+    int firstCoverageStage = GrDrawState::kNumStages;
+    desc.fFirstCoverageStage = GrDrawState::kNumStages;
     bool hasCoverage = fCurrDrawState.fFirstCoverageStage <= lastEnabledStage;
     if (hasCoverage) {
         firstCoverageStage = fCurrDrawState.fFirstCoverageStage;