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
This commit is contained in:
robertphillips@google.com 2013-07-19 18:13:02 +00:00
parent 05b7bef01d
commit d92cf2ebbf
4 changed files with 5 additions and 18 deletions

View File

@ -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;

View File

@ -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();

View File

@ -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();
}

View File

@ -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) {