Add debugging helper to GrDrawTarget

This CL relies on https://codereview.chromium.org/1414773002/ (Add the machinery to GrDrawTarget to enable topological sorting)

BUG=skia:4094

Review URL: https://codereview.chromium.org/1416753002
This commit is contained in:
robertphillips 2015-10-20 07:50:00 -07:00 committed by Commit bot
parent 4dfdbb19ba
commit 4beb5c117b
3 changed files with 35 additions and 0 deletions

View File

@ -100,6 +100,7 @@ void GrDrawingManager::flush() {
SkASSERT(result); SkASSERT(result);
for (int i = 0; i < fDrawTargets.count(); ++i) { for (int i = 0; i < fDrawTargets.count(); ++i) {
//SkDEBUGCODE(fDrawTargets[i]->dump();)
fDrawTargets[i]->flush(); fDrawTargets[i]->flush();
} }

View File

@ -42,6 +42,11 @@ GrDrawTarget::GrDrawTarget(GrGpu* gpu, GrResourceProvider* resourceProvider)
// TODO: Stop extracting the context (currently needed by GrClipMaskManager) // TODO: Stop extracting the context (currently needed by GrClipMaskManager)
fContext = fGpu->getContext(); fContext = fGpu->getContext();
fClipMaskManager.reset(new GrClipMaskManager(this)); fClipMaskManager.reset(new GrClipMaskManager(this));
#ifdef SK_DEBUG
static int debugID = 0;
fDebugID = debugID++;
#endif
} }
GrDrawTarget::~GrDrawTarget() { GrDrawTarget::~GrDrawTarget() {
@ -79,6 +84,29 @@ void GrDrawTarget::addDependency(GrSurface* dependedOn) {
} }
} }
#ifdef SK_DEBUG
void GrDrawTarget::dump() const {
SkDebugf("--------------------------------------------------------------\n");
SkDebugf("node: %d\n");
SkDebugf("relies On (%d): ", fDependencies.count());
for (int i = 0; i < fDependencies.count(); ++i) {
SkDebugf("%d, ", fDependencies[i]->fDebugID);
}
SkDebugf("\n");
SkDebugf("batches (%d):\n", fBatches.count());
for (int i = 0; i < fBatches.count(); ++i) {
#if 0
SkDebugf("*******************************\n");
#endif
SkDebugf("%d: %s\n", i, fBatches[i]->name());
#if 0
SkString str = fBatches[i]->dumpInfo();
SkDebugf("%s\n", str.c_str());
#endif
}
}
#endif
bool GrDrawTarget::setupDstReadIfNecessary(const GrPipelineBuilder& pipelineBuilder, bool GrDrawTarget::setupDstReadIfNecessary(const GrPipelineBuilder& pipelineBuilder,
const GrProcOptInfo& colorPOI, const GrProcOptInfo& colorPOI,
const GrProcOptInfo& coveragePOI, const GrProcOptInfo& coveragePOI,

View File

@ -70,6 +70,11 @@ public:
return fDependencies.find(dependedOn) >= 0; return fDependencies.find(dependedOn) >= 0;
} }
/*
* Dump out the drawTarget dependency DAG
*/
SkDEBUGCODE(void dump() const;)
/** /**
* Empties the draw buffer of any queued up draws. * Empties the draw buffer of any queued up draws.
*/ */
@ -304,6 +309,7 @@ private:
bool fFlushing; bool fFlushing;
int fFirstUnpreparedBatch; int fFirstUnpreparedBatch;
SkDEBUGCODE(int fDebugID;)
uint32_t fFlags; uint32_t fFlags;
// 'this' drawTarget relies on the output of the drawTargets in 'fDependencies' // 'this' drawTarget relies on the output of the drawTargets in 'fDependencies'