aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-06-14 17:55:12 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-14 17:55:18 +0000
commitc8ecb0328b69f08b4fb231469d1545d935d44567 (patch)
tree331dbf6f78d2ae4dcdfc729dc9894ee1dcd92a0e
parente225b565fcdebcc5d642bd026f57c4514438d4e6 (diff)
Revert "Drop the ref on the GrOpList's target in makeClosed"
This reverts commit dcd499caed823f23bc70c07df7804a6dc1306606. Reason for revert: memory issue Original change's description: > Drop the ref on the GrOpList's target in makeClosed > > Bug: 729233 > Change-Id: Ifb66b745e604d7f7c22c2907bcffa91d2086236d > Reviewed-on: https://skia-review.googlesource.com/19495 > Commit-Queue: Robert Phillips <robertphillips@google.com> > Reviewed-by: Brian Salomon <bsalomon@google.com> TBR=bsalomon@google.com,robertphillips@google.com Change-Id: I4269c696c57a93cdd056e7c3a887c35b8765ac6d No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 729233 Reviewed-on: https://skia-review.googlesource.com/19793 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
-rw-r--r--src/effects/GrAlphaThresholdFragmentProcessor.cpp2
-rw-r--r--src/gpu/GrGpuResourceRef.cpp16
-rw-r--r--src/gpu/GrOpList.cpp3
-rw-r--r--src/gpu/GrOpList.h5
-rw-r--r--src/gpu/GrRenderTargetContext.cpp5
5 files changed, 14 insertions, 17 deletions
diff --git a/src/effects/GrAlphaThresholdFragmentProcessor.cpp b/src/effects/GrAlphaThresholdFragmentProcessor.cpp
index 466bd78e7c..de1b74e4ce 100644
--- a/src/effects/GrAlphaThresholdFragmentProcessor.cpp
+++ b/src/effects/GrAlphaThresholdFragmentProcessor.cpp
@@ -44,7 +44,7 @@ GrAlphaThresholdFragmentProcessor::GrAlphaThresholdFragmentProcessor(
resourceProvider,
SkMatrix::MakeTrans(SkIntToScalar(-bounds.x()), SkIntToScalar(-bounds.y())),
maskProxy.get())
- , fMaskTextureSampler(resourceProvider, std::move(maskProxy)) {
+ , fMaskTextureSampler(resourceProvider, maskProxy) {
this->initClassID<GrAlphaThresholdFragmentProcessor>();
this->addCoordTransform(&fImageCoordTransform);
this->addTextureSampler(&fImageTextureSampler);
diff --git a/src/gpu/GrGpuResourceRef.cpp b/src/gpu/GrGpuResourceRef.cpp
index 243b089b79..115e0b1797 100644
--- a/src/gpu/GrGpuResourceRef.cpp
+++ b/src/gpu/GrGpuResourceRef.cpp
@@ -143,12 +143,11 @@ GrSurfaceProxyRef::GrSurfaceProxyRef(sk_sp<GrSurfaceProxy> proxy, GrIOType ioTyp
}
GrSurfaceProxyRef::~GrSurfaceProxyRef() {
- this->reset();
-}
-
-void GrSurfaceProxyRef::reset() {
- if (fPendingIO) {
+ if (fOwnRef) {
SkASSERT(fProxy);
+ fProxy->unref();
+ }
+ if (fPendingIO) {
switch (fIOType) {
case kRead_GrIOType:
fProxy->completedRead();
@@ -161,10 +160,13 @@ void GrSurfaceProxyRef::reset() {
fProxy->completedWrite();
break;
}
- fPendingIO = false;
}
+}
+
+void GrSurfaceProxyRef::reset() {
+ SkASSERT(!fPendingIO);
+ SkASSERT(SkToBool(fProxy) == fOwnRef);
if (fOwnRef) {
- SkASSERT(fProxy);
fProxy->unref();
fOwnRef = false;
fProxy = nullptr;
diff --git a/src/gpu/GrOpList.cpp b/src/gpu/GrOpList.cpp
index 14f2baadf7..5160be16c2 100644
--- a/src/gpu/GrOpList.cpp
+++ b/src/gpu/GrOpList.cpp
@@ -45,6 +45,8 @@ GrOpList::~GrOpList() {
if (this == fTarget.get()->getLastOpList()) {
fTarget.get()->setLastOpList(nullptr);
}
+
+ fTarget.pendingIOComplete();
}
}
@@ -57,6 +59,7 @@ void GrOpList::reset() {
fTarget.get()->setLastOpList(nullptr);
}
+ fTarget.pendingIOComplete();
fTarget.reset();
fAuditTrail = nullptr;
}
diff --git a/src/gpu/GrOpList.h b/src/gpu/GrOpList.h
index 04142d873f..dc624415d1 100644
--- a/src/gpu/GrOpList.h
+++ b/src/gpu/GrOpList.h
@@ -35,10 +35,7 @@ public:
virtual bool executeOps(GrOpFlushState* flushState) = 0;
virtual void makeClosed(const GrCaps&) {
- if (!this->isClosed()) {
- this->setFlag(kClosed_Flag);
- fTarget.removeRef();
- }
+ this->setFlag(kClosed_Flag);
}
virtual void reset();
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index 21a47eec49..39148bbe5a 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -119,11 +119,6 @@ GrRenderTargetContext::GrRenderTargetContext(GrContext* context,
auto srgbColorSpace = SkColorSpace::MakeSRGB();
fColorXformFromSRGB = GrColorSpaceXform::Make(srgbColorSpace.get(), fColorSpace.get());
}
-
- // MDB TODO: to ensure all resources still get allocated in the correct order in the hybrid
- // world we need to get the correct opList here so that it, in turn, can grab and hold
- // its rendertarget.
- this->getOpList();
SkDEBUGCODE(this->validate();)
}