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:
parent
05b7bef01d
commit
d92cf2ebbf
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user