diff options
author | Greg Daniel <egdaniel@google.com> | 2018-03-14 15:51:58 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-03-15 12:22:16 +0000 |
commit | 057627f6f16a8c2854f86f7409fd1ed5095fd968 (patch) | |
tree | 371e1d6fc543cefacebea0be4d156acf37537ff2 | |
parent | 7e6dafdfedf564c0813afffb7ee973f9fddb061d (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>
-rw-r--r-- | include/gpu/GrBackendSurface.h | 1 | ||||
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/include/gpu/GrBackendSurface.h b/include/gpu/GrBackendSurface.h index 0145dc44c0..76714eca0f 100644 --- a/include/gpu/GrBackendSurface.h +++ b/include/gpu/GrBackendSurface.h @@ -149,6 +149,7 @@ private: friend class GrGpu; friend class GrGLGpu; friend class GrVkGpu; + friend class PromiseImageHelper; GrPixelConfig config() const { return fConfig; } int fWidth; //<! width in pixels 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); |