Views for all draw texture calls in SkGpuDevice and RenderTargetContext.
Bug: skia:9556
Change-Id: Ibb0e0cff3301554e988d5900455766b6428484ee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/269360
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/SkGpuDevice_drawTexture.cpp b/src/gpu/SkGpuDevice_drawTexture.cpp
index 4eb9e3e..edd3469 100644
--- a/src/gpu/SkGpuDevice_drawTexture.cpp
+++ b/src/gpu/SkGpuDevice_drawTexture.cpp
@@ -174,7 +174,7 @@
static void draw_texture(GrRenderTargetContext* rtc, const GrClip& clip, const SkMatrix& ctm,
const SkPaint& paint, const SkRect& srcRect, const SkRect& dstRect,
const SkPoint dstClip[4], GrAA aa, GrQuadAAFlags aaFlags,
- SkCanvas::SrcRectConstraint constraint, sk_sp<GrTextureProxy> proxy,
+ SkCanvas::SrcRectConstraint constraint, GrSurfaceProxyView view,
const GrColorInfo& srcColorInfo) {
const GrColorInfo& dstInfo(rtc->colorInfo());
auto textureXform =
@@ -192,7 +192,7 @@
case kHigh_SkFilterQuality:
SK_ABORT("Quality level not allowed.");
}
-
+ GrSurfaceProxy* proxy = view.proxy();
// Must specify the strict constraint when the proxy is not functionally exact and the src
// rect would access pixels outside the proxy's content area without the constraint.
if (constraint != SkCanvas::kStrict_SrcRectConstraint && !proxy->isFunctionallyExact()) {
@@ -219,15 +219,12 @@
SkPoint srcQuad[4];
GrMapRectPoints(dstRect, srcRect, dstClip, srcQuad, 4);
- rtc->drawTextureQuad(clip, std::move(proxy), srcColorInfo.colorType(),
+ rtc->drawTextureQuad(clip, std::move(view), srcColorInfo.colorType(),
srcColorInfo.alphaType(), filter, paint.getBlendMode(), color, srcQuad,
dstClip, aa, aaFlags,
constraint == SkCanvas::kStrict_SrcRectConstraint ? &srcRect : nullptr,
ctm, std::move(textureXform));
} else {
- GrSurfaceOrigin origin = proxy->origin();
- GrSwizzle swizzle = proxy->textureSwizzle();
- GrSurfaceProxyView view(std::move(proxy), origin, swizzle);
rtc->drawTexture(clip, std::move(view), srcColorInfo.alphaType(), filter,
paint.getBlendMode(), color, srcRect, dstRect, aa, aaFlags, constraint,
ctm, std::move(textureXform));
@@ -250,7 +247,7 @@
}
draw_texture(rtc, clip, ctm, paint, src, dst, dstClip, aa, aaFlags, constraint,
- view.asTextureProxyRef(),
+ std::move(view),
{ct, producer->alphaType(), sk_ref_sp(producer->colorSpace())});
return;
}
@@ -417,7 +414,7 @@
if (attemptDrawTexture && can_use_draw_texture(paint)) {
draw_texture(fRenderTargetContext.get(), this->clip(), ctm, paint, src, dst, dstClip,
- aa, aaFlags, constraint, view.asTextureProxyRef(), colorInfo);
+ aa, aaFlags, constraint, std::move(view), colorInfo);
return;
}
GrTextureAdjuster adjuster(fContext.get(), std::move(view), colorInfo, pinnedUniqueID,