aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrTextureContext.cpp
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-04-05 12:18:58 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-05 17:00:10 +0000
commitaaee31f18c0845417103d84285e365575def3c40 (patch)
tree9d0cea264cacdf51f64919ffc8f2b2d5dc83e961 /src/gpu/GrTextureContext.cpp
parentbabb101291784b844a99b20b5164b271758f6d33 (diff)
Rm readPixels from GrSurface & move read/writeSurfacePixels to GrContextPriv (take 2)
This is in service of: https://skia-review.googlesource.com/c/11125/ (Add parallel proxyID to StencilOps & RenderTargetOpList) where I want a better choke point for texture creation to improve discard handling. This is a reland of: https://skia-review.googlesource.com/c/11200/ (Rm readPixels from GrSurface & move read/writeSurfacePixels to GrContextPriv) Change-Id: Icd0a90d2beb483dc24ed87c3bace9c817019e148 Reviewed-on: https://skia-review.googlesource.com/11326 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrTextureContext.cpp')
-rw-r--r--src/gpu/GrTextureContext.cpp30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/gpu/GrTextureContext.cpp b/src/gpu/GrTextureContext.cpp
index 00cc97cf53..f946290795 100644
--- a/src/gpu/GrTextureContext.cpp
+++ b/src/gpu/GrTextureContext.cpp
@@ -120,17 +120,14 @@ bool GrTextureContext::onReadPixels(const SkImageInfo& dstInfo, void* dstBuffer,
// TODO: this seems to duplicate code in SkImage_Gpu::onReadPixels
if (kUnpremul_SkAlphaType == dstInfo.alphaType()) {
- flags |= GrContext::kUnpremul_PixelOpsFlag;
+ flags |= GrContextPriv::kUnpremul_PixelOpsFlag;
}
- // Deferral of the VRAM resources must end in this instance anyway
- sk_sp<GrTexture> tex(sk_ref_sp(fTextureProxy->instantiate(fContext->resourceProvider())));
- if (!tex) {
- return false;
- }
-
- return tex->readPixels(this->getColorSpace(), x, y, dstInfo.width(), dstInfo.height(),
- config, dstInfo.colorSpace(), dstBuffer, dstRowBytes, flags);
+ return fContext->contextPriv().readSurfacePixels(fTextureProxy.get(), this->getColorSpace(),
+ x, y, dstInfo.width(), dstInfo.height(),
+ config,
+ dstInfo.colorSpace(), dstBuffer, dstRowBytes,
+ flags);
}
// TODO: move this (and GrRenderTargetContext::onReadPixels) to GrSurfaceContext?
@@ -143,15 +140,12 @@ bool GrTextureContext::onWritePixels(const SkImageInfo& srcInfo, const void* src
return false;
}
if (kUnpremul_SkAlphaType == srcInfo.alphaType()) {
- flags |= GrContext::kUnpremul_PixelOpsFlag;
- }
-
- // Deferral of the VRAM resources must end in this instance anyway
- sk_sp<GrTexture> tex(sk_ref_sp(fTextureProxy->instantiate(fContext->resourceProvider())));
- if (!tex) {
- return false;
+ flags |= GrContextPriv::kUnpremul_PixelOpsFlag;
}
- return tex->writePixels(this->getColorSpace(), x, y, srcInfo.width(), srcInfo.height(),
- config, srcInfo.colorSpace(), srcBuffer, srcRowBytes, flags);
+ return fContext->contextPriv().writeSurfacePixels(fTextureProxy.get(), this->getColorSpace(),
+ x, y, srcInfo.width(), srcInfo.height(),
+ config,
+ srcInfo.colorSpace(), srcBuffer, srcRowBytes,
+ flags);
}