| Index: src/core/SkImageCacherator.cpp
|
| diff --git a/src/core/SkImageCacherator.cpp b/src/core/SkImageCacherator.cpp
|
| index 572778e19ca16a02e1e99ff89415b6aff390fc19..c6efe53d48979bc20b84e9dcbd2abce2ca7a0a53 100644
|
| --- a/src/core/SkImageCacherator.cpp
|
| +++ b/src/core/SkImageCacherator.cpp
|
| @@ -240,9 +240,24 @@ static GrTexture* set_key_and_return(GrTexture* tex, const GrUniqueKey& key) {
|
| */
|
| GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key,
|
| const SkImage* client, SkImage::CachingHint chint) {
|
| + // Values representing the various texture lock paths we can take. Used for logging the path
|
| + // taken to a histogram.
|
| + enum LockTexturePath {
|
| + kPreExisting_LockTexturePath,
|
| + kNative_LockTexturePath,
|
| + kCompressed_LockTexturePath,
|
| + kYUV_LockTexturePath,
|
| + kRGBA_LockTexturePath,
|
| + kFailure_LockTexturePath,
|
| + };
|
| +
|
| + const int kLockTexturePathCount = kFailure_LockTexturePath + 1;
|
| +
|
| // 1. Check the cache for a pre-existing one
|
| if (key.isValid()) {
|
| if (GrTexture* tex = ctx->textureProvider()->findAndRefTextureByUniqueKey(key)) {
|
| + SK_HISTOGRAM_ENUMERATION("LockTexturePath", kPreExisting_LockTexturePath,
|
| + kLockTexturePathCount);
|
| return tex;
|
| }
|
| }
|
| @@ -252,6 +267,8 @@ GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key
|
| ScopedGenerator generator(this);
|
| SkIRect subset = SkIRect::MakeXYWH(fOrigin.x(), fOrigin.y(), fInfo.width(), fInfo.height());
|
| if (GrTexture* tex = generator->generateTexture(ctx, &subset)) {
|
| + SK_HISTOGRAM_ENUMERATION("LockTexturePath", kNative_LockTexturePath,
|
| + kLockTexturePathCount);
|
| return set_key_and_return(tex, key);
|
| }
|
| }
|
| @@ -263,6 +280,8 @@ GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key
|
| if (data) {
|
| GrTexture* tex = load_compressed_into_texture(ctx, data, desc);
|
| if (tex) {
|
| + SK_HISTOGRAM_ENUMERATION("LockTexturePath", kCompressed_LockTexturePath,
|
| + kLockTexturePathCount);
|
| return set_key_and_return(tex, key);
|
| }
|
| }
|
| @@ -273,6 +292,8 @@ GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key
|
| Generator_GrYUVProvider provider(generator);
|
| GrTexture* tex = provider.refAsTexture(ctx, desc, true);
|
| if (tex) {
|
| + SK_HISTOGRAM_ENUMERATION("LockTexturePath", kYUV_LockTexturePath,
|
| + kLockTexturePathCount);
|
| return set_key_and_return(tex, key);
|
| }
|
| }
|
| @@ -282,9 +303,13 @@ GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key
|
| if (this->tryLockAsBitmap(&bitmap, client, chint)) {
|
| GrTexture* tex = GrUploadBitmapToTexture(ctx, bitmap);
|
| if (tex) {
|
| + SK_HISTOGRAM_ENUMERATION("LockTexturePath", kRGBA_LockTexturePath,
|
| + kLockTexturePathCount);
|
| return set_key_and_return(tex, key);
|
| }
|
| }
|
| + SK_HISTOGRAM_ENUMERATION("LockTexturePath", kFailure_LockTexturePath,
|
| + kLockTexturePathCount);
|
| return nullptr;
|
| }
|
|
|
|
|