aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image/SkImage_Gpu.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-03-14 15:51:58 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-15 12:22:16 +0000
commit057627f6f16a8c2854f86f7409fd1ed5095fd968 (patch)
tree371e1d6fc543cefacebea0be4d156acf37537ff2 /src/image/SkImage_Gpu.cpp
parent7e6dafdfedf564c0813afffb7ee973f9fddb061d (diff)
Make sure we set correct GrPixelConfig in promise images
Land just the Promise image fixes from, https://skia-review.googlesource.com/c/skia/+/114261 Bug: skia: Change-Id: I917cf2c1f5c6e51f9d7f1d3ec4526db551e89d84 Reviewed-on: https://skia-review.googlesource.com/114472 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/image/SkImage_Gpu.cpp')
-rw-r--r--src/image/SkImage_Gpu.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index 38f38c91ed..ef8f39c669 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -594,7 +594,7 @@ public:
this->resetReleaseHelper();
}
- sk_sp<GrTexture> getTexture(GrResourceProvider* resourceProvider) {
+ sk_sp<GrTexture> getTexture(GrResourceProvider* resourceProvider, GrPixelConfig config) {
// Releases the promise helper if there are no outstanding hard refs. This means that we
// don't have any ReleaseProcs waiting to be called so we will need to do a fulfill.
if (fReleaseHelper && fReleaseHelper->weak_expired()) {
@@ -604,6 +604,7 @@ public:
sk_sp<GrTexture> tex;
if (!fReleaseHelper) {
fFulfillProc(fContext, &fBackendTex);
+ fBackendTex.fConfig = config;
if (!fBackendTex.isValid()) {
// Even though the GrBackendTexture is not valid, we must call the release
// proc to keep our contract of always calling Fulfill and Release in pairs.
@@ -705,13 +706,13 @@ sk_sp<SkImage> SkImage_Gpu::MakePromiseTexture(GrContext* context,
PromiseImageHelper promiseHelper(textureFulfillProc, textureReleaseProc, textureContext);
sk_sp<GrTextureProxy> proxy = proxyProvider->createLazyProxy(
- [promiseHelper] (GrResourceProvider* resourceProvider) mutable {
+ [promiseHelper, config] (GrResourceProvider* resourceProvider) mutable {
if (!resourceProvider) {
promiseHelper.reset();
return sk_sp<GrTexture>();
}
- return promiseHelper.getTexture(resourceProvider);
+ return promiseHelper.getTexture(resourceProvider, config);
}, desc, origin, mipMapped, GrRenderTargetFlags::kNone, SkBackingFit::kExact,
SkBudgeted::kNo, GrSurfaceProxy::LazyInstantiationType::kUninstantiate);