Make fewer copies when using GrDrawTarget::AutoStateRestore
Review URL: http://codereview.appspot.com/5938043/
git-svn-id: http://skia.googlecode.com/svn/trunk@3557 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index ca4df24..4ef0f5b 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -268,10 +268,9 @@
GrAssert(filter == GrSamplerState::kErode_Filter ||
filter == GrSamplerState::kDilate_Filter);
- GrDrawTarget::AutoStateRestore asr(gpu);
+ GrRenderTarget* target = gpu->drawState()->getRenderTarget();
+ GrDrawTarget::AutoStateRestore asr(gpu, GrDrawTarget::kReset_ASRInit);
GrDrawState* drawState = gpu->drawState();
- GrRenderTarget* target = drawState->getRenderTarget();
- drawState->reset();
drawState->setRenderTarget(target);
GrMatrix sampleM;
sampleM.setIDiv(texture->width(), texture->height());
@@ -289,10 +288,9 @@
const float* kernel,
int kernelWidth,
GrSamplerState::FilterDirection direction) {
- GrDrawTarget::AutoStateRestore asr(gpu);
+ GrRenderTarget* target = gpu->drawState()->getRenderTarget();
+ GrDrawTarget::AutoStateRestore asr(gpu, GrDrawTarget::kReset_ASRInit);
GrDrawState* drawState = gpu->drawState();
- GrRenderTarget* target = drawState->getRenderTarget();
- drawState->reset();
drawState->setRenderTarget(target);
GrMatrix sampleM;
sampleM.setIDiv(texture->width(), texture->height());
@@ -428,9 +426,9 @@
GrTexture* texture = fGpu->createTexture(rtDesc, NULL, 0);
if (NULL != texture) {
- GrDrawTarget::AutoStateRestore asr(fGpu);
+ GrDrawTarget::AutoStateRestore asr(fGpu,
+ GrDrawTarget::kReset_ASRInit);
GrDrawState* drawState = fGpu->drawState();
- drawState->reset();
drawState->setRenderTarget(texture->asRenderTarget());
drawState->setTexture(0, clampEntry.texture());
@@ -1729,9 +1727,9 @@
target = texture->asRenderTarget();
GrAssert(NULL != target);
- GrDrawTarget::AutoStateRestore asr(fGpu);
+ GrDrawTarget::AutoStateRestore asr(fGpu,
+ GrDrawTarget::kReset_ASRInit);
GrDrawState* drawState = fGpu->drawState();
- drawState->reset();
drawState->setRenderTarget(target);
GrMatrix matrix;
@@ -1773,9 +1771,8 @@
}
ASSERT_OWNED_RESOURCE(src);
- GrDrawTarget::AutoStateRestore asr(fGpu);
+ GrDrawTarget::AutoStateRestore asr(fGpu, GrDrawTarget::kReset_ASRInit);
GrDrawState* drawState = fGpu->drawState();
- drawState->reset();
drawState->setRenderTarget(dst);
GrMatrix sampleM;
sampleM.setIDiv(src->width(), src->height());
@@ -1798,7 +1795,7 @@
ASSERT_OWNED_RESOURCE(target);
if (NULL == target) {
- target = fGpu->drawState()->getRenderTarget();
+ target = fDrawState->getRenderTarget();
if (NULL == target) {
return;
}
@@ -1865,9 +1862,8 @@
this->internalWriteTexturePixels(texture, 0, 0, width, height,
config, buffer, rowBytes, flags);
- GrDrawTarget::AutoStateRestore asr(fGpu);
+ GrDrawTarget::AutoStateRestore asr(fGpu, GrDrawTarget::kReset_ASRInit);
GrDrawState* drawState = fGpu->drawState();
- drawState->reset();
GrMatrix matrix;
matrix.setTranslate(GrIntToScalar(left), GrIntToScalar(top));