| Index: src/gpu/SkGr.cpp
|
| diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
|
| index 2d96ebcf23844e420fcd63d73c9ecf4dd339caa0..5f162cad9aaf62dd57378c352067edd75b54f55a 100644
|
| --- a/src/gpu/SkGr.cpp
|
| +++ b/src/gpu/SkGr.cpp
|
| @@ -245,9 +245,9 @@ GrTexture* stretch_texture_to_next_pot(GrTexture* inputTexture, Stretch stretch,
|
| SkRect rect = SkRect::MakeWH(SkIntToScalar(rtDesc.fWidth), SkIntToScalar(rtDesc.fHeight));
|
| SkRect localRect = SkRect::MakeWH(1.f, 1.f);
|
|
|
| - GrContext::AutoRenderTarget autoRT(context, stretched->asRenderTarget());
|
| GrContext::AutoClip ac(context, GrContext::AutoClip::kWideOpen_InitialClip);
|
| - context->drawNonAARectToRect(paint, SkMatrix::I(), rect, localRect);
|
| + context->drawNonAARectToRect(stretched->asRenderTarget(), paint, SkMatrix::I(), rect,
|
| + localRect);
|
|
|
| return stretched;
|
| }
|
| @@ -396,9 +396,8 @@ static GrTexture* load_yuv_texture(GrContext* ctx, const GrContentKey& optionalK
|
| paint.addColorProcessor(yuvToRgbProcessor);
|
| SkRect r = SkRect::MakeWH(SkIntToScalar(yuvInfo.fSize[0].fWidth),
|
| SkIntToScalar(yuvInfo.fSize[0].fHeight));
|
| - GrContext::AutoRenderTarget autoRT(ctx, renderTarget);
|
| GrContext::AutoClip ac(ctx, GrContext::AutoClip::kWideOpen_InitialClip);
|
| - ctx->drawRect(paint, SkMatrix::I(), r);
|
| + ctx->drawRect(renderTarget, paint, SkMatrix::I(), r);
|
|
|
| return result;
|
| }
|
| @@ -640,8 +639,8 @@ bool GrPixelConfig2ColorAndProfileType(GrPixelConfig config, SkColorType* ctOut,
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -void SkPaint2GrPaintNoShader(GrContext* context, const SkPaint& skPaint, GrColor paintColor,
|
| - bool constantColor, GrPaint* grPaint) {
|
| +void SkPaint2GrPaintNoShader(GrContext* context, GrRenderTarget* rt, const SkPaint& skPaint,
|
| + GrColor paintColor, bool constantColor, GrPaint* grPaint) {
|
|
|
| grPaint->setDither(skPaint.isDither());
|
| grPaint->setAntiAlias(skPaint.isAntiAlias());
|
| @@ -678,13 +677,12 @@ void SkPaint2GrPaintNoShader(GrContext* context, const SkPaint& skPaint, GrColor
|
| // supports it. If not, then install a dither effect.
|
| if (skPaint.isDither() && grPaint->numColorStages() > 0) {
|
| // What are we rendering into?
|
| - const GrRenderTarget *target = context->getRenderTarget();
|
| - SkASSERT(target);
|
| + SkASSERT(rt);
|
|
|
| // Suspect the dithering flag has no effect on these configs, otherwise
|
| // fall back on setting the appropriate state.
|
| - if (target->config() == kRGBA_8888_GrPixelConfig ||
|
| - target->config() == kBGRA_8888_GrPixelConfig) {
|
| + if (GrPixelConfigIs8888(rt->config()) ||
|
| + GrPixelConfigIs8888(rt->config())) {
|
| // The dither flag is set and the target is likely
|
| // not going to be dithered by the GPU.
|
| SkAutoTUnref<GrFragmentProcessor> fp(GrDitherEffect::Create());
|
| @@ -697,11 +695,11 @@ void SkPaint2GrPaintNoShader(GrContext* context, const SkPaint& skPaint, GrColor
|
| #endif
|
| }
|
|
|
| -void SkPaint2GrPaintShader(GrContext* context, const SkPaint& skPaint, const SkMatrix& viewM,
|
| - bool constantColor, GrPaint* grPaint) {
|
| +void SkPaint2GrPaintShader(GrContext* context, GrRenderTarget* rt, const SkPaint& skPaint,
|
| + const SkMatrix& viewM, bool constantColor, GrPaint* grPaint) {
|
| SkShader* shader = skPaint.getShader();
|
| if (NULL == shader) {
|
| - SkPaint2GrPaintNoShader(context, skPaint, SkColor2GrColor(skPaint.getColor()),
|
| + SkPaint2GrPaintNoShader(context, rt, skPaint, SkColor2GrColor(skPaint.getColor()),
|
| constantColor, grPaint);
|
| return;
|
| }
|
| @@ -712,9 +710,6 @@ void SkPaint2GrPaintShader(GrContext* context, const SkPaint& skPaint, const SkM
|
| // asFragmentProcessor(). Since these calls get passed back to the client, we don't really
|
| // want them messing around with the context.
|
| {
|
| - // SkShader::asFragmentProcessor() may do offscreen rendering. Save off the current RT,
|
| - // and clip
|
| - GrContext::AutoRenderTarget art(context, NULL);
|
| GrContext::AutoClip ac(context, GrContext::AutoClip::kWideOpen_InitialClip);
|
|
|
| // Allow the shader to modify paintColor and also create an effect to be installed as
|
| @@ -728,5 +723,5 @@ void SkPaint2GrPaintShader(GrContext* context, const SkPaint& skPaint, const SkM
|
|
|
| // The grcolor is automatically set when calling asFragmentProcessor.
|
| // If the shader can be seen as an effect it returns true and adds its effect to the grpaint.
|
| - SkPaint2GrPaintNoShader(context, skPaint, paintColor, constantColor, grPaint);
|
| + SkPaint2GrPaintNoShader(context, rt, skPaint, paintColor, constantColor, grPaint);
|
| }
|
|
|