SkGpuDevice: Delay locking bitmap pixels until we have a known texture cache miss.

Reivew URL: https://codereview.chromium.org/15035004/



git-svn-id: http://skia.googlecode.com/svn/trunk@9043 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
bsalomon@google.com 2013-05-07 19:17:02 +00:00
parent a5e55925ea
commit 7df1bb76d3
2 changed files with 5 additions and 7 deletions

View File

@ -1367,12 +1367,6 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap,
SkASSERT(bitmap.width() <= fContext->getMaxTextureSize() &&
bitmap.height() <= fContext->getMaxTextureSize());
SkAutoLockPixels alp(bitmap, !bitmap.getTexture());
if (!bitmap.getTexture() && !bitmap.readyToDraw()) {
SkDebugf("nothing to draw\n");
return;
}
GrTexture* texture;
SkAutoCachedTexture act(this, bitmap, &params, &texture);
if (NULL == texture) {

View File

@ -24,7 +24,7 @@
static void build_compressed_data(void* buffer, const SkBitmap& bitmap) {
SkASSERT(SkBitmap::kIndex8_Config == bitmap.config());
SkAutoLockPixels apl(bitmap);
SkAutoLockPixels alp(bitmap);
if (!bitmap.readyToDraw()) {
SkDEBUGFAIL("bitmap not ready to draw!");
return;
@ -135,6 +135,10 @@ static GrTexture* sk_gr_create_bitmap_texture(GrContext* ctx,
}
}
SkAutoLockPixels alp(*bitmap);
if (!bitmap->readyToDraw()) {
return NULL;
}
if (cache) {
// This texture is likely to be used again so leave it in the cache
GrCacheID cacheID;