Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(773)

Unified Diff: src/gpu/SkGrPixelRef.cpp

Issue 607993002: Change GrContext::copyTexture to go through GrDrawTarget (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: response to feedback Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/gpu/GrContext.cpp ('K') | « src/gpu/GrContext.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/SkGrPixelRef.cpp
diff --git a/src/gpu/SkGrPixelRef.cpp b/src/gpu/SkGrPixelRef.cpp
index 8b68448e41bf0216195d2497cfe5042ec659cccf..feac9b10f373bc4e9300617a329db689cc40d0b5 100644
--- a/src/gpu/SkGrPixelRef.cpp
+++ b/src/gpu/SkGrPixelRef.cpp
@@ -53,7 +53,7 @@ bool SkROLockPixelsPixelRef::onLockPixelsAreWritable() const {
///////////////////////////////////////////////////////////////////////////////
-static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkColorType dstCT,
+static SkGrPixelRef* copy_to_new_texture_pixelref(GrTexture* texture, SkColorType dstCT,
robertphillips 2014/09/29 12:14:23 line this up?
const SkIRect* subset) {
if (NULL == texture || kUnknown_SkColorType == dstCT) {
return NULL;
@@ -88,15 +88,10 @@ static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkColorType dstCT
context->copyTexture(texture, dst->asRenderTarget(), topLeft);
- // TODO: figure out if this is responsible for Chrome canvas errors
-#if 0
- // The render texture we have created (to perform the copy) isn't fully
- // functional (since it doesn't have a stencil buffer). Release it here
- // so the caller doesn't try to render to it.
- // TODO: we can undo this release when dynamic stencil buffer attach/
- // detach has been implemented
- dst->releaseRenderTarget();
-#endif
+ // Blink is relying on the above copy being sent to GL immediately in the case when the source
+ // is a WebGL canvas backing store. We could have a TODO to remove this flush, but we have a
+ // larger TODO to remove SkGrPixelRef entirely.
+ context->flush();
SkImageInfo info = SkImageInfo::Make(desc.fWidth, desc.fHeight, dstCT, kPremul_SkAlphaType);
SkGrPixelRef* pixelRef = SkNEW_ARGS(SkGrPixelRef, (info, dst));
@@ -152,7 +147,7 @@ SkPixelRef* SkGrPixelRef::deepCopy(SkColorType dstCT, const SkIRect* subset) {
// a GrTexture owned elsewhere (e.g., SkGpuDevice), and cannot live
// independently of that texture. Texture-backed pixel refs, on the other
// hand, own their GrTextures, and are thus self-contained.
- return copyToTexturePixelRef(fSurface->asTexture(), dstCT, subset);
+ return copy_to_new_texture_pixelref(fSurface->asTexture(), dstCT, subset);
}
static bool tryAllocBitmapPixels(SkBitmap* bitmap) {
« src/gpu/GrContext.cpp ('K') | « src/gpu/GrContext.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698