aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/StatsLayer.h
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-12-19 11:15:16 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-20 16:59:04 +0000
commit56a24813a4f905aa26cb90c7f835549677ac6975 (patch)
tree77648218a50f8c02cfc0ecceea9299de36a4aa3b /tools/viewer/StatsLayer.h
parent16a127fa6000e2715e2d2ad4d0c9110c7fbd4cac (diff)
Move stats code to new layer (with configurable list of timers)
Bug: skia: Change-Id: I3ca5c8c7047309983018339ec7b71b9aea5ee786 Reviewed-on: https://skia-review.googlesource.com/86921 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'tools/viewer/StatsLayer.h')
-rw-r--r--tools/viewer/StatsLayer.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/viewer/StatsLayer.h b/tools/viewer/StatsLayer.h
new file mode 100644
index 0000000000..a99bd43a99
--- /dev/null
+++ b/tools/viewer/StatsLayer.h
@@ -0,0 +1,43 @@
+/*
+* Copyright 2017 Google Inc.
+*
+* Use of this source code is governed by a BSD-style license that can be
+* found in the LICENSE file.
+*/
+
+#ifndef StatsLayer_DEFINED
+#define StatsLayer_DEFINED
+
+#include "SkColor.h"
+#include "SkString.h"
+#include "sk_app/Window.h"
+
+class StatsLayer : public sk_app::Window::Layer {
+public:
+ StatsLayer();
+ void resetMeasurements();
+
+ typedef int Timer;
+
+ Timer addTimer(const char* label, SkColor color, SkColor labelColor = 0);
+ void beginTiming(Timer);
+ void endTiming(Timer);
+ double getLastTime(Timer);
+
+ void onPaint(SkCanvas* canvas) override;
+
+private:
+ static const int kMeasurementCount = 1 << 6; // should be power of 2 for fast mod
+ struct TimerData {
+ double fTimes[kMeasurementCount];
+ SkString fLabel;
+ SkColor fColor;
+ SkColor fLabelColor;
+ };
+ SkTArray<TimerData> fTimers;
+ int fCurrentMeasurement;
+ double fCumulativeMeasurementTime;
+ int fCumulativeMeasurementCount;
+};
+
+#endif