diff options
author | Robert Phillips <robertphillips@google.com> | 2017-04-05 18:56:21 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-05 18:56:33 +0000 |
commit | 1b35256f1166358056b2aad8ce09caa6f07912d5 (patch) | |
tree | 9d9bcd6bffc6126d656efefee15bb376dab81d42 /src/gpu/GrTextureContext.cpp | |
parent | 1987366b3c0a9dd9280620e62e0edb7d5087a828 (diff) |
Revert "Rm readPixels from GrSurface & move read/writeSurfacePixels to GrContextPriv (take 2)"
This reverts commit aaee31f18c0845417103d84285e365575def3c40.
Reason for revert: possible valgrind leak
Original change's description:
> 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>
>
TBR=bsalomon@google.com,robertphillips@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: Ia0b92bf6402cb5f9607310d356f43bff2e3e75eb
Reviewed-on: https://skia-review.googlesource.com/11361
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrTextureContext.cpp')
-rw-r--r-- | src/gpu/GrTextureContext.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/gpu/GrTextureContext.cpp b/src/gpu/GrTextureContext.cpp index f946290795..00cc97cf53 100644 --- a/src/gpu/GrTextureContext.cpp +++ b/src/gpu/GrTextureContext.cpp @@ -120,14 +120,17 @@ bool GrTextureContext::onReadPixels(const SkImageInfo& dstInfo, void* dstBuffer, // TODO: this seems to duplicate code in SkImage_Gpu::onReadPixels if (kUnpremul_SkAlphaType == dstInfo.alphaType()) { - flags |= GrContextPriv::kUnpremul_PixelOpsFlag; + flags |= GrContext::kUnpremul_PixelOpsFlag; } - return fContext->contextPriv().readSurfacePixels(fTextureProxy.get(), this->getColorSpace(), - x, y, dstInfo.width(), dstInfo.height(), - config, - dstInfo.colorSpace(), dstBuffer, dstRowBytes, - flags); + // 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); } // TODO: move this (and GrRenderTargetContext::onReadPixels) to GrSurfaceContext? @@ -140,12 +143,15 @@ bool GrTextureContext::onWritePixels(const SkImageInfo& srcInfo, const void* src return false; } if (kUnpremul_SkAlphaType == srcInfo.alphaType()) { - flags |= GrContextPriv::kUnpremul_PixelOpsFlag; + 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; } - return fContext->contextPriv().writeSurfacePixels(fTextureProxy.get(), this->getColorSpace(), - x, y, srcInfo.width(), srcInfo.height(), - config, - srcInfo.colorSpace(), srcBuffer, srcRowBytes, - flags); + return tex->writePixels(this->getColorSpace(), x, y, srcInfo.width(), srcInfo.height(), + config, srcInfo.colorSpace(), srcBuffer, srcRowBytes, flags); } |