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

Unified Diff: trunk/debugger/SkDebugger.cpp

Issue 12449006: NaCl Debugger: Implement overview and filters, cleanup (Closed) Base URL: http://skia.googlecode.com/svn/
Patch Set: Created 7 years, 9 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
« no previous file with comments | « trunk/debugger/SkDebugger.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/debugger/SkDebugger.cpp
===================================================================
--- trunk/debugger/SkDebugger.cpp (revision 7896)
+++ trunk/debugger/SkDebugger.cpp (working copy)
@@ -7,7 +7,9 @@
*/
#include "SkDebugger.h"
+#include "SkString.h"
+
SkDebugger::SkDebugger() {
// Create this some other dynamic way?
fDebugCanvas = new SkDebugCanvas(100, 100);
@@ -43,3 +45,83 @@
newPicture->endRecording();
return newPicture;
}
+
+void SkDebugger::getOverviewText(const SkTDArray<double>* typeTimes,
+ double totTime,
+ SkString* overview) {
+ const SkTDArray<SkDrawCommand*>& commands = this->getDrawCommands();
+
+ SkTDArray<int> counts;
+ counts.setCount(LAST_DRAWTYPE_ENUM+1);
+ for (int i = 0; i < LAST_DRAWTYPE_ENUM+1; ++i) {
+ counts[i] = 0;
+ }
+
+ for (int i = 0; i < commands.count(); i++) {
+ counts[commands[i]->getType()]++;
+ }
+
+ overview->reset();
+ int total = 0;
+#ifdef SK_DEBUG
+ double totPercent = 0, tempSum = 0;
+#endif
+ for (int i = 0; i < LAST_DRAWTYPE_ENUM+1; ++i) {
+ if (0 == counts[i]) {
+ // if there were no commands of this type then they should've consumed no time
+ SkASSERT(NULL == typeTimes || 0.0 == (*typeTimes)[i]);
+ continue;
+ }
+
+ overview->append(SkDrawCommand::GetCommandString((DrawType) i));
+ overview->append(": ");
+ overview->appendScalar(counts[i]);
+ if (NULL != typeTimes) {
+ overview->append(" - ");
+ overview->appendScalar((*typeTimes)[i]);
+ overview->append("ms");
+ overview->append(" - ");
+ double percent = 100.0*(*typeTimes)[i]/totTime;
+ overview->appendScalar(percent);
+ overview->append("%");
+#ifdef SK_DEBUG
+ totPercent += percent;
+ tempSum += (*typeTimes)[i];
+#endif
+ }
+ overview->append("<br/>");
+ total += counts[i];
+ }
+#ifdef SK_DEBUG
+ if (NULL != typeTimes) {
+ SkASSERT(SkScalarNearlyEqual(totPercent, 100.0));
+ SkASSERT(SkScalarNearlyEqual(tempSum, totTime));
+ }
+#endif
+
+ if (totTime > 0.0) {
+ overview->append("Total Time: ");
+ overview->appendScalar(totTime);
+ overview->append("ms");
+#ifdef SK_DEBUG
+ overview->append(" ");
+ overview->appendScalar(totPercent);
+ overview->append("% ");
+#endif
+ overview->append("<br/>");
+ }
+
+ SkString totalStr;
+ totalStr.append("Total Draw Commands: ");
+ totalStr.appendScalar(total);
+ totalStr.append("<br/>");
+ overview->insert(0, totalStr);
+
+ overview->append("<br/>");
+ overview->append("SkPicture Width: ");
+ overview->appendScalar(pictureWidth());
+ overview->append("px<br/>");
+ overview->append("SkPicture Height: ");
+ overview->appendScalar(pictureHeight());
+ overview->append("px");
+}
« no previous file with comments | « trunk/debugger/SkDebugger.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698