Make GrTextureCache into a generic GrResource cache. Also some GrContext texture interface cleanup.
http://codereview.appspot.com/4815055/
git-svn-id: http://skia.googlecode.com/svn/trunk@1965 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 4f1e6fd..49b17e7 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -63,13 +63,15 @@
////////////////////////////////////////////////////////////////////////////////
-GrTextureEntry* sk_gr_create_bitmap_texture(GrContext* ctx,
- GrTextureKey* key,
- const GrSamplerState& sampler,
- const SkBitmap& origBitmap) {
+GrContext::TextureCacheEntry sk_gr_create_bitmap_texture(GrContext* ctx,
+ GrContext::TextureKey key,
+ const GrSamplerState& sampler,
+ const SkBitmap& origBitmap) {
SkAutoLockPixels alp(origBitmap);
+ GrContext::TextureCacheEntry entry;
+
if (!origBitmap.readyToDraw()) {
- return NULL;
+ return entry;
}
SkBitmap tmpBitmap;
@@ -98,12 +100,13 @@
// our compressed data will be trimmed, so pass width() for its
// "rowBytes", since they are the same now.
- if (NULL != key) {
+ if (gUNCACHED_KEY != key) {
return ctx->createAndLockTexture(key, sampler, desc, storage.get(),
bitmap->width());
} else {
- GrTextureEntry* entry = ctx->lockKeylessTexture(desc);
- entry->texture()->uploadTextureData(0, 0, bitmap->width(),
+ entry = ctx->lockScratchTexture(desc,
+ GrContext::kExact_ScratchTexMatch);
+ entry.texture()->uploadTextureData(0, 0, bitmap->width(),
bitmap->height(), storage.get(), 0);
return entry;
}
@@ -116,12 +119,14 @@
}
desc.fFormat = SkGr::Bitmap2PixelConfig(*bitmap);
- if (NULL != key) {
- return ctx->createAndLockTexture(key, sampler, desc,
- bitmap->getPixels(), bitmap->rowBytes());
+ if (gUNCACHED_KEY != key) {
+ return ctx->createAndLockTexture(key, sampler, desc,
+ bitmap->getPixels(),
+ bitmap->rowBytes());
} else {
- GrTextureEntry* entry = ctx->lockKeylessTexture(desc);
- entry->texture()->uploadTextureData(0, 0, bitmap->width(),
+ entry = ctx->lockScratchTexture(desc,
+ GrContext::kExact_ScratchTexMatch);
+ entry.texture()->uploadTextureData(0, 0, bitmap->width(),
bitmap->height(), bitmap->getPixels(), bitmap->rowBytes());
return entry;
}