Simplify code in GrResourceProvider now that GrSurfaceContext writePixels takes GrColorType
Change-Id: I3e4cd49d59d38b8c278b7667ad3968b116b58ad6
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227260
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrResourceProvider.cpp b/src/gpu/GrResourceProvider.cpp
index db9ead2..9caaf57 100644
--- a/src/gpu/GrResourceProvider.cpp
+++ b/src/gpu/GrResourceProvider.cpp
@@ -144,36 +144,30 @@
return nullptr;
}
- SkColorType colorType;
- if (GrPixelConfigToColorType(desc.fConfig, &colorType)) {
- sk_sp<GrTexture> tex = (SkBackingFit::kApprox == fit)
- ? this->createApproxTexture(desc, flags)
- : this->createTexture(desc, budgeted, flags);
- if (!tex) {
- return nullptr;
- }
-
- sk_sp<GrTextureProxy> proxy = proxyProvider->createWrapped(std::move(tex),
- kTopLeft_GrSurfaceOrigin);
- if (!proxy) {
- return nullptr;
- }
- // Here we don't really know the alpha type of the data we want to upload. All we really
- // care about is that it is not converted. So we use the same alpha type of the data
- // and the surface context.
- static constexpr auto kAlphaType = kPremul_SkAlphaType;
- auto srcInfo = SkImageInfo::Make(desc.fWidth, desc.fHeight, colorType, kAlphaType);
- sk_sp<GrSurfaceContext> sContext = context->priv().makeWrappedSurfaceContext(
- std::move(proxy), SkColorTypeToGrColorType(colorType), kAlphaType);
- if (!sContext) {
- return nullptr;
- }
- SkAssertResult(
- sContext->writePixels(srcInfo, tmpLevel.fPixels, tmpLevel.fRowBytes, {0, 0}));
- return sk_ref_sp(sContext->asTextureProxy()->peekTexture());
- } else {
- return fGpu->createTexture(desc, budgeted, &tmpLevel, 1);
+ GrColorType colorType = GrPixelConfigToColorType(desc.fConfig);
+ sk_sp<GrTexture> tex = (SkBackingFit::kApprox == fit)
+ ? this->createApproxTexture(desc, flags)
+ : this->createTexture(desc, budgeted, flags);
+ if (!tex) {
+ return nullptr;
}
+
+ sk_sp<GrTextureProxy> proxy = proxyProvider->createWrapped(tex, kTopLeft_GrSurfaceOrigin);
+ if (!proxy) {
+ return nullptr;
+ }
+ // Here we don't really know the alpha type of the data we want to upload. All we really
+ // care about is that it is not converted. So we use the same alpha type for the data
+ // and the surface context.
+ static constexpr auto kAlphaType = kPremul_SkAlphaType;
+ sk_sp<GrSurfaceContext> sContext =
+ context->priv().makeWrappedSurfaceContext(std::move(proxy), colorType, kAlphaType);
+ if (!sContext) {
+ return nullptr;
+ }
+ GrPixelInfo srcInfo(colorType, kAlphaType, nullptr, desc.fWidth, desc.fHeight);
+ SkAssertResult(sContext->writePixels(srcInfo, tmpLevel.fPixels, tmpLevel.fRowBytes, {0, 0}));
+ return tex;
}
sk_sp<GrTexture> GrResourceProvider::createCompressedTexture(int width, int height,