Remove GrDrawState::setSampler, use direct access to sampler
Review URL: http://codereview.appspot.com/5476052/
git-svn-id: http://skia.googlecode.com/svn/trunk@2852 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index a798ec9..4e0e587 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -369,9 +369,8 @@
} else {
filter = GrSamplerState::kBilinear_Filter;
}
- GrSamplerState stretchSampler(GrSamplerState::kClamp_WrapMode,
- filter);
- drawState->setSampler(0, stretchSampler);
+ drawState->sampler(0)->reset(GrSamplerState::kClamp_WrapMode,
+ filter);
static const GrVertexLayout layout =
GrDrawTarget::StageTexCoordVertexLayoutBit(0,0);
@@ -870,7 +869,6 @@
}
GrMatrix sampleM;
- GrSamplerState sampler(GrSamplerState::kClamp_WrapMode, filter);
GrTexture* src = record->fOffscreen0.texture();
int scale;
@@ -892,8 +890,9 @@
drawState->setViewMatrix(GrMatrix::I());
sampleM.setScale(scale * GR_Scalar1 / src->width(),
scale * GR_Scalar1 / src->height());
- sampler.setMatrix(sampleM);
- drawState->setSampler(kOffscreenStage, sampler);
+ GrSamplerState* sampler = drawState->sampler(kOffscreenStage);
+ sampler->reset(GrSamplerState::kClamp_WrapMode, filter);
+ sampler->setMatrix(sampleM);
GrRect rect = SkRect::MakeWH(SkIntToScalar(scale * tileRect.width()),
SkIntToScalar(scale * tileRect.height()));
target->drawSimpleRect(rect, NULL, 1 << kOffscreenStage);
@@ -929,13 +928,15 @@
GrDrawState::AutoViewMatrixRestore avmr(drawState, GrMatrix::I());
drawState->setTexture(kOffscreenStage, src);
+ GrSamplerState* sampler = drawState->sampler(kOffscreenStage);
+ sampler->reset(GrSamplerState::kClamp_WrapMode, filter);
sampleM.setScale(scale * GR_Scalar1 / src->width(),
scale * GR_Scalar1 / src->height());
- sampler.setMatrix(sampleM);
+
+ sampler->setMatrix(sampleM);
sampleM.setTranslate(SkIntToScalar(-tileRect.fLeft),
SkIntToScalar(-tileRect.fTop));
- sampler.preConcatMatrix(sampleM);
- drawState->setSampler(kOffscreenStage, sampler);
+ sampler->preConcatMatrix(sampleM);
GrRect dstRect;
int stages = (1 << kOffscreenStage) | stageMask;
@@ -1794,12 +1795,8 @@
matrix.setTranslate(SK_Scalar1 *left, SK_Scalar1 *top);
}
matrix.postIDiv(src->width(), src->height());
- GrSamplerState sampler;
- sampler.reset(GrSamplerState::kClamp_WrapMode,
- GrSamplerState::kNearest_Filter,
- matrix);
- sampler.setRAndBSwap(swapRAndB);
- drawState->setSampler(0, sampler);
+ drawState->sampler(0)->reset(matrix);
+ drawState->sampler(0)->setRAndBSwap(swapRAndB);
drawState->setTexture(0, src);
GrRect rect;
rect.setXYWH(0, 0, SK_Scalar1 * width, SK_Scalar1 * height);
@@ -1822,13 +1819,10 @@
GrDrawState* drawState = fGpu->drawState();
reset_draw_state(drawState);
drawState->setRenderTarget(dst);
- GrSamplerState sampler(GrSamplerState::kClamp_WrapMode,
- GrSamplerState::kNearest_Filter);
GrMatrix sampleM;
sampleM.setIDiv(src->width(), src->height());
- sampler.setMatrix(sampleM);
drawState->setTexture(0, src);
- drawState->setSampler(0, sampler);
+ drawState->sampler(0)->reset(sampleM);
SkRect rect = SkRect::MakeXYWH(0, 0, src->width(), src->height());
fGpu->drawSimpleRect(rect, NULL, 1 << 0);
}
@@ -1900,12 +1894,10 @@
drawState->setTexture(0, texture);
matrix.setIDiv(texture->width(), texture->height());
- GrSamplerState sampler;
- sampler.reset(GrSamplerState::kClamp_WrapMode,
- GrSamplerState::kNearest_Filter,
- matrix);
- sampler.setRAndBSwap(swapRAndB);
- drawState->setSampler(0, sampler);
+ drawState->sampler(0)->reset(GrSamplerState::kClamp_WrapMode,
+ GrSamplerState::kNearest_Filter,
+ matrix);
+ drawState->sampler(0)->setRAndBSwap(swapRAndB);
GrVertexLayout layout = GrDrawTarget::StagePosAsTexCoordVertexLayoutBit(0);
static const int VCOUNT = 4;
@@ -1927,7 +1919,7 @@
int s = i + GrPaint::kFirstTextureStage;
drawState->setTexture(s, paint.getTexture(i));
ASSERT_OWNED_RESOURCE(paint.getTexture(i));
- drawState->setSampler(s, paint.getTextureSampler(i));
+ *drawState->sampler(s) = paint.getTextureSampler(i);
}
drawState->setFirstCoverageStage(GrPaint::kFirstMaskStage);
@@ -1936,7 +1928,7 @@
int s = i + GrPaint::kFirstMaskStage;
drawState->setTexture(s, paint.getMask(i));
ASSERT_OWNED_RESOURCE(paint.getMask(i));
- drawState->setSampler(s, paint.getMaskSampler(i));
+ *drawState->sampler(s) = paint.getMaskSampler(i);
}
drawState->setColor(paint.fColor);
@@ -2146,14 +2138,16 @@
ASSERT_OWNED_RESOURCE(texture);
GrDrawTarget::AutoStateRestore asr(fGpu);
- GrMatrix sampleM;
- GrSamplerState sampler(GrSamplerState::kClamp_WrapMode,
- GrSamplerState::kConvolution_Filter);
- sampler.setConvolutionParams(kernelWidth, kernel, imageIncrement);
- sampleM.setIDiv(texture->width(), texture->height());
- sampler.setMatrix(sampleM);
GrDrawState* drawState = fGpu->drawState();
- drawState->setSampler(0, sampler);
+ GrMatrix sampleM;
+ sampleM.setIDiv(texture->width(), texture->height());
+ drawState->sampler(0)->reset(GrSamplerState::kClamp_WrapMode,
+ GrSamplerState::kConvolution_Filter,
+ sampleM);
+ drawState->sampler(0)->setConvolutionParams(kernelWidth,
+ kernel,
+ imageIncrement);
+
drawState->setViewMatrix(GrMatrix::I());
drawState->setTexture(0, texture);
drawState->setAlpha(0xFF);