aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/gpu/GrProcessor.h8
-rw-r--r--include/private/GrSurfaceProxy.h2
-rw-r--r--src/gpu/GrDrawingManager.cpp27
-rw-r--r--src/gpu/GrDrawingManager.h2
-rw-r--r--src/gpu/GrPipeline.cpp2
-rw-r--r--src/gpu/GrPreFlushResourceProvider.h2
-rw-r--r--src/gpu/GrProcessor.cpp23
-rw-r--r--src/gpu/GrRenderTargetContext.cpp5
-rw-r--r--src/gpu/GrRenderTargetOpList.cpp35
-rw-r--r--src/gpu/GrRenderTargetOpList.h8
-rw-r--r--src/gpu/GrTextureOpList.cpp2
-rw-r--r--src/gpu/ops/GrAAFillRectOp.cpp2
-rw-r--r--src/gpu/ops/GrClearOp.h5
-rw-r--r--src/gpu/ops/GrCopySurfaceOp.h6
-rw-r--r--src/gpu/ops/GrDiscardOp.h4
-rw-r--r--src/gpu/ops/GrMeshDrawOp.h4
-rw-r--r--src/gpu/ops/GrNonAAFillRectOp.cpp2
-rw-r--r--src/gpu/vk/GrVkPipelineState.cpp1
-rw-r--r--tests/ProxyRefTest.cpp3
19 files changed, 68 insertions, 75 deletions
diff --git a/include/gpu/GrProcessor.h b/include/gpu/GrProcessor.h
index d10136846a..1816db2ea5 100644
--- a/include/gpu/GrProcessor.h
+++ b/include/gpu/GrProcessor.h
@@ -216,13 +216,7 @@ public:
*/
TextureSampler();
- TextureSampler(GrTexture*, const GrSamplerParams&);
- explicit TextureSampler(GrTexture*,
- GrSamplerParams::FilterMode = GrSamplerParams::kNone_FilterMode,
- SkShader::TileMode tileXAndY = SkShader::kClamp_TileMode,
- GrShaderFlags visibility = kFragment_GrShaderFlag);
- void reset(GrTexture*, const GrSamplerParams&,
- GrShaderFlags visibility = kFragment_GrShaderFlag);
+ // MDB TODO: this is the last GrTexture-based reset call!
void reset(GrTexture*,
GrSamplerParams::FilterMode = GrSamplerParams::kNone_FilterMode,
SkShader::TileMode tileXAndY = SkShader::kClamp_TileMode,
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h
index e438e66cad..4f0ab964d5 100644
--- a/include/private/GrSurfaceProxy.h
+++ b/include/private/GrSurfaceProxy.h
@@ -284,7 +284,7 @@ public:
GrTextureOpList* getLastTextureOpList();
/**
- * Retrieves the amount of GPU memory that will be or currently is used by this resource
+ * Retrieves the amount of GPU memory that will be or currently is used by this resource
* in bytes. It is approximate since we aren't aware of additional padding or copies made
* by the driver.
*
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index cecf52f329..6b2c5a20b4 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -31,7 +31,6 @@ void GrDrawingManager::cleanup() {
// We shouldn't need to do this, but it turns out some clients still hold onto opLists
// after a cleanup
fOpLists[i]->reset();
- fOpLists[i]->unref();
}
fOpLists.reset();
@@ -86,9 +85,11 @@ void GrDrawingManager::internalFlush(GrSurfaceProxy*, GrResourceCache::FlushType
fOpLists[i]->makeClosed();
}
+#ifdef ENABLE_MDB
SkDEBUGCODE(bool result =)
SkTTopoSort<GrOpList, GrOpList::TopoSortTraits>(&fOpLists);
SkASSERT(result);
+#endif
GrPreFlushResourceProvider preFlushProvider(this);
@@ -148,9 +149,6 @@ void GrDrawingManager::internalFlush(GrSurfaceProxy*, GrResourceCache::FlushType
for (int i = 0; i < fOpLists.count(); ++i) {
fOpLists[i]->reset();
-#ifdef ENABLE_MDB
- fOpLists[i]->unref();
-#endif
}
#ifndef ENABLE_MDB
@@ -206,25 +204,24 @@ sk_sp<GrRenderTargetOpList> GrDrawingManager::newRTOpList(sk_sp<GrRenderTargetPr
SkASSERT(fOpLists.count() == 1);
// In the non-MDB-world the same GrOpList gets reused for multiple render targets.
// Update this pointer so all the asserts are happy
- rtp->setLastOpList(fOpLists[0]);
+ rtp->setLastOpList(fOpLists[0].get());
// DrawingManager gets the creation ref - this ref is for the caller
// TODO: although this is true right now it isn't cool
- return sk_ref_sp((GrRenderTargetOpList*) fOpLists[0]);
+ return sk_ref_sp((GrRenderTargetOpList*) fOpLists[0].get());
}
#endif
- GrRenderTargetOpList* opList = new GrRenderTargetOpList(rtp,
- fContext->getGpu(),
- fContext->resourceProvider(),
- fContext->getAuditTrail(),
- fOptionsForOpLists);
- SkASSERT(rtp->getLastOpList() == opList);
+ sk_sp<GrRenderTargetOpList> opList(new GrRenderTargetOpList(rtp,
+ fContext->getGpu(),
+ fContext->resourceProvider(),
+ fContext->getAuditTrail(),
+ fOptionsForOpLists));
+ SkASSERT(rtp->getLastOpList() == opList.get());
- *fOpLists.append() = opList;
+ fOpLists.push_back() = opList;
- // DrawingManager gets the creation ref - this ref is for the caller
- return sk_ref_sp(opList);
+ return opList;
}
sk_sp<GrTextureOpList> GrDrawingManager::newTextureOpList(sk_sp<GrTextureProxy> textureProxy) {
diff --git a/src/gpu/GrDrawingManager.h b/src/gpu/GrDrawingManager.h
index ac6bbb45f2..d68430ecd2 100644
--- a/src/gpu/GrDrawingManager.h
+++ b/src/gpu/GrDrawingManager.h
@@ -111,7 +111,7 @@ private:
GrSingleOwner* fSingleOwner;
bool fAbandoned;
- SkTDArray<GrOpList*> fOpLists;
+ SkTArray<sk_sp<GrOpList>> fOpLists;
std::unique_ptr<GrAtlasTextContext> fAtlasTextContext;
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index 9e04b86e2e..ac1360d97d 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -104,7 +104,7 @@ void GrPipeline::addDependenciesTo(GrRenderTargetProxy* rtp) const {
#endif
if (fDstTexture) {
- SkASSERT(rtp->getLastOpList());
+ //SkASSERT(rtp->getLastOpList());
// MDB TODO: re-enable when TextureSamplers store texture proxies
//rtp->getLastOpList()->addDependency(fDstTexture.get());
}
diff --git a/src/gpu/GrPreFlushResourceProvider.h b/src/gpu/GrPreFlushResourceProvider.h
index 86a299a422..5f4b96bd25 100644
--- a/src/gpu/GrPreFlushResourceProvider.h
+++ b/src/gpu/GrPreFlushResourceProvider.h
@@ -26,7 +26,7 @@ class SkColorSpace;
class SkSurfaceProps;
/*
- * This is the base class from which all per-flush callback objects must be derived. It
+ * This is the base class from which all pre-flush callback objects must be derived. It
* provides the "preFlush" interface.
*/
class GrPreFlushCallbackObject : public GrNonAtomicRef<GrPreFlushCallbackObject> {
diff --git a/src/gpu/GrProcessor.cpp b/src/gpu/GrProcessor.cpp
index 7c1052886d..4856c42a34 100644
--- a/src/gpu/GrProcessor.cpp
+++ b/src/gpu/GrProcessor.cpp
@@ -204,18 +204,6 @@ bool GrResourceIOProcessor::hasSameSamplersAndAccesses(const GrResourceIOProcess
GrResourceIOProcessor::TextureSampler::TextureSampler() {}
-GrResourceIOProcessor::TextureSampler::TextureSampler(GrTexture* texture,
- const GrSamplerParams& params) {
- this->reset(texture, params);
-}
-
-GrResourceIOProcessor::TextureSampler::TextureSampler(GrTexture* texture,
- GrSamplerParams::FilterMode filterMode,
- SkShader::TileMode tileXAndY,
- GrShaderFlags visibility) {
- this->reset(texture, filterMode, tileXAndY, visibility);
-}
-
GrResourceIOProcessor::TextureSampler::TextureSampler(GrResourceProvider* resourceProvider,
sk_sp<GrTextureProxy> proxy,
const GrSamplerParams& params) {
@@ -230,16 +218,7 @@ GrResourceIOProcessor::TextureSampler::TextureSampler(GrResourceProvider* resour
this->reset(resourceProvider, std::move(proxy), filterMode, tileXAndY, visibility);
}
-void GrResourceIOProcessor::TextureSampler::reset(GrTexture* texture,
- const GrSamplerParams& params,
- GrShaderFlags visibility) {
- SkASSERT(texture);
- fTexture.set(SkRef(texture), kRead_GrIOType);
- fParams = params;
- fParams.setFilterMode(SkTMin(params.filterMode(), texture->texturePriv().highestFilterMode()));
- fVisibility = visibility;
-}
-
+// MDB TODO: remove this!
void GrResourceIOProcessor::TextureSampler::reset(GrTexture* texture,
GrSamplerParams::FilterMode filterMode,
SkShader::TileMode tileXAndY,
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index 8ad9a4e633..34812ddfbe 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -1675,7 +1675,10 @@ uint32_t GrRenderTargetContext::addLegacyMeshDrawOp(GrPipelineBuilder&& pipeline
}
}
op->initPipeline(args, analysis, overrideColor);
- // TODO: We need to add pipeline dependencies on textures, etc before recording this op.
+
+ // Add the pipeline dependencies on textures, etc before recording this op.
+ op->addDependenciesTo(fRenderTargetProxy.get());
+
op->setClippedBounds(bounds);
return this->getOpList()->addOp(std::move(op), this);
}
diff --git a/src/gpu/GrRenderTargetOpList.cpp b/src/gpu/GrRenderTargetOpList.cpp
index 5730e2e7ad..4d309f407e 100644
--- a/src/gpu/GrRenderTargetOpList.cpp
+++ b/src/gpu/GrRenderTargetOpList.cpp
@@ -233,6 +233,10 @@ void GrRenderTargetOpList::fullClear(GrRenderTargetContext* renderTargetContext,
// As currently implemented, fLastFullClearOp should be the last op because we would
// have cleared it when another op was recorded.
SkASSERT(fRecordedOps.back().fOp.get() == fLastFullClearOp);
+ GrOP_INFO("opList: %d Fusing clears (opID: %d Color: 0x%08x -> 0x%08x)\n",
+ this->uniqueID(),
+ fLastFullClearOp->uniqueID(),
+ fLastFullClearOp->color(), color);
fLastFullClearOp->setColor(color);
return;
}
@@ -316,15 +320,14 @@ GrOp* GrRenderTargetOpList::recordOp(std::unique_ptr<GrOp> op,
// 3) find a 'blocker'
GR_AUDIT_TRAIL_ADD_OP(fAuditTrail, op.get(), renderTarget->uniqueID(),
renderTargetContext->asRenderTargetProxy()->uniqueID());
- GrOP_INFO("Recording (%s, opID: %u)\n"
- "\tBounds: [L: %f T: %f R: %f B: %f]\n",
+ GrOP_INFO("opList: %d Recording (%s, opID: %u)\n"
+ "\tBounds [L: %.2f, T: %.2f R: %.2f B: %.2f]\n",
+ this->uniqueID(),
op->name(),
op->uniqueID(),
op->bounds().fLeft, op->bounds().fTop,
op->bounds().fRight, op->bounds().fBottom);
GrOP_INFO(SkTabString(op->dumpInfo(), 1).c_str());
- GrOP_INFO("\tClipped Bounds: [L: %.2f, T: %.2f, R: %.2f, B: %.2f]\n", op->bounds().fLeft,
- op->bounds().fTop, op->bounds().fRight, op->bounds().fBottom);
GrOP_INFO("\tOutcome:\n");
int maxCandidates = SkTMin(fMaxOpLookback, fRecordedOps.count());
// If we don't have a valid destination render target then we cannot reorder.
@@ -334,33 +337,33 @@ GrOp* GrRenderTargetOpList::recordOp(std::unique_ptr<GrOp> op,
const RecordedOp& candidate = fRecordedOps.fromBack(i);
// We cannot continue to search backwards if the render target changes
if (candidate.fRenderTarget.get() != renderTarget) {
- GrOP_INFO("\t\tBreaking because of (%s, opID: %u) Rendertarget mismatch\n",
+ GrOP_INFO("\t\tBackward: Breaking because of (%s, opID: %u) Rendertarget mismatch\n",
candidate.fOp->name(),
candidate.fOp->uniqueID());
break;
}
if (this->combineIfPossible(candidate, op.get(), clip, dstTexture)) {
- GrOP_INFO("\t\tCombining with (%s, opID: %u)\n", candidate.fOp->name(),
+ GrOP_INFO("\t\tBackward: Combining with (%s, opID: %u)\n", candidate.fOp->name(),
candidate.fOp->uniqueID());
- GrOP_INFO("\t\t\tCombined op info:\n");
+ GrOP_INFO("\t\t\tBackward: Combined op info:\n");
GrOP_INFO(SkTabString(candidate.fOp->dumpInfo(), 4).c_str());
GR_AUDIT_TRAIL_OPS_RESULT_COMBINED(fAuditTrail, candidate.fOp.get(), op.get());
return candidate.fOp.get();
}
// Stop going backwards if we would cause a painter's order violation.
if (!can_reorder(fRecordedOps.fromBack(i).fOp->bounds(), op->bounds())) {
- GrOP_INFO("\t\tIntersects with (%s, opID: %u)\n", candidate.fOp->name(),
+ GrOP_INFO("\t\tBackward: Intersects with (%s, opID: %u)\n", candidate.fOp->name(),
candidate.fOp->uniqueID());
break;
}
++i;
if (i == maxCandidates) {
- GrOP_INFO("\t\tReached max lookback or beginning of op array %d\n", i);
+ GrOP_INFO("\t\tBackward: Reached max lookback or beginning of op array %d\n", i);
break;
}
}
} else {
- GrOP_INFO("\t\tFirstOp\n");
+ GrOP_INFO("\t\tBackward: FirstOp\n");
}
GR_AUDIT_TRAIL_OP_RESULT_NEW(fAuditTrail, op);
if (clip) {
@@ -375,12 +378,15 @@ GrOp* GrRenderTargetOpList::recordOp(std::unique_ptr<GrOp> op,
}
void GrRenderTargetOpList::forwardCombine() {
+ SkASSERT(!this->isClosed());
+
if (fMaxOpLookahead <= 0) {
return;
}
for (int i = 0; i < fRecordedOps.count() - 1; ++i) {
GrOp* op = fRecordedOps[i].fOp.get();
GrRenderTarget* renderTarget = fRecordedOps[i].fRenderTarget.get();
+ SkASSERT(renderTarget);
// If we don't have a valid destination render target ID then we cannot reorder.
if (!renderTarget) {
continue;
@@ -391,13 +397,14 @@ void GrRenderTargetOpList::forwardCombine() {
const RecordedOp& candidate = fRecordedOps[j];
// We cannot continue to search if the render target changes
if (candidate.fRenderTarget.get() != renderTarget) {
- GrOP_INFO("\t\tBreaking because of (%s, B%u) Rendertarget\n", candidate.fOp->name(),
+ GrOP_INFO("\t\tForward: Breaking because of (%s, opID: %u) Rendertarget\n",
+ candidate.fOp->name(),
candidate.fOp->uniqueID());
break;
}
if (this->combineIfPossible(fRecordedOps[i], candidate.fOp.get(),
candidate.fAppliedClip, &candidate.fDstTexture)) {
- GrOP_INFO("\t\tCombining with (%s, B%u)\n", candidate.fOp->name(),
+ GrOP_INFO("\t\tForward: Combining with (%s, opID: %u)\n", candidate.fOp->name(),
candidate.fOp->uniqueID());
GR_AUDIT_TRAIL_OPS_RESULT_COMBINED(fAuditTrail, op, candidate.fOp.get());
fRecordedOps[j].fOp = std::move(fRecordedOps[i].fOp);
@@ -405,13 +412,13 @@ void GrRenderTargetOpList::forwardCombine() {
}
// Stop going traversing if we would cause a painter's order violation.
if (!can_reorder(fRecordedOps[j].fOp->bounds(), op->bounds())) {
- GrOP_INFO("\t\tIntersects with (%s, B%u)\n", candidate.fOp->name(),
+ GrOP_INFO("\t\tForward: Intersects with (%s, opID: %u)\n", candidate.fOp->name(),
candidate.fOp->uniqueID());
break;
}
++j;
if (j > maxCandidateIdx) {
- GrOP_INFO("\t\tReached max lookahead or end of op array %d\n", i);
+ GrOP_INFO("\t\tForward: Reached max lookahead or end of op array %d\n", i);
break;
}
}
diff --git a/src/gpu/GrRenderTargetOpList.h b/src/gpu/GrRenderTargetOpList.h
index 5762e0aab5..dd265ed501 100644
--- a/src/gpu/GrRenderTargetOpList.h
+++ b/src/gpu/GrRenderTargetOpList.h
@@ -45,12 +45,18 @@ public:
~GrRenderTargetOpList() override;
void makeClosed() override {
- INHERITED::makeClosed();
+ if (this->isClosed()) {
+ return;
+ }
fLastFullClearOp = nullptr;
this->forwardCombine();
+
+ INHERITED::makeClosed();
}
+ bool isEmpty() const { return fRecordedOps.empty(); }
+
/**
* Empties the draw buffer of any queued up draws.
*/
diff --git a/src/gpu/GrTextureOpList.cpp b/src/gpu/GrTextureOpList.cpp
index 175f178d5e..689ea44783 100644
--- a/src/gpu/GrTextureOpList.cpp
+++ b/src/gpu/GrTextureOpList.cpp
@@ -108,7 +108,7 @@ void GrTextureOpList::recordOp(std::unique_ptr<GrOp> op,
SkASSERT(!this->isClosed());
GR_AUDIT_TRAIL_ADD_OP(fAuditTrail, op.get(), resourceUniqueID, proxyUniqueID);
- GrOP_INFO("Re-Recording (%s, B%u)\n"
+ GrOP_INFO("Re-Recording (%s, opID: %u)\n"
"\tBounds LRTB (%f, %f, %f, %f)\n",
op->name(),
op->uniqueID(),
diff --git a/src/gpu/ops/GrAAFillRectOp.cpp b/src/gpu/ops/GrAAFillRectOp.cpp
index 15fb645abc..7bf62ece23 100644
--- a/src/gpu/ops/GrAAFillRectOp.cpp
+++ b/src/gpu/ops/GrAAFillRectOp.cpp
@@ -180,6 +180,7 @@ public:
SkString dumpInfo() const override {
SkString str;
+ str.append(INHERITED::dumpInfo());
str.appendf("# combined: %d\n", fRectCnt);
const RectInfo* info = this->first();
for (int i = 0; i < fRectCnt; ++i) {
@@ -189,7 +190,6 @@ public:
info = this->next(info);
}
str.append(DumpPipelineInfo(*this->pipeline()));
- str.append(INHERITED::dumpInfo());
return str;
}
diff --git a/src/gpu/ops/GrClearOp.h b/src/gpu/ops/GrClearOp.h
index 5340af1172..4f51796e6c 100644
--- a/src/gpu/ops/GrClearOp.h
+++ b/src/gpu/ops/GrClearOp.h
@@ -56,6 +56,7 @@ public:
SkString dumpInfo() const override {
SkString string;
+ string.append(INHERITED::dumpInfo());
string.appendf("rtID: %d proxyID: %d Scissor [",
fRenderTarget.get()->uniqueID().asUInt(),
fProxyUniqueID.asUInt());
@@ -65,11 +66,11 @@ public:
} else {
string.append("disabled");
}
- string.appendf("], Color: 0x%08x ", fColor);
- string.append(INHERITED::dumpInfo());
+ string.appendf("], Color: 0x%08x\n", fColor);
return string;
}
+ GrColor color() const { return fColor; }
void setColor(GrColor color) { fColor = color; }
private:
diff --git a/src/gpu/ops/GrCopySurfaceOp.h b/src/gpu/ops/GrCopySurfaceOp.h
index e455c3e7dc..f479f28d1e 100644
--- a/src/gpu/ops/GrCopySurfaceOp.h
+++ b/src/gpu/ops/GrCopySurfaceOp.h
@@ -25,13 +25,13 @@ public:
SkString dumpInfo() const override {
SkString string;
- string.printf("src: (proxyID: %d, rtID: %d), dst: (proxyID: %d, rtID: %d), "
- "srcRect: [L: %d, T: %d, R: %d, B: %d], dstPt: [X: %d, Y: %d]",
+ string.append(INHERITED::dumpInfo());
+ string.printf("src: (proxyID: %d, rtID: %d), dst: (proxyID: %d, rtID: %d),\n"
+ "srcRect: [L: %d, T: %d, R: %d, B: %d], dstPt: [X: %d, Y: %d]\n",
fSrcProxyID.asUInt(), fSrc.get()->uniqueID().asUInt(),
fDstProxyID.asUInt(), fDst.get()->uniqueID().asUInt(),
fSrcRect.fLeft, fSrcRect.fTop, fSrcRect.fRight, fSrcRect.fBottom,
fDstPoint.fX, fDstPoint.fY);
- string.append(INHERITED::dumpInfo());
return string;
}
diff --git a/src/gpu/ops/GrDiscardOp.h b/src/gpu/ops/GrDiscardOp.h
index ca7f0007de..5640f308ac 100644
--- a/src/gpu/ops/GrDiscardOp.h
+++ b/src/gpu/ops/GrDiscardOp.h
@@ -35,9 +35,9 @@ public:
SkString dumpInfo() const override {
SkString string;
- string.printf("rtID: %d proxyID: %d ", fRenderTarget.get()->uniqueID().asUInt(),
- fProxyUniqueID.asUInt());
string.append(INHERITED::dumpInfo());
+ string.printf("rtID: %d proxyID: %d\n", fRenderTarget.get()->uniqueID().asUInt(),
+ fProxyUniqueID.asUInt());
return string;
}
diff --git a/src/gpu/ops/GrMeshDrawOp.h b/src/gpu/ops/GrMeshDrawOp.h
index 8fbd30d280..a4b172d357 100644
--- a/src/gpu/ops/GrMeshDrawOp.h
+++ b/src/gpu/ops/GrMeshDrawOp.h
@@ -119,6 +119,10 @@ public:
this->applyPipelineOptimizations(PipelineOptimizations(analysis, overrideColor));
}
+ void addDependenciesTo(GrRenderTargetProxy* rtp) {
+ fPipeline.addDependenciesTo(rtp);
+ }
+
/**
* Mesh draw ops use a legacy system in GrRenderTargetContext where the pipeline is created when
* the op is recorded. These methods are unnecessary as this information is in the pipeline.
diff --git a/src/gpu/ops/GrNonAAFillRectOp.cpp b/src/gpu/ops/GrNonAAFillRectOp.cpp
index 99cb2bd9df..69bfe291e2 100644
--- a/src/gpu/ops/GrNonAAFillRectOp.cpp
+++ b/src/gpu/ops/GrNonAAFillRectOp.cpp
@@ -95,6 +95,7 @@ public:
SkString dumpInfo() const override {
SkString str;
+ str.append(INHERITED::dumpInfo());
str.appendf("# combined: %d\n", fRects.count());
for (int i = 0; i < fRects.count(); ++i) {
const RectInfo& info = fRects[i];
@@ -103,7 +104,6 @@ public:
info.fRect.fBottom);
}
str.append(DumpPipelineInfo(*this->pipeline()));
- str.append(INHERITED::dumpInfo());
return str;
}
diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp
index 4ce7681b15..0a9d68eb38 100644
--- a/src/gpu/vk/GrVkPipelineState.cpp
+++ b/src/gpu/vk/GrVkPipelineState.cpp
@@ -220,6 +220,7 @@ void GrVkPipelineState::setData(GrVkGpu* gpu,
fXferProcessor->setData(fDataManager, pipeline.getXferProcessor(), dstTexture, offset);
GrResourceIOProcessor::TextureSampler dstTextureSampler;
if (dstTexture) {
+ // MDB TODO: this is the last usage of a GrTexture-based TextureSampler reset method
dstTextureSampler.reset(dstTexture);
textureBindings.push_back(&dstTextureSampler);
}
diff --git a/tests/ProxyRefTest.cpp b/tests/ProxyRefTest.cpp
index 708c7b3034..a18dd61f1c 100644
--- a/tests/ProxyRefTest.cpp
+++ b/tests/ProxyRefTest.cpp
@@ -76,7 +76,8 @@ static sk_sp<GrTextureProxy> make_deferred(GrContext* context) {
desc.fConfig = kRGBA_8888_GrPixelConfig;
return GrSurfaceProxy::MakeDeferred(context->resourceProvider(), desc,
- SkBackingFit::kApprox, SkBudgeted::kYes);
+ SkBackingFit::kApprox, SkBudgeted::kYes,
+ GrResourceProvider::kNoPendingIO_Flag);
}
static sk_sp<GrTextureProxy> make_wrapped(GrContext* context) {