Revert 2830 and 2831.



git-svn-id: http://skia.googlecode.com/svn/trunk@2832 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index a792bd1..de80f65 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -217,17 +217,21 @@
 // It does not reset stage textures/samplers or per-vertex-edge-aa state since
 // they aren't used unless the vertex layout references them.
 // It also doesn't set the render target.
-void reset_target_state(GrDrawState* drawState) {
-        drawState->setViewMatrix(GrMatrix::I());
-        drawState->setColorFilter(0, SkXfermode::kDst_Mode);
-        drawState->resetStateFlags();
-        drawState->setEdgeAAData(NULL, 0);
-        drawState->disableStencil();
-        drawState->setAlpha(0xFF);
-        drawState->setBlendFunc(kOne_BlendCoeff,
-                                kZero_BlendCoeff);
-        drawState->setFirstCoverageStage(GrDrawState::kNumStages);
-        drawState->setDrawFace(GrDrawState::kBoth_DrawFace);
+void reset_target_state(GrDrawTarget* target){
+        target->setViewMatrix(GrMatrix::I());
+        target->setColorFilter(0, SkXfermode::kDst_Mode);
+        target->disableState(GrDrawTarget::kDither_StateBit |
+                             GrDrawTarget::kHWAntialias_StateBit |
+                             GrDrawTarget::kClip_StateBit |
+                             GrDrawTarget::kNoColorWrites_StateBit |
+                             GrDrawTarget::kEdgeAAConcave_StateBit);
+        target->setEdgeAAData(NULL, 0);
+        target->disableStencil();
+        target->setAlpha(0xFF);
+        target->setBlendFunc(kOne_BlendCoeff,
+                           kZero_BlendCoeff);
+        target->setFirstCoverageStage(GrDrawState::kNumStages);
+        target->setDrawFace(GrDrawState::kBoth_DrawFace);
 }
 }
 
@@ -348,7 +352,7 @@
 
         if (NULL != texture) {
             GrDrawTarget::AutoStateRestore asr(fGpu);
-            reset_target_state(fGpu->drawState());
+            reset_target_state(fGpu);
 
             fGpu->setRenderTarget(texture->asRenderTarget());
             fGpu->setTexture(0, clampEntry.texture());
@@ -597,7 +601,7 @@
 
 void GrContext::setClip(const GrClip& clip) {
     fGpu->setClip(clip);
-    fGpu->drawState()->enableState(GrDrawState::kClip_StateBit);
+    fGpu->enableState(GrDrawTarget::kClip_StateBit);
 }
 
 void GrContext::setClip(const GrIRect& rect) {
@@ -802,13 +806,14 @@
     target->enableState(GrDrawTarget::kHWAntialias_StateBit);
 #endif
 
+    GrMatrix transM;
     int left = boundRect.fLeft + tileX * record->fTileSizeX;
     int top =  boundRect.fTop  + tileY * record->fTileSizeY;
-    GrDrawState* drawState = target->drawState();
-    drawState->viewMatrix()->postTranslate(-left * GR_Scalar1,
-                                           -top * GR_Scalar1);
-    drawState->viewMatrix()->postScale(record->fScale * GR_Scalar1,
-                                       record->fScale * GR_Scalar1);
+    transM.setTranslate(-left * GR_Scalar1, -top * GR_Scalar1);
+    target->postConcatViewMatrix(transM);
+    GrMatrix scaleM;
+    scaleM.setScale(record->fScale * GR_Scalar1, record->fScale * GR_Scalar1);
+    target->postConcatViewMatrix(scaleM);
 
     int w = (tileX == record->fTileCountX-1) ? boundRect.fRight - left :
                                                record->fTileSizeX;
@@ -1322,7 +1327,7 @@
         GrDrawTarget::AutoViewMatrixRestore avmr;
         if (NULL != matrix) {
             avmr.set(target);
-            target->viewMatrix()->preConcat(*matrix);
+            target->preConcatViewMatrix(*matrix);
             target->preConcatSamplerMatrices(stageMask, *matrix);
         }
 
@@ -1346,7 +1351,7 @@
                 m.postConcat(*matrix);
             }
 
-            target->viewMatrix()->preConcat(m);
+            target->preConcatViewMatrix(m);
             target->preConcatSamplerMatrices(stageMask, m);
  
             target->drawNonIndexed(kTriangleFan_PrimitiveType, 0, 4);
@@ -1373,8 +1378,7 @@
 
 #if GR_STATIC_RECT_VB
     GrDrawTarget* target = this->prepareToDraw(paint, kUnbuffered_DrawCategory);
-    GrDrawState* drawState = target->drawState();
-
+    
     GrVertexLayout layout = PaintStageVertexLayoutBits(paint, NULL);
     GrDrawTarget::AutoViewMatrixRestore avmr(target);
 
@@ -1386,13 +1390,13 @@
     if (NULL != dstMatrix) {
         m.postConcat(*dstMatrix);
     }
-    drawState->viewMatrix()->preConcat(m);
+    target->preConcatViewMatrix(m);
 
     // srcRect refers to first stage
     int otherStageMask = paint.getActiveStageMask() & 
                          (~(1 << GrPaint::kFirstTextureStage));
     if (otherStageMask) {
-        drawState->preConcatSamplerMatrices(otherStageMask, m);
+        target->preConcatSamplerMatrices(otherStageMask, m);
     }
 
     m.setAll(srcRect.width(), 0,                srcRect.fLeft,
@@ -1401,7 +1405,7 @@
     if (NULL != srcMatrix) {
         m.postConcat(*srcMatrix);
     }
-    drawState->sampler(GrPaint::kFirstTextureStage)->preConcatMatrix(m);
+    target->preConcatSamplerMatrix(GrPaint::kFirstTextureStage, m);
 
     const GrVertexBuffer* sqVB = fGpu->getUnitSquareVertexBuffer();
     if (NULL == sqVB) {
@@ -1777,7 +1781,7 @@
         GrAssert(NULL != target);
 
         GrDrawTarget::AutoStateRestore asr(fGpu);
-        reset_target_state(fGpu->drawState());
+        reset_target_state(fGpu);
 
         fGpu->setRenderTarget(target);
 
@@ -1815,7 +1819,7 @@
     ASSERT_OWNED_RESOURCE(src);
 
     GrDrawTarget::AutoStateRestore asr(fGpu);
-    reset_target_state(fGpu->drawState());
+    reset_target_state(fGpu);
     fGpu->setRenderTarget(dst);
     GrSamplerState sampler(GrSamplerState::kClamp_WrapMode,
                            GrSamplerState::kNearest_Filter);
@@ -1885,7 +1889,7 @@
                                      config, buffer, rowBytes, flags);
 
     GrDrawTarget::AutoStateRestore  asr(fGpu);
-    reset_target_state(fGpu->drawState());
+    reset_target_state(fGpu);
 
     GrMatrix matrix;
     matrix.setTranslate(GrIntToScalar(left), GrIntToScalar(top));
@@ -1916,8 +1920,6 @@
 
 void GrContext::setPaint(const GrPaint& paint, GrDrawTarget* target) {
 
-    GrDrawState* drawState = target->drawState();
-
     for (int i = 0; i < GrPaint::kMaxTextures; ++i) {
         int s = i + GrPaint::kFirstTextureStage;
         target->setTexture(s, paint.getTexture(i));
@@ -1934,20 +1936,20 @@
         target->setSamplerState(s, paint.getMaskSampler(i));
     }
 
-    drawState->setColor(paint.fColor);
+    target->setColor(paint.fColor);
 
     if (paint.fDither) {
-        drawState->enableState(GrDrawState::kDither_StateBit);
+        target->enableState(GrDrawTarget::kDither_StateBit);
     } else {
-        drawState->disableState(GrDrawState::kDither_StateBit);
+        target->disableState(GrDrawTarget::kDither_StateBit);
     }
     if (paint.fAntiAlias) {
-        drawState->enableState(GrDrawState::kHWAntialias_StateBit);
+        target->enableState(GrDrawTarget::kHWAntialias_StateBit);
     } else {
-        drawState->disableState(GrDrawState::kHWAntialias_StateBit);
+        target->disableState(GrDrawTarget::kHWAntialias_StateBit);
     }
-    drawState->setBlendFunc(paint.fSrcBlendCoeff, paint.fDstBlendCoeff);
-    drawState->setColorFilter(paint.fColorFilterColor, paint.fColorFilterXfermode);
+    target->setBlendFunc(paint.fSrcBlendCoeff, paint.fDstBlendCoeff);
+    target->setColorFilter(paint.fColorFilterColor, paint.fColorFilterXfermode);
 
     if (paint.getActiveMaskStageMask() && !target->canApplyCoverage()) {
         GrPrintf("Partial pixel coverage will be incorrectly blended.\n");
@@ -2018,7 +2020,7 @@
 }
 
 void GrContext::concatMatrix(const GrMatrix& m) const {
-    fGpu->viewMatrix()->preConcat(m);
+    fGpu->preConcatViewMatrix(m);
 }
 
 static inline intptr_t setOrClear(intptr_t bits, int shift, intptr_t pred) {