OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/gpu/client/command_buffer_metrics.h" | 5 #include "content/common/gpu/client/command_buffer_metrics.h" |
6 | 6 |
7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
8 | 8 |
9 namespace content { | 9 namespace content { |
| 10 namespace command_buffer_metrics { |
10 | 11 |
11 namespace { | 12 namespace { |
12 | 13 |
13 enum CommandBufferContextLostReason { | 14 enum CommandBufferContextLostReason { |
14 // Don't add new values here. | 15 // Don't add new values here. |
15 CONTEXT_INIT_FAILED, | 16 CONTEXT_INIT_FAILED, |
16 CONTEXT_LOST_GPU_CHANNEL_ERROR, | 17 CONTEXT_LOST_GPU_CHANNEL_ERROR, |
17 CONTEXT_PARSE_ERROR_INVALID_SIZE, | 18 CONTEXT_PARSE_ERROR_INVALID_SIZE, |
18 CONTEXT_PARSE_ERROR_OUT_OF_BOUNDS, | 19 CONTEXT_PARSE_ERROR_OUT_OF_BOUNDS, |
19 CONTEXT_PARSE_ERROR_UNKNOWN_COMMAND, | 20 CONTEXT_PARSE_ERROR_UNKNOWN_COMMAND, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 case gpu::error::kDeferCommandUntilLater: | 66 case gpu::error::kDeferCommandUntilLater: |
66 case gpu::error::kNoError: | 67 case gpu::error::kNoError: |
67 case gpu::error::kLostContext: | 68 case gpu::error::kLostContext: |
68 NOTREACHED(); | 69 NOTREACHED(); |
69 return CONTEXT_LOST_UNKNOWN; | 70 return CONTEXT_LOST_UNKNOWN; |
70 } | 71 } |
71 NOTREACHED(); | 72 NOTREACHED(); |
72 return CONTEXT_LOST_UNKNOWN; | 73 return CONTEXT_LOST_UNKNOWN; |
73 } | 74 } |
74 | 75 |
75 void RecordContextLost(CommandBufferContextType type, | 76 void RecordContextLost(ContextType type, |
76 CommandBufferContextLostReason reason) { | 77 CommandBufferContextLostReason reason) { |
77 switch (type) { | 78 switch (type) { |
78 case DISPLAY_COMPOSITOR_ONSCREEN_CONTEXT: | 79 case DISPLAY_COMPOSITOR_ONSCREEN_CONTEXT: |
79 UMA_HISTOGRAM_ENUMERATION("GPU.ContextLost.BrowserCompositor", reason, | 80 UMA_HISTOGRAM_ENUMERATION("GPU.ContextLost.BrowserCompositor", reason, |
80 CONTEXT_LOST_REASON_MAX_ENUM); | 81 CONTEXT_LOST_REASON_MAX_ENUM); |
81 break; | 82 break; |
82 case BROWSER_OFFSCREEN_MAINTHREAD_CONTEXT: | 83 case BROWSER_OFFSCREEN_MAINTHREAD_CONTEXT: |
83 UMA_HISTOGRAM_ENUMERATION("GPU.ContextLost.BrowserMainThread", reason, | 84 UMA_HISTOGRAM_ENUMERATION("GPU.ContextLost.BrowserMainThread", reason, |
84 CONTEXT_LOST_REASON_MAX_ENUM); | 85 CONTEXT_LOST_REASON_MAX_ENUM); |
85 break; | 86 break; |
(...skipping 27 matching lines...) Expand all Loading... |
113 break; | 114 break; |
114 case CONTEXT_TYPE_UNKNOWN: | 115 case CONTEXT_TYPE_UNKNOWN: |
115 UMA_HISTOGRAM_ENUMERATION("GPU.ContextLost.Unknown", reason, | 116 UMA_HISTOGRAM_ENUMERATION("GPU.ContextLost.Unknown", reason, |
116 CONTEXT_LOST_REASON_MAX_ENUM); | 117 CONTEXT_LOST_REASON_MAX_ENUM); |
117 break; | 118 break; |
118 } | 119 } |
119 } | 120 } |
120 | 121 |
121 } // anonymous namespace | 122 } // anonymous namespace |
122 | 123 |
123 std::string CommandBufferContextTypeToString(CommandBufferContextType type) { | 124 std::string ContextTypeToString(ContextType type) { |
124 switch (type) { | 125 switch (type) { |
125 case OFFSCREEN_CONTEXT_FOR_TESTING: | 126 case OFFSCREEN_CONTEXT_FOR_TESTING: |
126 return "Context-For-Testing"; | 127 return "Context-For-Testing"; |
127 case DISPLAY_COMPOSITOR_ONSCREEN_CONTEXT: | 128 case DISPLAY_COMPOSITOR_ONSCREEN_CONTEXT: |
128 return "DisplayCompositor"; | 129 return "DisplayCompositor"; |
129 case BROWSER_OFFSCREEN_MAINTHREAD_CONTEXT: | 130 case BROWSER_OFFSCREEN_MAINTHREAD_CONTEXT: |
130 return "Offscreen-MainThread"; | 131 return "Offscreen-MainThread"; |
131 case BROWSER_WORKER_CONTEXT: | 132 case BROWSER_WORKER_CONTEXT: |
132 return "CompositorWorker"; | 133 return "CompositorWorker"; |
133 case RENDER_COMPOSITOR_CONTEXT: | 134 case RENDER_COMPOSITOR_CONTEXT: |
134 return "RenderCompositor"; | 135 return "RenderCompositor"; |
135 case RENDER_WORKER_CONTEXT: | 136 case RENDER_WORKER_CONTEXT: |
136 return "RenderWorker"; | 137 return "RenderWorker"; |
137 case RENDERER_MAINTHREAD_CONTEXT: | 138 case RENDERER_MAINTHREAD_CONTEXT: |
138 return "Offscreen-MainThread"; | 139 return "Offscreen-MainThread"; |
139 case GPU_VIDEO_ACCELERATOR_CONTEXT: | 140 case GPU_VIDEO_ACCELERATOR_CONTEXT: |
140 return "GPU-VideoAccelerator-Offscreen"; | 141 return "GPU-VideoAccelerator-Offscreen"; |
141 case OFFSCREEN_VIDEO_CAPTURE_CONTEXT: | 142 case OFFSCREEN_VIDEO_CAPTURE_CONTEXT: |
142 return "Offscreen-CaptureThread"; | 143 return "Offscreen-CaptureThread"; |
143 case OFFSCREEN_CONTEXT_FOR_WEBGL: | 144 case OFFSCREEN_CONTEXT_FOR_WEBGL: |
144 return "Offscreen-For-WebGL"; | 145 return "Offscreen-For-WebGL"; |
145 default: | 146 default: |
146 NOTREACHED(); | 147 NOTREACHED(); |
147 return "unknown"; | 148 return "unknown"; |
148 } | 149 } |
149 } | 150 } |
150 | 151 |
151 void UmaRecordContextInitFailed(CommandBufferContextType type) { | 152 void UmaRecordContextInitFailed(ContextType type) { |
152 RecordContextLost(type, CONTEXT_INIT_FAILED); | 153 RecordContextLost(type, CONTEXT_INIT_FAILED); |
153 } | 154 } |
154 | 155 |
155 void UmaRecordContextLost(CommandBufferContextType type, | 156 void UmaRecordContextLost(ContextType type, |
156 gpu::error::Error error, | 157 gpu::error::Error error, |
157 gpu::error::ContextLostReason reason) { | 158 gpu::error::ContextLostReason reason) { |
158 CommandBufferContextLostReason converted_reason = | 159 CommandBufferContextLostReason converted_reason = |
159 GetContextLostReason(error, reason); | 160 GetContextLostReason(error, reason); |
160 RecordContextLost(type, converted_reason); | 161 RecordContextLost(type, converted_reason); |
161 } | 162 } |
162 | 163 |
| 164 } // namespace command_buffer_metrics |
163 } // namespace content | 165 } // namespace content |
OLD | NEW |