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