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) {