Update GrSurfaceProxy::Copy to return a view.
Additionally this changes updates GrRenderTargetContext drawTexture to take
a view. This was done since there were a bunch of places where the result
of the copy goes straight to the drawTexture call.
Bug: skia:9556
Change-Id: If7094eb51ed343620011d03b86d603e3c6289c17
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/267856
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/image/SkImage_GpuBase.cpp b/src/image/SkImage_GpuBase.cpp
index 6a21b93..61a8fd0 100644
--- a/src/image/SkImage_GpuBase.cpp
+++ b/src/image/SkImage_GpuBase.cpp
@@ -142,26 +142,22 @@
return nullptr;
}
- sk_sp<GrSurfaceProxy> proxy = this->asTextureProxyRef(context);
+ const GrSurfaceProxyView& view = this->getSurfaceProxyView(context);
+ SkASSERT(view.proxy());
GrColorType grColorType = SkColorTypeToGrColorType(this->colorType());
- sk_sp<GrTextureProxy> copyProxy =
- GrSurfaceProxy::Copy(context, proxy.get(), grColorType, GrMipMapped::kNo, subset,
- SkBackingFit::kExact, proxy->isBudgeted());
+ GrSurfaceProxyView copyView =
+ GrSurfaceProxy::Copy(context, view.proxy(), view.origin(), grColorType,
+ GrMipMapped::kNo, subset, SkBackingFit::kExact,
+ view.proxy()->isBudgeted());
- if (!copyProxy) {
+ if (!copyView.proxy()) {
return nullptr;
}
- const GrSurfaceProxyView& currView = this->getSurfaceProxyView(context);
- if (!currView.proxy()) {
- return nullptr;
- }
-
- GrSurfaceProxyView view(std::move(copyProxy), currView.origin(), currView.swizzle());
// MDB: this call is okay bc we know 'sContext' was kExact
- return sk_make_sp<SkImage_Gpu>(fContext, kNeedNewImageUniqueID, std::move(view),
+ return sk_make_sp<SkImage_Gpu>(fContext, kNeedNewImageUniqueID, std::move(copyView),
this->colorType(), this->alphaType(), this->refColorSpace());
}