Index: cc/heads_up_display_layer_impl.cc |
diff --git a/cc/heads_up_display_layer_impl.cc b/cc/heads_up_display_layer_impl.cc |
index e581a57ed794130c3e9c4a1c53718891f3b8afc5..be5c038179e2445794d29f0460e844993508c230 100644 |
--- a/cc/heads_up_display_layer_impl.cc |
+++ b/cc/heads_up_display_layer_impl.cc |
@@ -10,10 +10,12 @@ |
#include "cc/font_atlas.h" |
#include "cc/frame_rate_counter.h" |
#include "cc/layer_tree_impl.h" |
+#include "cc/memory_history.h" |
#include "cc/paint_time_counter.h" |
#include "cc/quad_sink.h" |
#include "cc/renderer.h" |
#include "cc/texture_draw_quad.h" |
+#include "cc/tile_manager.h" |
#include "skia/ext/platform_canvas.h" |
#include "skia/ext/platform_canvas.h" |
#include "third_party/khronos/GLES2/gl2.h" |
@@ -191,6 +193,7 @@ void HeadsUpDisplayLayerImpl::drawHudContents(SkCanvas* canvas) |
const LayerTreeDebugState& debugState = layerTreeImpl()->debug_state(); |
FrameRateCounter* fpsCounter = layerTreeImpl()->frame_rate_counter(); |
+ MemoryHistory* memoryHistory = layerTreeImpl()->memory_history(); |
PaintTimeCounter* paintTimeCounter = layerTreeImpl()->paint_time_counter(); |
if (debugState.showPlatformLayerTree) { |
@@ -221,8 +224,13 @@ void HeadsUpDisplayLayerImpl::drawHudContents(SkCanvas* canvas) |
if (debugState.continuousPainting) |
top = drawPaintTimeDisplay(canvas, paintTimeCounter, top); |
// Don't show the FPS display when continuous painting is enabled, because it would show misleading numbers. |
- else if (debugState.showFPSCounter) |
+ else if (debugState.showFPSCounter) { |
top = drawFPSDisplay(canvas, fpsCounter, top); |
+ } |
+ if (debugState.continuousPainting || |
+ debugState.showFPSCounter) { |
+ top = drawMemoryDisplay(canvas, memoryHistory, top); |
+ } |
} |
if (debugState.showPlatformLayerTree && m_fontAtlas) { |
@@ -289,7 +297,8 @@ int HeadsUpDisplayLayerImpl::drawFPSDisplay(SkCanvas* canvas, FrameRateCounter* |
const int histogramWidth = 37; |
const int width = graphWidth + histogramWidth + 4 * padding; |
- const int height = fontHeight + graphHeight + 4 * padding + 2; |
+ |
+ int height = fontHeight + graphHeight + 4 * padding + 2; |
const int left = bounds().width() - width - 2; |
@@ -302,9 +311,11 @@ int HeadsUpDisplayLayerImpl::drawFPSDisplay(SkCanvas* canvas, FrameRateCounter* |
if (m_fontAtlas.get()) |
m_fontAtlas->setColor(DebugColors::FPSDisplayTextAndGraphColor()); |
+ |
drawTextLeftAligned(canvas, &paint, textBounds, base::StringPrintf("FPS:%5.1f", m_fpsGraph.value)); |
drawTextRightAligned(canvas, &paint, textBounds, base::StringPrintf("%.0f-%.0f", m_fpsGraph.min, m_fpsGraph.max)); |
+ |
enne (OOO)
2013/02/01 17:17:00
needless extra line
|
const double upperBound = Graph::updateUpperBound(&m_fpsGraph); |
drawGraphLines(canvas, &paint, graphBounds, m_fpsGraph); |
@@ -372,6 +383,49 @@ int HeadsUpDisplayLayerImpl::drawFPSDisplay(SkCanvas* canvas, FrameRateCounter* |
return top + height + 2; |
} |
+int HeadsUpDisplayLayerImpl::drawMemoryDisplay(SkCanvas* canvas, MemoryHistory* memoryHistory, const int& initial_top) |
+{ |
+ // Move up by 2 to create no gap between us and previous counter. |
+ int top = initial_top - 2; |
+ const int padding = 4; |
+ const int fontHeight = m_fontAtlas.get() ? m_fontAtlas->fontHeight() : 0; |
+ |
+ const int width = 181; |
+ const int height = 2 * fontHeight + 3 * padding; |
+ |
+ const int left = bounds().width() - width - 2; |
+ const double megabyte = static_cast<double>(1024*1024); |
+ |
+ SkPaint paint = createPaint(); |
+ drawGraphBackground(canvas, &paint, SkRect::MakeXYWH(left, top, width, height)); |
+ |
+ SkRect textRun1 = SkRect::MakeXYWH(left + padding, top + padding, width, fontHeight); |
+ SkRect textRun2 = SkRect::MakeXYWH(left + padding, top + 2*padding + fontHeight, width, fontHeight); |
+ |
+ if (m_fontAtlas.get()) |
+ m_fontAtlas->setColor(DebugColors::FPSDisplayTextAndGraphColor()); |
+ |
+ std::string text; |
+ MemoryHistory::Entry curEntry = memoryHistory->GetEntry( |
+ memoryHistory->HistorySize() - 1); |
+ |
+ double curMB = curEntry.bytes_total() / megabyte; |
+ |
+ text = base::StringPrintf( |
+ "%6.1f MB used", |
+ (curEntry.bytes_unreleasable + curEntry.bytes_allocated) / megabyte); |
+ drawTextLeftAligned(canvas, &paint, textRun1, text); |
+ |
+ if (curEntry.bytes_over || true) { |
enne (OOO)
2013/02/01 17:17:00
Testing code?
|
+ text = base::StringPrintf( |
+ "%6.1f MB over budget", |
+ (curEntry.bytes_over) / megabyte); |
+ drawTextLeftAligned(canvas, &paint, textRun2, text); |
+ } |
+ |
+ return top + height + 2; |
+} |
+ |
int HeadsUpDisplayLayerImpl::drawPaintTimeDisplay(SkCanvas* canvas, PaintTimeCounter* paintTimeCounter, const int& top) |
{ |
const int padding = 4; |