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:
parent
a5e55925ea
commit
7df1bb76d3
@ -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, ¶ms, &texture);
|
||||
if (NULL == texture) {
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user