aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrTextureContext.cpp
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-04-18 17:10:13 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-18 17:10:22 +0000
commit7ce67db5643eb8ff1149c152ede1253d43e875d4 (patch)
tree31140f73dd7e37482ff16378c2432d950152667b /src/gpu/GrTextureContext.cpp
parent73e597d0eddeaaa466101d5bb7da537c0066166a (diff)
Revert "Split up opLists"
This reverts commit bc8ee52d4649afdc972599e5ef2a2a543867985d. Reason for revert: Instanced rendering is broken Original change's description: > Split up opLists > > Split into: > https://skia-review.googlesource.com/c/11793/ (Remove lastProxy capability from GrSurface) > > Change-Id: I903ba30e17de4aab8cb0d2cc3281ae5c262142f9 > Reviewed-on: https://skia-review.googlesource.com/11581 > Commit-Queue: Robert Phillips <robertphillips@google.com> > Reviewed-by: Brian Osman <brianosman@google.com> > TBR=egdaniel@google.com,robertphillips@google.com,brianosman@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Ic3ae650630a09730d40da4a9587d9e25a9dd5e6c Reviewed-on: https://skia-review.googlesource.com/13725 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.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/gpu/GrTextureContext.cpp b/src/gpu/GrTextureContext.cpp
index f41fcd1837..68e94f9be3 100644
--- a/src/gpu/GrTextureContext.cpp
+++ b/src/gpu/GrTextureContext.cpp
@@ -68,16 +68,32 @@ GrTextureOpList* GrTextureContext::getOpList() {
return fOpList.get();
}
-// MDB TODO: move this (and GrRenderTargetContext::copy) to GrSurfaceContext?
+// TODO: move this (and GrRenderTargetContext::copy) to GrSurfaceContext?
bool GrTextureContext::onCopy(GrSurfaceProxy* srcProxy,
const SkIRect& srcRect,
const SkIPoint& dstPoint) {
ASSERT_SINGLE_OWNER
RETURN_FALSE_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- GR_AUDIT_TRAIL_AUTO_FRAME(fAuditTrail, "GrTextureContext::onCopy");
+ GR_AUDIT_TRAIL_AUTO_FRAME(fAuditTrail, "GrTextureContext::copy");
- return this->getOpList()->copySurface(fContext->resourceProvider(),
- fTextureProxy.get(), srcProxy, srcRect, dstPoint);
+#ifndef ENABLE_MDB
+ // We can't yet fully defer copies to textures, so GrTextureContext::copySurface will
+ // execute the copy immediately. Ensure the data is ready.
+ fContext->contextPriv().flushSurfaceWrites(srcProxy);
+#endif
+
+ GrTextureOpList* opList = this->getOpList();
+ bool result = opList->copySurface(fContext->resourceProvider(),
+ fTextureProxy.get(), srcProxy, srcRect, dstPoint);
+
+#ifndef ENABLE_MDB
+ GrOpFlushState flushState(fContext->getGpu(), nullptr);
+ opList->prepareOps(&flushState);
+ opList->executeOps(&flushState);
+ opList->reset();
+#endif
+
+ return result;
}