From beef890122f4ac7040d51dd17dba292d32f76a66 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 30 Sep 2015 14:47:57 -0700 Subject: [PATCH] Flip the stats graph and handle boundary conditions --- sky/compositor/instrumentation.cc | 21 +++++++++++++++------ sky/compositor/statistics_layer.cc | 1 - 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/sky/compositor/instrumentation.cc b/sky/compositor/instrumentation.cc index 8d492dde328..6738489a7b6 100644 --- a/sky/compositor/instrumentation.cc +++ b/sky/compositor/instrumentation.cc @@ -27,6 +27,10 @@ void Stopwatch::stop() { _laps[_current_sample] = _lastLap; } +static inline constexpr double UnitFrameInterval(double frameTimeMS) { + return frameTimeMS * 60.0 * 1e-3; +} + void Stopwatch::visualize(SkCanvas& canvas, const SkRect& rect) const { SkAutoCanvasRestore save(&canvas, false); @@ -41,14 +45,19 @@ void Stopwatch::visualize(SkCanvas& canvas, const SkRect& rect) const { auto width = rect.width(); auto height = rect.height(); - path.moveTo(0, 0); - path.lineTo(0, height * (_laps[0].InMillisecondsF() / 16.0)); + auto unitHeight = (1.0 - UnitFrameInterval(_laps[0].InMillisecondsF())); + + path.moveTo(0, height); + path.lineTo(0, height * unitHeight); + for (size_t i = 0; i < kMaxSamples; i++) { - path.lineTo(width * (static_cast(i) / kMaxSamples), - height * (_laps[i].InMillisecondsF() / 16.0)); + double unitWidth = (static_cast(i + 1) / kMaxSamples); + unitHeight = (1.0 - UnitFrameInterval(_laps[i].InMillisecondsF())); + path.lineTo(width * unitWidth, height * unitHeight); } - path.lineTo(width, 0); - path.lineTo(0, 0); + + path.lineTo(width, height); + path.close(); paint.setColor(0xAA0000FF); diff --git a/sky/compositor/statistics_layer.cc b/sky/compositor/statistics_layer.cc index 5823683c350..d8486cb553f 100644 --- a/sky/compositor/statistics_layer.cc +++ b/sky/compositor/statistics_layer.cc @@ -39,7 +39,6 @@ void StatisticsLayer::Paint(PaintContext::ScopedFrame& frame) { } if (options_.isEnabled(CompositorOptions::Option::DisplayFrameStatistics)) { - // Frame (2032): 3.26ms double msPerFrame = context.frame_time().lastLap().InMillisecondsF(); double fps = 1e3 / msPerFrame;