From d92cf2ebbfbb9d737ea4a551e64ffccb08376875 Mon Sep 17 00:00:00 2001 From: "robertphillips@google.com" Date: Fri, 19 Jul 2013 18:13:02 +0000 Subject: Fix texture allocation in SWMaskHelper https://codereview.chromium.org/19789006/ git-svn-id: http://skia.googlecode.com/svn/trunk@10197 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/gpu/GrClipMaskManager.cpp | 2 +- src/gpu/GrGpu.cpp | 1 + src/gpu/GrSWMaskHelper.cpp | 17 ++--------------- src/gpu/GrSWMaskHelper.h | 3 +-- 4 files changed, 5 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp index faeac27c94..7465283c38 100644 --- a/src/gpu/GrClipMaskManager.cpp +++ b/src/gpu/GrClipMaskManager.cpp @@ -993,7 +993,7 @@ GrTexture* GrClipMaskManager::createSoftwareClipMask(int32_t clipStackGenID, } } - helper.toTexture(result, kAllIn_InitialState == initialState ? 0xFF : 0x00); + helper.toTexture(result); fCurrClipMaskType = kAlpha_ClipMaskType; return result; diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp index c4d8318ca1..9564a50f94 100644 --- a/src/gpu/GrGpu.cpp +++ b/src/gpu/GrGpu.cpp @@ -211,6 +211,7 @@ void GrGpu::clear(const SkIRect* rect, art.set(this->drawState(), renderTarget); } if (NULL == this->getDrawState().getRenderTarget()) { + GrAssert(0); return; } this->handleDirtyContext(); diff --git a/src/gpu/GrSWMaskHelper.cpp b/src/gpu/GrSWMaskHelper.cpp index 3f9251c394..eb5c555a1f 100644 --- a/src/gpu/GrSWMaskHelper.cpp +++ b/src/gpu/GrSWMaskHelper.cpp @@ -130,22 +130,9 @@ bool GrSWMaskHelper::getTexture(GrAutoScratchTexture* texture) { /** * Move the result of the software mask generation back to the gpu */ -void GrSWMaskHelper::toTexture(GrTexture *texture, uint8_t alpha) { +void GrSWMaskHelper::toTexture(GrTexture *texture) { SkAutoLockPixels alp(fBM); - // The destination texture is almost always larger than "fBM". Clear - // it appropriately so we don't get mask artifacts outside of the path's - // bounding box - - // "texture" needs to be installed as the render target for the clear - // and the texture upload but cannot remain the render target upon - // return. Callers typically use it as a texture and it would then - // be both source and dest. - GrDrawState::AutoRenderTargetRestore artr(fContext->getGpu()->drawState(), - texture->asRenderTarget()); - - fContext->getGpu()->clear(NULL, GrColorPackRGBA(alpha, alpha, alpha, alpha)); - texture->writePixels(0, 0, fBM.width(), fBM.height(), kAlpha_8_GrPixelConfig, fBM.getPixels(), fBM.rowBytes()); @@ -177,7 +164,7 @@ GrTexture* GrSWMaskHelper::DrawPathMaskToTexture(GrContext* context, return NULL; } - helper.toTexture(ast.texture(), 0x00); + helper.toTexture(ast.texture()); return ast.detach(); } diff --git a/src/gpu/GrSWMaskHelper.h b/src/gpu/GrSWMaskHelper.h index ce5ae28a04..fab5eeb4a0 100644 --- a/src/gpu/GrSWMaskHelper.h +++ b/src/gpu/GrSWMaskHelper.h @@ -63,8 +63,7 @@ public: bool getTexture(GrAutoScratchTexture* texture); // Move the mask generation results from the internal bitmap to the gpu. - // The space outside of the mask is cleared using "alpha" - void toTexture(GrTexture* texture, uint8_t alpha); + void toTexture(GrTexture* texture); // Reset the internal bitmap void clear(uint8_t alpha) { -- cgit v1.2.3