Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1469)

Unified Diff: src/gpu/GrDrawState.cpp

Issue 15780002: Replace GrDrawState::AutoDeviceCoordDraw with GrDrawState::AutoViewMatrixRestore::setIdentity(). s (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: undo unrelated change Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrDrawState.cpp
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp
index a3850b087e7abcabbdcc45ce65c07124a29bc3c2..ae4e675ab80b1c20dbe25449d097a940b32868f0 100644
--- a/src/gpu/GrDrawState.cpp
+++ b/src/gpu/GrDrawState.cpp
@@ -399,10 +399,10 @@ void GrDrawState::AutoViewMatrixRestore::set(GrDrawState* drawState,
const SkMatrix& preconcatMatrix) {
this->restore();
robertphillips 2013/05/22 23:47:01 is it right to abort if preconcatMatrix is I? Coul
bsalomon 2013/05/23 12:52:02 Good point! I'll audit the current callers. If non
- fDrawState = drawState;
- if (NULL == drawState) {
+ if (NULL == drawState || preconcatMatrix.isIdentity()) {
return;
}
+ fDrawState = drawState;
fRestoreMask = 0;
fViewMatrix = drawState->getViewMatrix();
@@ -416,50 +416,35 @@ void GrDrawState::AutoViewMatrixRestore::set(GrDrawState* drawState,
}
}
-////////////////////////////////////////////////////////////////////////////////
-
-void GrDrawState::AutoDeviceCoordDraw::restore() {
- if (NULL != fDrawState) {
- fDrawState->setViewMatrix(fViewMatrix);
- for (int s = 0; s < GrDrawState::kNumStages; ++s) {
- if (fRestoreMask & (1 << s)) {
- fDrawState->fStages[s].restoreCoordChange(fSavedCoordChanges[s]);
- }
- }
- }
- fDrawState = NULL;
-}
-
-bool GrDrawState::AutoDeviceCoordDraw::set(GrDrawState* drawState) {
- GrAssert(NULL != drawState);
-
+bool GrDrawState::AutoViewMatrixRestore::setIdentity(GrDrawState* drawState) {
this->restore();
- fDrawState = drawState;
- if (NULL == fDrawState) {
+ if (NULL == drawState) {
return false;
}
- fViewMatrix = drawState->getViewMatrix();
+ if (drawState->getViewMatrix().isIdentity()) {
+ return true;
+ }
+
fRestoreMask = 0;
+ fViewMatrix = drawState->getViewMatrix();
SkMatrix invVM;
bool inverted = false;
-
for (int s = 0; s < GrDrawState::kNumStages; ++s) {
if (drawState->isStageEnabled(s)) {
if (!inverted && !fViewMatrix.invert(&invVM)) {
// sad trombone sound
- fDrawState = NULL;
return false;
} else {
inverted = true;
}
fRestoreMask |= (1 << s);
- GrEffectStage* stage = drawState->fStages + s;
- stage->saveCoordChange(&fSavedCoordChanges[s]);
- stage->localCoordChange(invVM);
+ drawState->fStages[s].saveCoordChange(&fSavedCoordChanges[s]);
+ drawState->fStages[s].localCoordChange(invVM);
}
}
drawState->viewMatrix()->reset();
+ fDrawState = drawState;
return true;
}

Powered by Google App Engine
This is Rietveld 408576698