diff options
author | Greg Daniel <egdaniel@google.com> | 2018-02-07 10:21:48 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-07 15:46:02 +0000 |
commit | a4ead65e2c80b6e649f31e28e8fa116aca83fad4 (patch) | |
tree | e707b3a79ab62bf9920daf47ff2bf8fabc07d086 /src/gpu/SkGr.cpp | |
parent | 2a223358ed19f3dd25f9b127aa21f1dd138cb9f0 (diff) |
Add function to GrProxyProvider to lazily upload mip map data
Bug: skia:
Change-Id: I906207727242bed8a109bf3ca10b5a6e8e4b952e
Reviewed-on: https://skia-review.googlesource.com/104581
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/gpu/SkGr.cpp')
-rw-r--r-- | src/gpu/SkGr.cpp | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index 09ad206b50..1d210c4008 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -112,50 +112,6 @@ void GrInstallBitmapUniqueKeyInvalidator(const GrUniqueKey& key, SkPixelRef* pix pixelRef->addGenIDChangeListener(new Invalidator(key)); } -sk_sp<GrTextureProxy> GrGenerateMipMapsAndUploadToTextureProxy(GrProxyProvider* proxyProvider, - const SkBitmap& bitmap, - SkColorSpace* dstColorSpace) { - SkDestinationSurfaceColorMode colorMode = dstColorSpace - ? SkDestinationSurfaceColorMode::kGammaAndColorSpaceAware - : SkDestinationSurfaceColorMode::kLegacy; - - if (!SkImageInfoIsValid(bitmap.info(), colorMode)) { - return nullptr; - } - - SkPixmap pixmap; - if (!bitmap.peekPixels(&pixmap)) { - return nullptr; - } - - ATRACE_ANDROID_FRAMEWORK("Upload MipMap Texture [%ux%u]", pixmap.width(), pixmap.height()); - GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(pixmap.info(), *proxyProvider->caps()); - std::unique_ptr<SkMipMap> mipmaps(SkMipMap::Build(pixmap, colorMode, nullptr)); - if (!mipmaps) { - return nullptr; - } - - const int mipLevelCount = mipmaps->countLevels() + 1; - if (mipLevelCount < 1) { - return nullptr; - } - - std::unique_ptr<GrMipLevel[]> texels(new GrMipLevel[mipLevelCount]); - - texels[0].fPixels = pixmap.addr(); - texels[0].fRowBytes = pixmap.rowBytes(); - - for (int i = 1; i < mipLevelCount; ++i) { - SkMipMap::Level generatedMipLevel; - mipmaps->getLevel(i - 1, &generatedMipLevel); - texels[i].fPixels = generatedMipLevel.fPixmap.addr(); - texels[i].fRowBytes = generatedMipLevel.fPixmap.rowBytes(); - } - - return proxyProvider->createMipMapProxy(desc, SkBudgeted::kYes, texels.get(), mipLevelCount, - colorMode); -} - sk_sp<GrTextureProxy> GrCopyBaseMipMapToTextureProxy(GrContext* ctx, GrTextureProxy* baseProxy) { SkASSERT(baseProxy); |