Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: chrome/browser/resources/gpu_internals/timeline_model.js

Issue 7495036: about:gpu support for thread name metadata. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 5
6 /** 6 /**
7 * @fileoverview TimelineModel is a parsed representation of the 7 * @fileoverview TimelineModel is a parsed representation of the
8 * TraceEvents obtained from base/trace_event in which the begin-end 8 * TraceEvents obtained from base/trace_event in which the begin-end
9 * tokens are converted into a hierarchy of processes, threads, 9 * tokens are converted into a hierarchy of processes, threads,
10 * subrows, and slices. 10 * subrows, and slices.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 * @constructor 58 * @constructor
59 */ 59 */
60 function TimelineThread(parent, tid) { 60 function TimelineThread(parent, tid) {
61 this.parent = parent; 61 this.parent = parent;
62 this.tid = tid; 62 this.tid = tid;
63 this.subRows = [[]]; 63 this.subRows = [[]];
64 this.nonNestedSubRows = []; 64 this.nonNestedSubRows = [];
65 } 65 }
66 66
67 TimelineThread.prototype = { 67 TimelineThread.prototype = {
68 name: undefined,
69
68 getSubrow: function(i) { 70 getSubrow: function(i) {
69 while (i >= this.subRows.length) 71 while (i >= this.subRows.length)
70 this.subRows.push([]); 72 this.subRows.push([]);
71 return this.subRows[i]; 73 return this.subRows[i];
72 }, 74 },
73 75
74 addNonNestedSlice: function(slice) { 76 addNonNestedSlice: function(slice) {
75 for (var i = 0; i < this.nonNestedSubRows.length; i++) { 77 for (var i = 0; i < this.nonNestedSubRows.length; i++) {
76 var currSubRow = this.nonNestedSubRows[i]; 78 var currSubRow = this.nonNestedSubRows[i];
77 var lastSlice = currSubRow[currSubRow.length - 1]; 79 var lastSlice = currSubRow[currSubRow.length - 1];
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 224
223 // Add the slice to the subSlices array of its parent. 225 // Add the slice to the subSlices array of its parent.
224 if (state.openSlices.length) { 226 if (state.openSlices.length) {
225 var parentSlice = state.openSlices[state.openSlices.length - 1]; 227 var parentSlice = state.openSlices[state.openSlices.length - 1];
226 parentSlice.slice.subSlices.push(slice); 228 parentSlice.slice.subSlices.push(slice);
227 } 229 }
228 } 230 }
229 } else if (event.ph == 'I') { 231 } else if (event.ph == 'I') {
230 // TODO(nduca): Implement parsing of immediate events. 232 // TODO(nduca): Implement parsing of immediate events.
231 console.log('Parsing of I-type events not implemented.'); 233 console.log('Parsing of I-type events not implemented.');
234 } else if (event.ph == 'M') {
235 if (event.name == 'thread_name') {
236 var thread = this.getProcess(event.pid).getThread(event.tid);
237 thread.name = event.args.name;
238 } else {
239 console.log('Unrecognized metadata name: ' + event.name);
240 }
232 } else { 241 } else {
233 throw new Error('Unrecognized event phase: ' + event.ph + 242 console.log('Unrecognized event phase: ' + event.ph +
nduca 2011/07/26 09:46:33 stop throwing errors and switch to logging. Unreco
234 '(' + event.name + ')'); 243 '(' + event.name + ')');
235 } 244 }
236 } 245 }
237 246
238 this.updateBounds(); 247 this.updateBounds();
239 248
240 // Add end events for any events that are still on the stack. These 249 // Add end events for any events that are still on the stack. These
241 // are events that were still open when trace was ended, and can often 250 // are events that were still open when trace was ended, and can often
242 // indicate deadlock behavior. 251 // indicate deadlock behavior.
243 for (var ptid in threadStateByPTID) { 252 for (var ptid in threadStateByPTID) {
(...skipping 24 matching lines...) Expand all
268 this.maxTimestamp = this.maxTimestamp + boost; 277 this.maxTimestamp = this.maxTimestamp + boost;
269 }, 278 },
270 279
271 updateBounds: function() { 280 updateBounds: function() {
272 var wmin = Infinity; 281 var wmin = Infinity;
273 var wmax = -wmin; 282 var wmax = -wmin;
274 var threads = this.getAllThreads(); 283 var threads = this.getAllThreads();
275 for (var tI = 0; tI < threads.length; tI++) { 284 for (var tI = 0; tI < threads.length; tI++) {
276 var thread = threads[tI]; 285 var thread = threads[tI];
277 thread.updateBounds(); 286 thread.updateBounds();
278 if (thread.minTimestamp && thread.maxTimestamp) { 287 if (thread.minTimestamp != undefined &&
nduca 2011/07/26 09:46:33 Fix a small issue spotted by tonyg for small trace
288 thread.maxTimestamp != undefined) {
279 wmin = Math.min(wmin, thread.minTimestamp); 289 wmin = Math.min(wmin, thread.minTimestamp);
280 wmax = Math.max(wmax, thread.maxTimestamp); 290 wmax = Math.max(wmax, thread.maxTimestamp);
281 } 291 }
282 } 292 }
283 this.minTimestamp = wmin; 293 this.minTimestamp = wmin;
284 this.maxTimestamp = wmax; 294 this.maxTimestamp = wmax;
285 }, 295 },
286 296
287 shiftWorldToMicroseconds: function() { 297 shiftWorldToMicroseconds: function() {
288 var timeBase = this.minTimestamp; 298 var timeBase = this.minTimestamp;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 330
321 }; 331 };
322 332
323 return { 333 return {
324 TimelineSlice: TimelineSlice, 334 TimelineSlice: TimelineSlice,
325 TimelineThread: TimelineThread, 335 TimelineThread: TimelineThread,
326 TimelineProcess: TimelineProcess, 336 TimelineProcess: TimelineProcess,
327 TimelineModel: TimelineModel 337 TimelineModel: TimelineModel
328 }; 338 };
329 }); 339 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698