Index: content/common/gpu/gpu_channel.cc |
diff --git a/content/common/gpu/gpu_channel.cc b/content/common/gpu/gpu_channel.cc |
index 52ea50ca00455b0590602744945662130ee4f8f8..e76fb1bbbb741786531f83668bd355fcad725ba7 100644 |
--- a/content/common/gpu/gpu_channel.cc |
+++ b/content/common/gpu/gpu_channel.cc |
@@ -400,6 +400,8 @@ bool GpuChannel::OnControlMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(GpuChannelMsg_EstablishStreamTexture, |
OnEstablishStreamTexture) |
#endif |
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuChannelMsg_CollectRenderingStats, |
+ OnCollectRenderingStats) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
DCHECK(handled) << msg.type(); |
@@ -537,3 +539,26 @@ void GpuChannel::OnEstablishStreamTexture( |
} |
#endif |
+void GpuChannel::OnCollectRenderingStats(IPC::Message* reply_message) { |
+ content::GpuRenderingStats stats; |
+ |
+#if defined(ENABLE_GPU) |
+ for (StubMap::Iterator<GpuCommandBufferStub> it(&stubs_); |
+ !it.IsAtEnd(); it.Advance()) { |
+ |
+ // Ignore offscreen command buffers. |
+ if (!it.GetCurrentValue()->surface_id()) |
+ continue; |
+ |
+ stats.textureUploadCount += |
+ it.GetCurrentValue()->decoder()->GetTextureUploadCount(); |
+ stats.totalTextureUploadTimeInSeconds += |
+ it.GetCurrentValue()->decoder()->GetTotalTextureUploadTimeInSeconds(); |
+ } |
+#endif // defined (ENABLE_GPU) |
+ |
+ GpuChannelMsg_CollectRenderingStats::WriteReplyParams( |
+ reply_message, |
+ stats); |
+ Send(reply_message); |
+} |