diff options
author | nduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-09 19:41:57 +0000 |
---|---|---|
committer | nduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-09 19:41:57 +0000 |
commit | ea005db8d19c4e40fbc17ad7e20d50c2476485ef (patch) | |
tree | 78c9e73b9ebaf814be6ae7d1fbc7820af91991bd /chrome/browser/resources | |
parent | 0934e35f418895925345d059490e27d643db1133 (diff) | |
download | chromium_src-ea005db8d19c4e40fbc17ad7e20d50c2476485ef.zip chromium_src-ea005db8d19c4e40fbc17ad7e20d50c2476485ef.tar.gz chromium_src-ea005db8d19c4e40fbc17ad7e20d50c2476485ef.tar.bz2 |
Implement timeline control and trace viewer for gpu profiling.
The general design here is:
TraceController: manages collection of trace data from the backend
RawEventView: new tab in about:gpu that shows trace events collected in raw form
TimelineView: new tab in about:gpu that shows a timeline of events, broken out by thread and colored by name
The TimelineView is built around a TimelineModel class. The TimelineModel class takes as input the BEGIN/END events from TraceEvent and converts them into processes, threads, threads, slices and subrows.
Slices represent a single BEGIN-END pair. Since slices can nest, slices have subSlices. E.g. B(x) B(y) E(y) E(y) yields slice(x) with subslice (y). A thread stores slices grouped into subrows, which are slicesall of the same logical nesting depth. With the previous example, the thread would have two subrows, one containing just x, and one containing just Y.
The TimelineModel is visualized by a Timeline class in gantt-chart form. The Timeline decorates a div and builds inside that div a number of canvas elements, one element per subRow across all threads in the capture. Within that canvas, we visualize the slices against a scale+translate transform, manipulable with w/a s/d keys for zooming and panning, respectively. When drawing, we collapse together rectangles that are subpixel, avoiding the cost of rasterizing them entirely.
This code is all stubbed out so that it does not show up in the about:gpu within chrome. We will turn it on once the trace_event rewrite lands. If you run it standalone with ~nduca/emulate_webui.py, it becomes active.
BUG=
TEST=
Review URL: http://codereview.chromium.org/6542012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77503 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/resources')
20 files changed, 1678 insertions, 72 deletions
diff --git a/chrome/browser/resources/gpu_internals.html b/chrome/browser/resources/gpu_internals.html index bdcea10..8763249 100644 --- a/chrome/browser/resources/gpu_internals.html +++ b/chrome/browser/resources/gpu_internals.html @@ -23,35 +23,57 @@ body { margin: 0; } </style> -<link rel="stylesheet" href="gpu_internals/tab_control.css"> <link rel="stylesheet" href="gpu_internals/info_view.css"> +<link rel="stylesheet" href="gpu_internals/overlay.css"> +<link rel="stylesheet" href="gpu_internals/tab_control.css"> +<link rel="stylesheet" href="gpu_internals/timeline_view.css"> +<link rel="stylesheet" href="gpu_internals/timeline.css"> +<link rel="stylesheet" href="gpu_internals/tracing_controller.css"> <script src="chrome://resources/js/cr.js"></script> <script src="chrome://resources/js/cr/event_target.js"></script> <script src="chrome://resources/js/cr/ui.js"></script> <script src="chrome://resources/js/util.js"></script> <script src="gpu_internals/tab_control.js"></script> +<script src="gpu_internals/overlay.js"></script> <script src="gpu_internals/browser_bridge.js"></script> +<script src="gpu_internals/tracing_controller.js"></script> <script src="gpu_internals/info_view.js"></script> - +<script src="gpu_internals/timeline_model.js"></script> +<script src="gpu_internals/sorted_array_utils.js"></script> +<script src="gpu_internals/timeline.js"></script> +<script src="gpu_internals/timeline_track.js"></script> +<script src="gpu_internals/fast_rect_renderer.js"></script> +<script src="gpu_internals/timeline_view.js"></script> +<script src="gpu_internals/simulated_trace_data.js"></script> <script> -var browser; +var browserBridge; +var tracingController; +var timelineView; // made global for debugging purposes only /** * Main entry point. called once the page has loaded. */ function onLoad() { browserBridge = new gpu.BrowserBridge(); + if (browserBridge.debugMode) + tracingController = new gpu.TracingController(); // Create the views. cr.ui.decorate('#info-view', gpu.InfoView); + timelineView = $('timeline-view'); + if (browserBridge.debugMode) + cr.ui.decorate(timelineView, gpu.TimelineView); + else + timelineView.parentNode.removeChild(timelineView); + // Create the main tab control var tabs = $('main-tabs'); cr.ui.decorate(tabs, gpu.TabControl); // Sync the main-tabs selectedTabs in-sync with the location. - tabs.addEventListener('selectedTabChanged', function() { + tabs.addEventListener('selectedTabChange', function() { if (tabs.selectedTab.id) { history.pushState('', '', '#' + tabs.selectedTab.id); } @@ -78,6 +100,9 @@ document.addEventListener('DOMContentLoaded', onLoad); <!-- Tabs --> <div id="main-tabs"> <include src="gpu_internals/info_view.html"> + <include src="gpu_internals/timeline_view.html"> </div> + + <include src="gpu_internals/tracing_controller.html"> </body> </html> diff --git a/chrome/browser/resources/gpu_internals/browser_bridge.js b/chrome/browser/resources/gpu_internals/browser_bridge.js index 9e7cc82..1b1a97c 100644 --- a/chrome/browser/resources/gpu_internals/browser_bridge.js +++ b/chrome/browser/resources/gpu_internals/browser_bridge.js @@ -12,9 +12,12 @@ cr.define('gpu', function() { // If we are not running inside WebUI, output chrome.send messages // to the console to help with quick-iteration debugging. if (chrome.send === undefined && console.log) { + this.debugMode_ = true; chrome.send = function(messageHandler, args) { console.log('chrome.send', messageHandler, args); }; + } else { + this.debugMode_ = false; } this.nextRequestId_ = 0; @@ -28,6 +31,14 @@ cr.define('gpu', function() { __proto__: cr.EventTarget.prototype, /** + * Returns true if the page is hosted inside Chrome WebUI + * Helps have behavior conditional to emulate_webui.py + */ + get debugMode() { + return this.debugMode_; + }, + + /** * Sends a message to the browser with specified args. The * browser will reply asynchronously via the provided callback. */ @@ -72,6 +83,6 @@ cr.define('gpu', function() { }; return { - BrowserBridge : BrowserBridge + BrowserBridge: BrowserBridge }; }); diff --git a/chrome/browser/resources/gpu_internals/fast_rect_renderer.js b/chrome/browser/resources/gpu_internals/fast_rect_renderer.js new file mode 100644 index 0000000..ef80326b --- /dev/null +++ b/chrome/browser/resources/gpu_internals/fast_rect_renderer.js @@ -0,0 +1,120 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview Provides a mechanism for drawing massive numbers of + * colored rectangles into a canvas in an efficient manner, provided + * they are drawn left to right with fixed y and height throughout. + * + * The basic idea used here is to fuse subpixel rectangles together so that + * we never issue a canvas fillRect for them. It turns out Javascript can + * do this quite efficiently, compared to asking Canvas2D to do the same. + * + * A few extra things are done by this class in the name of speed: + * - Viewport culling: off-viewport rectangles are discarded. + * + * - The actual discarding operation is done in world space, + * e.g. pre-transform. + * + * - Rather than expending compute cycles trying to figure out an average + * color for fused rectangles from css strings, you instead draw using + * palletized colors. The fused rect is the max pallete index encountered. + * + * Make sure to flush the trackRenderer before finishing drawing in order + * to commit any queued drawing operations. + */ +cr.define('gpu', function() { + + /** + * Creates a fast rect renderer with a specific set of culling rules + * and color pallette. + * @param {GraphicsContext2D} ctx Canvas2D drawing context. + * @param {number} vpLeft The leftmost visible part of the drawing viewport. + * @param {number} minRectSize Only rectangles with width < minRectSize are + * considered for merging. + * @param {number} maxMergeDist Controls how many successive small rectangles + * can be merged together before issuing a rectangle. + * @param {number} vpRight The rightmost visible part of the viewport. + * @param {Array} pallette The color pallete for drawing. Pallette slots + * should map to valid Canvas fillStyle strings. + * + * @constructor + */ + function FastRectRenderer(ctx, vpLeft, minRectSize, maxMergeDist, vpRight, + pallette) { + this.ctx_ = ctx; + this.vpLeft_ = vpLeft; + this.minRectSize_ = minRectSize; + this.maxMergeDist_ = maxMergeDist; + this.vpRight_ = vpRight; + this.pallette_ = pallette; + } + + FastRectRenderer.prototype = { + y_: 0, + h_: 0, + merging_: false, + mergeStartX_: 0, + mergeCurRight_: 0, + + /** + * Changes the y position and height for subsequent fillRect + * calls. x and width are specifieid on the fillRect calls. + */ + setYandH: function(y, h) { + this.flush(); + this.y_ = y; + this.h_ = h; + }, + + /** + * Fills rectangle at the specified location, if visible. If the + * rectangle is subpixel, it will be merged with adjacent rectangles. + * The drawing operation may not take effect until flush is called. + * @param {number} colorId The color of this rectangle, as an index + * in the renderer's color pallete. + */ + fillRect: function(x, w, colorId) { + var r = x + w; + if (r < this.vpLeft_ || x > this.vpRight_) return; + if (w < this.minRectSize_) { + if (r - this.mergeStartX_ > this.maxMergeDist_) + this.flush(); + if (!this.merging_) { + this.merging_ = true; + this.mergeStartX_ = x; + this.mergeCurRight_ = r; + this.mergedColorId = colorId; + } else { + this.mergeCurRight_ = r; + this.mergedColorId = Math.max(this.mergedColorId, colorId); + } + } else { + if (this.merging_) + this.flush(); + this.ctx_.fillStyle = this.pallette_[colorId]; + this.ctx_.fillRect(x, this.y_, w, this.h_); + } + }, + + /** + * Commits any pending fillRect operations to the underlying graphics + * context. + */ + flush: function() { + if (this.merging_) { + this.ctx_.fillStyle = this.pallette_[this.mergedColorId]; + this.ctx_.fillRect(this.mergeStartX_, this.y_, + this.mergeCurRight_ - this.mergeStartX_, this.h_); + this.merging_ = false; + } + } + }; + + return { + FastRectRenderer: FastRectRenderer + }; + +}); diff --git a/chrome/browser/resources/gpu_internals/info_view.js b/chrome/browser/resources/gpu_internals/info_view.js index 6bf8340..26a193f 100644 --- a/chrome/browser/resources/gpu_internals/info_view.js +++ b/chrome/browser/resources/gpu_internals/info_view.js @@ -1,15 +1,12 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. + /** - * This view displays options for importing/exporting the captured data. Its - * primarily usefulness is to allow users to copy-paste their data in an easy - * to read format for bug reports. - * - * - Has a button to generate a text report. - * - * - Shows how many events have been captured. + * @fileoverview This view displays information on the current GPU + * hardware. Its primary usefulness is to allow users to copy-paste + * their data in an easy to read format for bug reports. */ cr.define('gpu', function() { /** @@ -54,14 +51,14 @@ cr.define('gpu', function() { */ beginRequestLogMessages: function() { browserBridge.callAsync('requestLogMessages', undefined, - (function(messages) { - if(messages.length != this.logMessages_.length) { - this.logMessages_ = messages; - this.refresh(); - } - // check again in 250 ms - window.setTimeout(this.beginRequestLogMessages.bind(this), 250); - }).bind(this)); + (function(messages) { + if (messages.length != this.logMessages_.length) { + this.logMessages_ = messages; + this.refresh(); + } + // check again in 250 ms + window.setTimeout(this.beginRequestLogMessages.bind(this), 250); + }).bind(this)); }, /** @@ -71,18 +68,18 @@ cr.define('gpu', function() { // Client info if (this.clientInfo_) { var chromeVersion = this.clientInfo_.version + - ' (' + this.clientInfo_.official + - ' ' + this.clientInfo_.cl + - ') ' + this.clientInfo_.version_mod; + ' (' + this.clientInfo_.official + + ' ' + this.clientInfo_.cl + + ') ' + this.clientInfo_.version_mod; this.setTable_('client-info', [ - { - description: 'Data exported', - value: (new Date()).toLocaleString() - }, - { - description: 'Chrome version', - value: chromeVersion - }]); + { + description: 'Data exported', + value: (new Date()).toLocaleString() + }, + { + description: 'Chrome version', + value: chromeVersion + }]); } else { this.setText_('client-info', '... loading...'); } @@ -93,13 +90,13 @@ cr.define('gpu', function() { var gpuInfo = browserBridge.gpuInfo; if (gpuInfo) { if (gpuInfo.blacklistingReasons) { - blacklistedIndicator.style.display = 'block'; + blacklistedIndicator.hidden = false; // Not using jstemplate here because we need to manipulate // href on the fly var reasonsEl = blacklistedIndicator.querySelector( '.blacklisted-reasons'); - reasonsEl.textContent = ""; - for (var i = 0; i < gpuInfo.blacklistingReasons.length; ++i) { + reasonsEl.textContent = ''; + for (var i = 0; i < gpuInfo.blacklistingReasons.length; i++) { var reason = gpuInfo.blacklistingReasons[i]; var reasonEl = document.createElement('li'); @@ -110,7 +107,7 @@ cr.define('gpu', function() { reasonEl.appendChild(desc); // Spacing ':' element - if(reason.cr_bugs.length + reason.webkit_bugs.length > 0) { + if (reason.cr_bugs.length + reason.webkit_bugs.length > 0) { var tmp = document.createElement('span'); tmp.textContent = ' '; reasonEl.appendChild(tmp); @@ -119,59 +116,61 @@ cr.define('gpu', function() { var nreasons = 0; var j; // cr_bugs - for (j = 0; j < reason.cr_bugs.length; ++j) { + for (j = 0; j < reason.cr_bugs.length; ++j) { if (nreasons > 0) { var tmp = document.createElement('span'); tmp.textContent = ', '; reasonEl.appendChild(tmp); } - var lnk = document.createElement('a'); + var link = document.createElement('a'); var bugid = parseInt(reason.cr_bugs[j]); - lnk.textContent = bugid; - lnk.href = 'http://crbug.com/' + bugid; - reasonEl.appendChild(lnk); - nreasons += 1; + link.textContent = bugid; + link.href = 'http://crbug.com/' + bugid; + reasonEl.appendChild(link); + nreasons ++; } - for (j = 0; j < reason.webkit_bugs.length; ++j) { + for (j = 0; j < reason.webkit_bugs.length; ++j) { if (nreasons > 0) { var tmp = document.createElement('span'); tmp.textContent = ', '; reasonEl.appendChild(tmp); } - var lnk = document.createElement('a'); + var link = document.createElement('a'); var bugid = parseInt(reason.webkit_bugs[j]); - lnk.textContent = bugid; + link.textContent = bugid; - lnk.href = 'https://bugs.webkit.org/show_bug.cgi?id=' + bugid; - reasonEl.appendChild(lnk); - nreasons += 1; + link.href = 'https://bugs.webkit.org/show_bug.cgi?id=' + bugid; + reasonEl.appendChild(link); + nreasons ++; } reasonsEl.appendChild(reasonEl); } } else { - blacklistedIndicator.style.display = 'none'; + blacklistedIndicator.hidden = true; } this.setTable_('basic-info', gpuInfo.basic_info); if (gpuInfo.diagnostics) { - diagnostics.style.display = 'block'; + diagnostics.hidden = false; this.setTable_('diagnostics-table', gpuInfo.diagnostics); } else { - diagnostics.style.display = 'none'; + diagnostics.hidden = true; } } else { - blacklistedIndicator.style.display = 'none'; + blacklistedIndicator.hidden = true; this.setText_('basic-info', '... loading ...'); - diagnostics.style.display = 'none'; + diagnostics.hidden = true; } // Log messages - jstProcess(new JsEvalContext({values: this.logMessages_}), - document.getElementById('log-messages')); + if (!browserBridge.debugMode) { + jstProcess(new JsEvalContext({values: this.logMessages_}), + document.getElementById('log-messages')); + } }, setText_: function(outputElementId, text) { @@ -196,4 +195,4 @@ cr.define('gpu', function() { return { InfoView: InfoView }; -});
\ No newline at end of file +}); diff --git a/chrome/browser/resources/gpu_internals/overlay.js b/chrome/browser/resources/gpu_internals/overlay.js index 9a87d7d..720065c 100644 --- a/chrome/browser/resources/gpu_internals/overlay.js +++ b/chrome/browser/resources/gpu_internals/overlay.js @@ -1,8 +1,9 @@ // Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. + + /** - * * @fileoverview Implements an element that is hidden by default, but * when shown, dims and (attempts to) disable the main document. * @@ -22,7 +23,7 @@ cr.define('gpu', function() { */ var OverlayRoot = cr.ui.define('div'); OverlayRoot.prototype = { - __proto__ : HTMLDivElement.prototype, + __proto__: HTMLDivElement.prototype, decorate: function() { this.classList.add('overlay-root'); this.visible = false; @@ -136,7 +137,7 @@ cr.define('gpu', function() { var Overlay = cr.ui.define('div'); Overlay.prototype = { - __proto__ : HTMLDivElement.prototype, + __proto__: HTMLDivElement.prototype, /** * Initializes the overlay element. @@ -171,6 +172,6 @@ cr.define('gpu', function() { Overlay.prototype.onVisibleChanged_); return { - Overlay : Overlay + Overlay: Overlay }; -});
\ No newline at end of file +}); diff --git a/chrome/browser/resources/gpu_internals/overlay_test.html b/chrome/browser/resources/gpu_internals/overlay_test.html index 34de09c..c06572c 100644 --- a/chrome/browser/resources/gpu_internals/overlay_test.html +++ b/chrome/browser/resources/gpu_internals/overlay_test.html @@ -1,4 +1,9 @@ <!DOCTYPE html> +<!-- +Copyright (c) 2010 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> <html> <head> <title></title> diff --git a/chrome/browser/resources/gpu_internals/simulated_trace_data.js b/chrome/browser/resources/gpu_internals/simulated_trace_data.js new file mode 100644 index 0000000..70625c4 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/simulated_trace_data.js @@ -0,0 +1,30 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function getTimelineTestData1() { + return [{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859659826,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859659832,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859661997,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859662000,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859664086,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859664090,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859666156,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859666159,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859667975,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859667978,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512859668808,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859669128,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512859669130,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512859669509,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860854410,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860854414,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860854722,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860854724,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860854973,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860854974,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860855225,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860855227,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860855487,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860855488,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860855769,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860855770,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860960145,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860960149,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860960452,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860960454,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860960728,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860960729,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860961020,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860961021,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860961699,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860961701,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860962036,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860962038,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860962310,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860962312,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860962624,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860962626,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860963445,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860963448,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860963825,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860963826,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964016,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964017,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964198,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964200,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964379,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964381,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964683,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512860964685,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512860968496,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861066150,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861066155,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861069423,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861069426,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861071995,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861071997,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861079859,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861079862,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861080180,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861080182,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861080483,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861080485,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861080807,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861080809,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861081125,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861081127,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861081420,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861081422,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861081745,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861081747,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082149,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082151,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082364,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082366,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082604,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082606,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082881,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861082883,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083158,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083160,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083428,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083431,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083701,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083703,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083976,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861083978,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084251,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084254,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084498,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084500,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084718,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084720,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084930,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861084931,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085141,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085142,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085364,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085365,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085574,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085576,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085786,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085787,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085994,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861085996,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861086193,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861086194,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861086406,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861086408,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861086885,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861086887,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861087571,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861087573,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861088016,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861088018,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861088449,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861088451,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861088892,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861088895,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861089277,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861089279,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861090075,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861090077,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861119271,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861119275,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861119840,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861119843,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861120264,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861120267,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861120680,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861120683,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861121136,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861121138,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861131512,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861131515,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861131905,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861131907,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861132609,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861132612,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861133713,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861133715,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861134096,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861134098,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861135157,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861135159,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861135955,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861135958,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861138448,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861138450,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861138694,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861138696,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861138934,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861138936,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861139748,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861139750,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861140730,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861140732,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861143608,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861143610,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861143892,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861143894,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861144190,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861144192,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861144491,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861144493,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861145536,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861145538,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861146520,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861146521,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861149321,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861149323,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861149636,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861149638,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861149938,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861149939,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861150287,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861150288,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861151335,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861151337,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861152425,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861152428,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861155587,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861155590,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861156941,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861156943,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861158400,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861158402,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861162165,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861162167,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861162531,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861162533,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861162793,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861162795,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163001,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163002,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163255,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163257,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163526,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163528,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163826,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861163828,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861164117,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861164119,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861164994,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861164996,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861165279,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861165281,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861165583,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861165585,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861165851,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861165853,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861166666,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861166668,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861167559,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861167561,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170074,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170076,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170361,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170363,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170586,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170587,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170825,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861170827,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861171671,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861171673,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861172583,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861172585,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861175023,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861175025,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861175296,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861175298,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861175524,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861175526,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861231280,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861231285,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861242845,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861242850,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861244446,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861244450,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861246001,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861246004,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861247490,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861247495,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861247769,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861248036,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861248039,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861250274,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861261691,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861261694,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861263124,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861263127,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861263806,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861263809,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861265905,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861265908,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861266399,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861266402,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861266871,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861266874,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861268107,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861268109,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861268208,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861268694,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861268696,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861269384,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861302618,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861302622,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861303358,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861303360,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861303731,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861303733,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861304304,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861304307,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861304417,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861304733,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861304735,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861304986,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861312990,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861312992,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861313636,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861313638,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861314025,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861314027,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861315249,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861315251,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861315344,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861315681,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861315684,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861315979,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861458080,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861458084,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861458278,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861610521,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861610526,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861611363,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861611364,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861611802,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861611804,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861612541,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861612543,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861612620,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861612909,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861612911,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861613127,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861646792,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861646796,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861647481,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861647483,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861647858,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861647860,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861648802,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861648804,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861648894,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861649232,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861649234,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861649527,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861701828,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861701832,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861702646,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861702649,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861745582,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861745586,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861747100,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861747103,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861747833,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861747835,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861750695,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861750697,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861750797,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861751158,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861751160,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861751459,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861910507,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861910511,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861910713,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861953912,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861953915,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861954665,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861956699,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512861956703,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512861956903,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862210647,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862210652,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862214339,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862214343,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862214746,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862214748,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862216914,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862216918,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862217345,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862217347,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862219350,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862219352,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862219805,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862219808,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862222185,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862222188,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862222652,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862222654,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862400629,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862400634,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862405957,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862405959,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862407936,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862407938,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862408751,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862408754,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862409891,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862409893,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862409992,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862410367,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862410369,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862410614,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862412227,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862412230,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862414388,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862414391,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862414846,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862414849,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862415249,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862415251,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862416157,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862416159,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862416241,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862416545,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862416547,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862416884,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862417888,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862417890,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862419625,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862419627,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862419891,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862419893,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862420117,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862420119,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862420937,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862420940,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862421013,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862421406,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862421409,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862421669,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862422741,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862422744,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862424447,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862424449,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862424821,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862424823,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862425176,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862425178,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862426145,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862426147,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862426230,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862426521,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862426523,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862426785,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862427686,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862427688,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862429351,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862429353,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862429689,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862429692,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862430007,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862430010,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862430874,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862430876,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862430953,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862431274,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862431277,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862431487,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862432403,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862432405,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862434036,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862434038,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862434321,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862434323,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862434587,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862434589,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862435401,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862435403,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862435466,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862435720,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862435721,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862435917,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862436907,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862436909,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862438515,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862438517,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862438897,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862438899,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862439147,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862439148,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862439965,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862439967,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862440039,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862440336,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862440340,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862440529,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862441441,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862441443,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862442859,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862442861,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862443097,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862443098,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862443323,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862443325,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862444056,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862444058,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862444214,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862444497,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862444499,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862444689,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862445523,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862445526,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862447035,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862447037,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862447271,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862447273,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862447498,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862447500,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862448254,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862448256,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862448342,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862448627,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862448629,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862448933,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862449789,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862449790,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862451294,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862451296,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862451555,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862451557,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862451791,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862451793,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862452725,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862452728,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862452808,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862453085,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862453086,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862453297,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862454099,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862454101,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862455517,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862455519,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862455771,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862455773,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862456016,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862456017,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862456715,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862456717,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862456777,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862457045,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862457046,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862457253,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862458037,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862458039,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862459485,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862459487,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862459714,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862459716,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862459935,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862459937,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862460913,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862460915,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862460976,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862461238,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862461240,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862461492,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862462272,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862462273,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862463734,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862463736,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862464000,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862464002,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862464241,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862464242,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862464935,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862464936,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862464997,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862465259,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862465261,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862465496,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862466362,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862466364,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862467926,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862467928,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862468252,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862468257,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862468520,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862468522,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862469227,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862469229,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862469292,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862469575,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862469577,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862469822,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862470614,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862470616,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862472157,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862472159,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862472401,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862472403,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862472662,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862472663,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862473389,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862473391,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862473452,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862473748,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862473750,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862473966,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862474768,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862474770,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862476288,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862476289,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862476572,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862476574,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862476838,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862476840,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862477558,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862477560,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862477620,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862477906,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862477908,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862478167,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862478935,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862478938,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862480440,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862480442,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862480816,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862480818,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862481165,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862481167,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862482011,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862482015,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862482130,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862482427,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862482429,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862482628,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862483342,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862483344,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862484730,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862484732,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862484921,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862484923,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862485100,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862485101,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862485742,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862485743,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862485806,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862485990,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862485991,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862486252,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862486959,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862486961,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862488353,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862488355,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862488563,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862488565,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862488762,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862488764,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862489429,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862489430,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862489492,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862489721,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862489723,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862489890,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862490726,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862490729,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862492323,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862492325,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862492582,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862492584,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862492783,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862492785,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862493567,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862493569,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862493638,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862493846,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862493848,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862494051,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862494923,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862494925,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862496570,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862496572,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862496782,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862496783,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862496974,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862496976,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862497689,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862497691,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862497755,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862497969,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862497971,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862498158,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862498992,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862498994,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862500550,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862500552,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862500772,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862500774,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862500974,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862500975,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862501732,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862501734,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862501798,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862502035,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862502037,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862502262,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862503178,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862503180,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862504846,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862504848,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862505080,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862505082,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862505302,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862505304,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862506047,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862506049,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862506116,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862506373,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862506375,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862506562,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862507413,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862507415,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862508957,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862508959,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862509187,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862509189,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862509405,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862509407,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862510145,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862510147,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862510213,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862510464,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862510466,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862510647,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862511819,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862511821,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862513366,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862513368,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862513596,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862513598,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862513817,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862513819,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862514563,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862514565,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862514631,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862514877,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862514879,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862515060,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862515915,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862515917,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862517500,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862517502,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862517817,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862517819,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862518081,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862518083,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862518823,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862518825,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862518895,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862519134,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862519136,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862519315,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862520377,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862520379,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862522032,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862522034,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862522263,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862522265,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862522473,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862522475,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862523208,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862523210,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862523278,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862523526,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862523528,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862523714,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862524495,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862524497,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862526068,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862526070,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862526363,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862526365,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862527797,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862527799,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862528552,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862528554,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862528621,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862528882,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862528884,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862529068,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862529885,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862529888,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862531473,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862531475,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862531714,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862531716,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862531976,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862531978,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862532729,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862532731,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862532798,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862533055,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862533057,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862533246,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862534120,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862534122,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862535724,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862535726,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862535961,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862535963,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862536189,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862536191,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862536962,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862536964,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862537031,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862537285,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862537287,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862537471,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862538313,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862538315,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862539863,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862539865,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862540106,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862540108,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862540354,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862540356,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862541107,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862541109,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862541178,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862541490,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862541492,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862541837,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862542665,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862542668,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862544290,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862544293,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862544680,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862544682,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862544978,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862544980,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862545818,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862545819,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862545904,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862546196,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862546198,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862546472,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862547301,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862547303,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862549023,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862549025,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862549309,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862549311,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862549586,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862549588,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862550415,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862550418,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862550484,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862550797,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862550799,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862550981,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862551904,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862551906,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862554321,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862554325,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862554701,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862554703,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862555042,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862555044,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862555983,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862555985,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862556058,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862556333,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862556335,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862556504,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862557469,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862557471,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862559703,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862559705,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862559999,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862560008,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862560298,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862560301,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862561376,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862561378,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862561476,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862561767,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862561769,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862562092,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862563362,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862563364,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862565187,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862565189,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862565439,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862565441,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862565666,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862565669,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862566538,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862566540,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862566620,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862566890,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862566892,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862567145,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862567909,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862567911,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862569664,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862569667,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862569909,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862569911,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862570137,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862570139,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862570968,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862570970,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862571047,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862571285,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862571287,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862571494,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862572276,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862572278,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862574184,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862574187,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862574443,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862574445,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862574672,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862574674,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862575494,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862575496,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862575574,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862575815,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862575817,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862576020,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862576999,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862577002,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862578872,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862578875,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862579156,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862579158,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862579421,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862579423,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862580363,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862580367,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862580474,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862580735,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862580738,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862581027,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862581860,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862581863,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862594486,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862594489,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862594749,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862594751,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862594997,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862594999,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862595828,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862595830,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862595912,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862596153,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862596155,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862596454,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862597805,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862597807,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862599524,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862599526,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862599844,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862599846,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862600061,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862600062,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862600730,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862600732,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862600798,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862601021,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862601023,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862601210,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862601988,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862601990,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862603510,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862603512,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862603761,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862603763,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862604043,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862604045,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862604926,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862604929,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862605008,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862605330,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862605333,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862605537,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862606517,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862606519,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862608786,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862608789,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862609182,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862609185,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862609556,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862609558,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862610603,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862610606,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862610692,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862611127,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862611129,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862611484,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862612698,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862612701,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862615029,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862615032,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862615427,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862615430,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862615757,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862615759,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862617433,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862617435,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862617507,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862617871,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862617874,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862618218,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862619819,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862619822,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862622072,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862622074,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862622468,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862622471,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862622874,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862622877,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862624048,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862624050,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862624153,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862624551,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862624554,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862624779,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862625924,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862625926,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862628115,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862628117,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862628848,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862628851,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862629258,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862629260,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862630397,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862630400,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862630931,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862631289,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862631291,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862631685,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862632838,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862632841,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862635191,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862635194,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862635522,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862635525,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862635822,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862635825,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862638038,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862638041,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862638253,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862638597,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862638600,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22630,'tid':22630,'ts':2512862638891,'ph':'I','name':'GpuCommandBufferStub::OnSwapBuffers','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862639893,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862639896,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862641935,'ph':'B','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'PERF','pid':22630,'tid':22630,'ts':2512862641938,'ph':'E','name':'GPUProcessor::ProcessCommands','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858147354,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858147358,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858149698,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858149703,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858321033,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858321037,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858322248,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512858322253,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859601588,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859601592,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859614357,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859614361,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859625114,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859625118,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859670017,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859670020,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859670289,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859670291,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859671166,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859671167,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859681396,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859681401,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859681449,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512859681450,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22600,'ts':2512860762219,'ph':'B','name':'GpuProcessHost::Synchronize','args':{'this':'0x0x7fffdcd48400'}},{'cat':'INFO','pid':22574,'tid':22600,'ts':2512860762225,'ph':'E','name':'GpuProcessHost::Synchronize','args':{}},{'cat':'INFO','pid':22574,'tid':22600,'ts':2512860762729,'ph':'B','name':'GpuProcessHost::Synchronize','args':{'this':'0x0x7fffdcd48400'}},{'cat':'INFO','pid':22574,'tid':22600,'ts':2512860762733,'ph':'E','name':'GpuProcessHost::Synchronize','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861187753,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861187758,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861257716,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861257721,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861267861,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861267864,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861269840,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861269844,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861304062,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861304065,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861306142,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861306145,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861314967,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861314970,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861316575,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861316579,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861457706,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861457710,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861458827,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861458830,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861612273,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861612276,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861613641,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861613644,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861648417,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861648420,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861650017,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861650020,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861750333,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861750337,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861752397,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861752400,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861910035,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861910038,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861911277,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861911280,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861953442,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861953447,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861955407,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861955410,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861956433,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861956435,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861957536,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512861957539,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862409596,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862409599,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862411123,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862411125,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862415947,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862415949,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862417376,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862417379,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862420677,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862420679,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862422209,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862422211,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862425896,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862425898,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862427253,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862427256,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862430663,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862430665,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862431971,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862431973,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862435220,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862435222,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862436317,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862436319,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862439787,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862439788,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862440975,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862440977,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862443897,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862443899,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862445069,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862445071,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862448053,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862448054,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862449375,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862449379,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862452473,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862452475,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862453674,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862453677,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862456531,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862456533,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862457617,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862457620,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862460728,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862460729,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862461857,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862461860,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862464754,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862464755,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862465818,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862465821,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862469044,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862469046,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862470215,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862470218,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862473206,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862473208,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862474354,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862474357,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862477374,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862477375,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862478528,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862478530,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862481769,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862481771,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862482962,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862482965,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862485594,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862485596,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862486568,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862486571,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862489280,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862489282,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862490326,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862490329,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862493404,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862493406,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862494510,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862494513,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862497530,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862497532,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862498582,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862498585,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862501573,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862501575,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862502765,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862502767,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862505883,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862505885,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862506999,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862507002,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862509980,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862509982,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862511046,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862511048,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862514400,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862514402,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862515504,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862515506,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862518659,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862518661,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862519820,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862519823,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862523049,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862523051,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862524069,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862524072,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862528382,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862528384,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862529439,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862529441,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862532560,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862532562,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862533641,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862533644,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862536790,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862536792,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862537873,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862537876,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862540917,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862540919,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862542233,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862542235,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862545631,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862545633,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862546843,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862546846,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862550225,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862550228,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862551396,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862551399,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862555772,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862555774,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862556947,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862556951,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862561072,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862561074,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862562896,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862562899,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862566316,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862566319,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862567446,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862567449,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862570786,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862570788,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862571785,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862571788,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862575311,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862575313,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862576492,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862576495,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862580074,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862580076,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862581359,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862581362,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862595576,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862595578,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862596878,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862596881,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862600582,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862600584,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862601589,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862601591,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862604739,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862604741,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862606040,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862606042,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862610322,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862610325,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862612068,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862612072,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862616506,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862616508,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862619218,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862619221,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862623700,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862623703,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862625318,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862625322,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862630074,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862630077,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862632234,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862632238,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862637157,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862637160,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862639318,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862639321,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862645055,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862645058,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862868352,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862868357,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862873551,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862873553,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862874439,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862874440,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862875991,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862875993,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862883445,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862883447,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862884719,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862884722,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862884855,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862884858,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862889119,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862889121,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862890733,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862890736,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862895387,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862895389,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862897046,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862897049,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862901085,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862901087,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862902444,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862902447,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862906318,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862906321,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862907654,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862907657,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862911734,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862911736,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862913269,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862913272,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862917312,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862917314,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862918654,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862918658,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862922559,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862922561,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862924420,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862924423,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862929175,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862929179,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862930664,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862930667,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862934768,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862934771,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862936073,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862936076,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862940080,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862940083,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862941416,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862941419,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862945293,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862945295,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862946705,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862946708,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862950698,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862950700,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862952212,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862952215,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862956242,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862956244,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862957878,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862957882,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862962284,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862962286,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862963525,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862963529,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862967433,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862967435,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862968806,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862968809,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862972736,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862972739,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862974130,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862974133,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862978291,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862978293,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862979826,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862979829,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862983826,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862983829,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862985029,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862985032,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862989059,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862989061,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862990540,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862990543,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862994652,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862994656,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862996581,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512862996584,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863000572,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863000575,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863001828,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863001832,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863005787,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863005789,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863006982,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863006985,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863010889,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863010891,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863012255,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863012258,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863016783,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863016786,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863018111,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863018114,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863201833,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863201836,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863203223,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863203225,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863211766,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863211768,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863213073,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863213075,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863216987,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863216989,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863218083,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863218085,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863220816,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863220817,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863221953,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863221956,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863225776,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863225778,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863227106,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863227109,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863231318,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863231321,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863232415,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863232418,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863236362,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863236364,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863237638,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863237641,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863241658,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863241661,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863243055,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863243066,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863246743,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863246745,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863247742,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863247745,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863252410,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863252413,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863253906,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863253909,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863258165,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863258167,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863259848,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863259852,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863264172,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863264174,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863265752,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863265755,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863270291,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863270293,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863271864,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863271868,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863276183,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863276185,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863277759,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863277762,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863282099,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863282102,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863283673,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863283677,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863288039,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863288041,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863289507,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863289510,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863293537,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863293539,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863294850,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863294860,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863298812,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863298815,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863300191,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863300194,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863304501,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863304504,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863305878,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863305881,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863309814,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863309817,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863311376,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863311380,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863315286,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863315289,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863316679,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863316683,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863320610,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863320612,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863321928,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863321932,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863326069,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863326072,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863327318,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863327321,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863331190,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863331192,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863332704,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863332708,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863336702,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863336704,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863338016,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863338019,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863342309,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863342311,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863344126,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863344129,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863348080,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863348082,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863349868,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863349871,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863354562,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863354565,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863355851,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863355854,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863359618,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863359620,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863360847,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863360850,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863365761,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863365763,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863367362,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863367365,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863371599,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863371603,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863373311,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863373314,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863377626,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863377628,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863379234,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863379237,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863383612,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863383614,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863384941,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863384945,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863395031,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863395033,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863396400,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863396403,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863402357,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863402360,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863403644,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863403647,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863410488,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863410498,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863412571,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512863412574,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512864352992,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512864352996,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865806055,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865806059,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865807681,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865807685,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865909928,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865909930,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865911625,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512865911629,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866387305,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866387309,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866399731,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866399736,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866665451,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866665454,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866666767,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866666771,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866803213,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866803216,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866804363,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866804367,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866824855,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866824857,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866826513,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512866826516,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867168291,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867168297,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867170054,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867170059,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867177879,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867177882,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867179353,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867179364,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867235124,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867235127,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867236008,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867236011,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867612778,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867612782,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867614104,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867614108,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867693043,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867693046,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867694016,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512867694020,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512868073134,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512868073138,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512868075167,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512868075171,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512869989009,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512869989014,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512869990208,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512869990211,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870052931,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870052936,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870054052,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870054055,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870585043,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870585047,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870586297,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870586300,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870657605,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870657607,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870659056,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870659060,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870671494,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870671496,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870672777,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870672780,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870679378,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870679381,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870680888,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870680892,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870687790,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870687792,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870689337,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870689341,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870694092,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870694095,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870695568,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870695572,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870699811,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870699813,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870701509,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870701513,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870703883,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870703887,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870705563,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870705567,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870709738,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870709742,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870711331,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870711334,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870715538,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870715540,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870716694,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870716698,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870719500,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870719502,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870720852,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870720856,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870725592,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870725595,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870726985,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870726989,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870729443,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870729445,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870730746,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870730749,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870735447,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870735450,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870736827,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870736831,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870741433,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870741435,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870743680,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870743684,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870746206,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870746209,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870747822,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870747826,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870749759,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870749761,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870751572,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870751576,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870755581,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870755583,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870756881,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870756885,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870759590,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870759592,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870760859,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870760862,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870764055,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870764058,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870765303,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870765307,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870767448,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870767450,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870768724,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870768728,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870771496,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870771504,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870772849,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870772852,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870775380,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870775382,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870776624,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870776627,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870779506,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870779509,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870780754,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870780757,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870783433,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870783435,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870784713,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870784717,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870787620,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870787622,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870788943,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870788947,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870790053,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870790056,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870791388,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870791392,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870793798,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870793800,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870795354,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870795357,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870797407,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870797409,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870798711,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870798714,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870801383,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870801385,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870803000,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870803003,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870804104,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870804112,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870805604,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870805608,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870807567,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870807569,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870808954,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870808957,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870811596,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870811598,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870813145,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870813149,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870814252,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870814254,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870815659,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870815662,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870817601,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870817603,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870818967,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870818970,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870821565,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870821567,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870823106,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870823110,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870825505,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870825507,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870826963,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870826966,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870829537,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870829540,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870831273,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870831277,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870832697,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870832699,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870834082,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870834085,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870835997,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870836000,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870837432,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870837436,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870839501,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870839503,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870840930,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870840934,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870843653,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870843655,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870845445,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870845448,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870851206,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870851209,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870853397,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870853402,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870855346,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870855349,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870856906,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870856909,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870858065,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870858067,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870859474,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870859477,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870863593,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870863596,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870865273,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870865277,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870867712,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870867714,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870869607,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870869610,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870875603,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870875605,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870877255,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870877259,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870883756,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870883759,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870885581,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870885591,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870889746,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870889749,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870891579,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870891583,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870899778,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870899780,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870901787,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870901791,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870915746,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870915748,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870917368,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870917372,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870927676,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870927679,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870929278,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870929282,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870943619,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870943621,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870945431,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870945435,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870959779,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870959781,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870961597,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870961600,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870989918,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870989920,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870991664,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512870991668,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512871897558,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512871897562,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512871899071,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512871899075,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872259505,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872259509,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872280706,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872280724,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872383491,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872383494,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872384934,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872384938,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872386000,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872386003,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872387492,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872387495,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872441821,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872441825,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872443527,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512872443531,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873123531,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873123535,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873124829,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873124833,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873439537,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873439540,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873440729,'ph':'B','name':'RenderWidget::DoDeferredUpdate','args':{}},{'cat':'INFO','pid':22574,'tid':22605,'ts':2512873440731,'ph':'E','name':'RenderWidget::DoDeferredUpdate','args':{}}]; +} + +function getTimelineTestData2() { + return [ + {'cat':'PERF','pid':22630,'tid':22630,'ts':826,'ph':'B','name':'A','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':827,'ph':'B','name':'Asub','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':828,'ph':'E','name':'Asub','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':829,'ph':'B','name':'Asub','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':832,'ph':'E','name':'Asub','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':833,'ph':'E','name':'','args':{}}, + + {'cat':'PERF','pid':22630,'tid':22630,'ts':840,'ph':'B','name':'A','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':848,'ph':'E','name':'A','args':{}}, + + {'cat':'PERF','pid':22630,'tid':22630,'ts':850,'ph':'B','name':'B','args':{}}, + {'cat':'PERF','pid':22630,'tid':22630,'ts':854,'ph':'E','name':'B','args':{}}, + + {'cat':'PERF','pid':22630,'tid':22631,'ts':827,'ph':'B','name':'A','args':{}}, + {'cat':'PERF','pid':22630,'tid':22631,'ts':854,'ph':'E','name':'A','args':{}} + ]; + + +} + diff --git a/chrome/browser/resources/gpu_internals/sorted_array_utils.js b/chrome/browser/resources/gpu_internals/sorted_array_utils.js new file mode 100644 index 0000000..edb4349 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/sorted_array_utils.js @@ -0,0 +1,157 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview Helper functions for doing intersections and iteration + * over sorted arrays and intervals. + * + */ +cr.define('gpu', function() { + /** + * Finds the first index in the array whose value is >= loVal. + * + * The key for the search is defined by the mapFn. This array must + * be prearranged such that ary.map(mapFn) would also be sorted in + * ascending order. + * + * @param {Array} ary An array of arbitrary objects. + * @param {function():*} mapFn Callback that produces a key value + * from an element in ary. + * @param {number} loVal Value for which to search. + * @return {Number} Offset o into ary where all ary[i] for i <= o + * are < loVal, or ary.length if loVal is greater than all elements in + * the array. + */ + function findLowIndexInSortedArray(ary, mapFn, loVal) { + if (ary.length == 0) + return 1; + + var low = 0; + var high = ary.length - 1; + var i, comparison; + var hitPos = -1; + while (low <= high) { + i = Math.floor((low + high) / 2); + comparison = mapFn(ary[i]) - loVal; + if (comparison < 0) { + low = i + 1; continue; + } else if (comparison > 0) { + high = i - 1; continue; + } else { + hitPos = i; + high = i - 1; + } + } + // return where we hit, or failing that the low pos + return hitPos != -1 ? hitPos : low; + } + + /** + * Finds an index in an array of intervals that either + * intersects the provided loVal, or if no intersection is found, + * the index of the first interval whose start is > loVal. + * + * The array of intervals is defined implicitly via two mapping functions + * over the provided ary. mapLoFn determines the lower value of the interval, + * mapWidthFn the width. Intersection is lower-inclusive, e.g. [lo,lo+w). + * + * The array of intervals formed by this mapping must be non-overlapping and + * sorted in ascending order by loVal. + * + * @param {Array} ary An array of objects that can be converted into sorted + * nonoverlapping ranges [x,y) using the mapLoFn and mapWidth. + * @param {function():*} mapLoFn Callback that produces the low value for the + * interval represented by an element in the array. + * @param {function():*} mapLoFn Callback that produces the width for the + * interval represented by an element in the array. + * @param {number} loVal The low value for the search. + * @return {Number} An index in the array that intersects or is first-above + * loVal, -1 if none found and loVal is below than all the intervals, + * ary.length if loVal is greater than all the intervals. + */ + function findLowIndexInSortedIntervals(ary, mapLoFn, mapWidthFn, loVal) { + var first = findLowIndexInSortedArray(ary, mapLoFn, loVal); + if (first == 0) { + if (loVal >= mapLoFn(ary[0]) && + loVal < mapLoFn(ary[0] + mapWidthFn(ary[0]))) { + return 0; + } else { + return -1; + } + } else if (first <= ary.length && + loVal >= mapLoFn(ary[first - 1]) && + loVal < mapLoFn(ary[first - 1]) + mapWidthFn(ary[first - 1])) { + return first - 1; + } else { + return ary.length; + } + } + + /** + * Calls cb for all intervals in the implicit array of intervals + * defnied by ary, mapLoFn and mapHiFn that intersect the range + * [loVal,hiVal) + * + * This function uses the same scheme as findLowIndexInSortedArray + * to define the intervals. The same restrictions on sortedness and + * non-overlappingness apply. + * + * @param {Array} ary An array of objects that can be converted into sorted + * nonoverlapping ranges [x,y) using the mapLoFn and mapWidth. + * @param {function():*} mapLoFn Callback that produces the low value for the + * interval represented by an element in the array. + * @param {function():*} mapLoFn Callback that produces the width for the + * interval represented by an element in the array. + * @param {number} The low value for the search, inclusive. + * @param {number} loVal The high value for the search, non inclusive. + * @param {function():*} cb The function to run for intersecting intervals. + */ + function iterateOverIntersectingIntervals(ary, mapLoFn, mapWidthFn, loVal, + hiVal, cb) { + if (loVal > hiVal) return; + + var i = findLowIndexInSortedArray(ary, mapLoFn, loVal); + if (i == -1) { + return; + } + if (i > 0) { + var hi = mapLoFn(ary[i - 1]) + mapWidthFn(ary[i - 1]); + if (hi >= loVal) { + cb(ary[i - 1]); + } + } + if (i == ary.length) { + return; + } + + for(var n = ary.length; i < n; i++) { + var lo = mapLoFn(ary[i]); + if (lo >= hiVal) + break; + cb(ary[i]); + } + } + + /** + * Non iterative version of iterateOverIntersectingIntervals. + * + * @return {Array} Array of elements in ary that intersect loVal, hiVal. + */ + function getIntersectingIntervals(ary, mapLoFn, mapWidthFn, loVal, hiVal) { + var tmp = []; + iterateOverIntersectingIntervals(ary, mapLoFn, mapWidthFn, loVal, hiVal, + function(d) { + tmp.push(d); + }); + return tmp; + } + + return { + findLowIndexInSortedArray: findLowIndexInSortedArray, + findLowIndexInSortedIntervals: findLowIndexInSortedIntervals, + iterateOverIntersectingIntervals: iterateOverIntersectingIntervals, + getIntersectingIntervals: getIntersectingIntervals + }; +}); diff --git a/chrome/browser/resources/gpu_internals/tab_control.css b/chrome/browser/resources/gpu_internals/tab_control.css index 4d7b7f8..29c7538 100644 --- a/chrome/browser/resources/gpu_internals/tab_control.css +++ b/chrome/browser/resources/gpu_internals/tab_control.css @@ -28,7 +28,6 @@ found in the LICENSE file. -webkit-box-flex: 1; display: -webkit-box; -webkit-box-orient: vertical; - -webkit-box-pack: stretch; overflow: auto; } diff --git a/chrome/browser/resources/gpu_internals/tab_control.js b/chrome/browser/resources/gpu_internals/tab_control.js index 6c4a120..dcd3e0a 100644 --- a/chrome/browser/resources/gpu_internals/tab_control.js +++ b/chrome/browser/resources/gpu_internals/tab_control.js @@ -1,8 +1,9 @@ // Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. + + /** - * * @fileoverview This implements a tab control. * * An individual tab within a tab control is, unsurprisingly, a Tab. @@ -36,7 +37,7 @@ cr.define('gpu', function() { Tab.prototype = { __proto__: HTMLDivElement.prototype, - decorate : function() { + decorate: function() { } }; @@ -83,7 +84,7 @@ cr.define('gpu', function() { this.onTabChanged_(); }, - onTabChanged_ : function(e) { + onTabChanged_: function(e) { if (this.tab_) { this.textContent = this.tab_.label; this.selected = this.tab_.selected; @@ -109,7 +110,7 @@ cr.define('gpu', function() { TabControl.prototype = { __proto__: HTMLDivElement.prototype, - selectedTab_ : null, + selectedTab_: null, /** * Initializes the tab control element. @@ -137,7 +138,7 @@ cr.define('gpu', function() { /** * Adds an element to the tab control. */ - addTab : function(tab) { + addTab: function(tab) { if (tab.parentNode == this.tabs_) throw Error('Tab is already part of this control.'); if (!(tab instanceof Tab)) @@ -160,7 +161,7 @@ cr.define('gpu', function() { * Removes a tab from the tab control. * changing the selected tab if needed. */ - removeTab : function(tab) { + removeTab: function(tab) { if (tab.parentNode != this.tabs_) throw new Error('Tab is not attached to this control.'); @@ -176,7 +177,7 @@ cr.define('gpu', function() { this.tabs_.removeChild(tab); tab.tabStripButton_.parentNode.removeChild( - tab.tabStripButton_); + tab.tabStripButton_); }, /** @@ -191,7 +192,7 @@ cr.define('gpu', function() { */ set selectedTab(tab) { if (tab.parentNode != this.tabs_) - throw Error("Tab is not part of this TabControl."); + throw Error('Tab is not part of this TabControl.'); tab.selected = true; }, @@ -243,7 +244,7 @@ cr.define('gpu', function() { }; return { - Tab : Tab, + Tab: Tab, TabControl: TabControl }; -});
\ No newline at end of file +}); diff --git a/chrome/browser/resources/gpu_internals/timeline.css b/chrome/browser/resources/gpu_internals/timeline.css new file mode 100644 index 0000000..3de191b --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline.css @@ -0,0 +1,51 @@ +/* +Copyright (c) 2011 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +*/ +.timeline { + -webkit-user-select: none; +} + +.timeline-track { + display: -webkit-box; + -webkit-box-orient: horizontal; + -webkit-box-align: stretch; + background-color: white; + padding-right: 5px; + margin: 0; + padding: 0; + height: 18px; +} + +.timeline-drag-box-hidden { + display: none; +} + +.timeline-drag-box { + position: fixed; + background-color: rgba(0, 0, 255, 0.25); + border: 1px solid rgb(0, 0, 96); +} + +.timeline-track:not(:first-child) { + border-top: 1px solid #D0D0D0 +} + +.timeline-track-title { + text-align: right; + overflow: visible; + width: 150px; + padding-right: 5px; +} + +.timeline-track-canvas-container { + -webkit-box-flex: 1; + width: 100%; +} + +.timeline-track-canvas { + -webkit-box-flex: 1; + width: 100%; + height: 100%; +} diff --git a/chrome/browser/resources/gpu_internals/timeline.js b/chrome/browser/resources/gpu_internals/timeline.js new file mode 100644 index 0000000..997cb9e --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline.js @@ -0,0 +1,421 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview Interactive visualizaiton of TimelineModel objects + * based loosely on gantt charts. Each thread in the TimelineModel is given a + * set of TimelineTracks, one per subrow in the thread. The Timeline class + * acts as a controller, creating the individual tracks, while TimelineTracks + * do actual drawing. + * + * Visually, the Timeline produces (prettier) visualizations like the following: + * Thread1: AAAAAAAAAA AAAAA + * BBBB BB + * Thread2: CCCCCC CCCCC + * + */ +cr.define('gpu', function() { + + /** + * The TimelineViewport manages the transform used for navigating + * within the timeline. It is a simple transform: + * x' = (x+pan) * scale + * + * The timeline code tries to avoid directly accessing this transform, + * instead using this class to do conversion between world and view space, + * as well as the math for centering the viewport in various interesting + * ways. + * + * @constructor + * @extends {cr.EventTarget} + */ + function TimelineViewport() { + this.scaleX_ = 1; + this.panX_ = 0; + } + + TimelineViewport.prototype = { + __proto__: cr.EventTarget.prototype, + + get scaleX() { + return this.scaleX_; + }, + set scaleX(s) { + var changed = this.scaleX_ != s; + if (changed) { + this.scaleX_ = s; + cr.dispatchSimpleEvent(this, 'change'); + } + }, + + get panX() { + return this.panX_; + }, + set panX(p) { + var changed = this.panX_ != p; + if (changed) { + this.panX_ = p; + cr.dispatchSimpleEvent(this, 'change'); + } + }, + + setPanAndScale: function(p, s) { + var changed = this.scaleX_ != s || this.panX_ != p; + if (changed) { + this.scaleX_ = s; + this.panX_ = p; + cr.dispatchSimpleEvent(this, 'change'); + } + }, + + xWorldToView: function(x) { + return (x + this.panX_) * this.scaleX_; + }, + + xWorldVectorToView: function(x) { + return x * this.scaleX_; + }, + + xViewToWorld: function(x) { + return (x / this.scaleX_) - this.panX_; + }, + + xViewVectorToWorld: function(x) { + return x / this.scaleX_; + }, + + xPanWorldPosToViewPos: function(worldX, viewX, viewWidth) { + if (typeof viewX == 'string') { + if (viewX == 'left') { + viewX = 0; + } else if (viewX == 'center') { + viewX = viewWidth / 2; + } else if (viewX == 'right') { + viewX = viewWidth - 1; + } else { + throw Error('unrecognized string for viewPos. left|center|right'); + } + } + this.panX = (viewX / this.scaleX_) - worldX; + }, + + applyTransformToCanavs: function(ctx) { + ctx.transform(this.scaleX_, 0, 0, 1, this.panX_ * this.scaleX_, 0); + } + }; + + /** + * Renders a TimelineModel into a div element, making one + * TimelineTrack for each subrow in each thread of the model, managing + * overall track layout, and handling user interaction with the + * viewport. + * + * @constructor + * @extends {HTMLDivElement} + */ + Timeline = cr.ui.define('div'); + + Timeline.prototype = { + __proto__: HTMLDivElement.prototype, + + model_: null, + + decorate: function() { + this.classList.add('timeline'); + this.needsViewportReset_ = false; + + this.viewport_ = new TimelineViewport(); + this.viewport_.addEventListener('change', this.invalidate.bind(this)); + + this.invalidatePending_ = false; + + this.tracks_ = this.ownerDocument.createElement('div'); + this.tracks_.invalidate = this.invalidate.bind(this); + this.appendChild(this.tracks_); + + this.dragBox_ = this.ownerDocument.createElement('div'); + this.dragBox_.className = 'timeline-drag-box timeline-drag-box-hidden'; + this.appendChild(this.dragBox_); + + // The following code uses a setInterval to monitor the timeline control + // for size changes. This is so that we can keep the canvas' bitmap size + // correctly synchronized with its presentation size. + // TODO(nduca): detect this in a more efficient way, e.g. iframe hack. + this.lastSize_ = this.clientWidth + 'x' + this.clientHeight; + this.ownerDocument.defaultView.setInterval(function() { + var curSize = this.clientWidth + 'x' + this.clientHeight; + if (this.clientWidth && curSize != this.lastSize_) { + this.lastSize_ = curSize; + this.onResize(); + } + }.bind(this), 250); + + document.addEventListener('keypress', this.onKeypress_.bind(this)); + this.addEventListener('mousedown', this.onMouseDown_.bind(this)); + this.addEventListener('mousemove', this.onMouseMove_.bind(this)); + this.addEventListener('mouseup', this.onMouseUp_.bind(this)); + this.lastMouseViewPos_ = {x: 0, y: 0}; + + this.selection_ = []; + }, + + get model() { + return this.model_; + }, + + set model(model) { + if (!model) + throw Error('Model cannot be null'); + if (this.model) { + throw Error('Cannot set model twice.'); + } + this.model_ = model; + + // Create tracks. + this.tracks_.textContent = ''; + var threads = model.getAllThreads(); + for (var tI = 0; tI < threads.length; tI++) { + var thread = threads[tI]; + for (var srI = 0; srI < thread.subRows.length; ++srI) { + var track = document.createElement('div'); + cr.ui.decorate(track, gpu.TimelineTrack); + track.viewport = this.viewport_; + if (srI == 0) + track.heading = thread.parent.pid + ': ' + thread.tid + ': '; + else + track.heading = ''; + track.slices = thread.subRows[srI]; + track.thread = thread; + this.tracks_.appendChild(track); + } + } + + this.needsViewportReset_ = true; + }, + + invalidate: function() { + if (this.invalidatePending_) + return; + this.invalidatePending_ = true; + window.setTimeout(function() { + this.invalidatePending_ = false; + this.redrawAllTracks_(); + }.bind(this), 0); + }, + + onResize: function() { + for (var i = 0; i < this.tracks_.children.length; ++i) { + var track = this.tracks_.children[i]; + track.onResize(); + } + }, + + redrawAllTracks_: function() { + if (this.needsViewportReset_ && this.clientWidth != 0) { + this.needsViewportReset_ = false; + console.log('viewport was reset.'); + /* update viewport */ + var rangeTimestamp = this.model_.maxTimestamp - + this.model_.minTimestamp; + var w = this.tracks_.firstChild.getCanvasWidth(); + var scaleX = w / rangeTimestamp; + var panX = -this.model_.minTimestamp; + this.viewport_.setPanAndScale(panX, scaleX); + } + for (var i = 0; i < this.tracks_.children.length; ++i) { + this.tracks_.children[i].redraw(); + } + }, + + updateChildViewports_: function() { + for (var cI = 0; cI < this.tracks_.children.length; ++cI) { + var child = this.tracks_.children[cI]; + child.setViewport(this.panX, this.scaleX); + } + }, + + onKeypress_: function(e) { + var vp = this.viewport_; + if (this.firstCanvas) { + var viewWidth = this.firstCanvas.clientWidth; + var curMouseV, curCenterW; + switch (event.keyCode) { + case 101: // e + var vX = this.lastMouseViewPos_.x; + var wX = vp.xViewToWorld(this.lastMouseViewPos_.x); + var distFromCenter = vX - (viewWidth / 2); + var percFromCenter = distFromCenter / viewWidth; + var percFromCenterSq = percFromCenter * percFromCenter; + vp.xPanWorldPosToViewPos(wX, 'center', viewWidth); + break; + case 119: // w + curMouseV = this.lastMouseViewPos_.x; + curCenterW = vp.xViewToWorld(curMouseV); + vp.scaleX = vp.scaleX * 1.5; + vp.xPanWorldPosToViewPos(curCenterW, curMouseV, viewWidth); + break; + case 115: // s + curMouseV = this.lastMouseViewPos_.x; + curCenterW = vp.xViewToWorld(curMouseV); + vp.scaleX = vp.scaleX / 1.5; + vp.xPanWorldPosToViewPos(curCenterW, curMouseV, viewWidth); + break; + case 87: // W + curMouseV = this.lastMouseViewPos_.x; + curCenterW = vp.xViewToWorld(curMouseV); + vp.scaleX = vp.scaleX * 10; + vp.xPanWorldPosToViewPos(curCenterW, curMouseV, viewWidth); + break; + case 83: // S + curMouseV = this.lastMouseViewPos_.x; + curCenterW = vp.xViewToWorld(curMouseV); + vp.scaleX = vp.scaleX / 10; + vp.xPanWorldPosToViewPos(curCenterW, curMouseV, viewWidth); + break; + case 97: // a + vp.panX += vp.xViewVectorToWorld(viewWidth * 0.1); + break; + case 100: // d + vp.panX -= vp.xViewVectorToWorld(viewWidth * 0.1); + break; + case 65: // A + vp.panX += vp.xViewVectorToWorld(viewWidth * 0.5); + break; + case 68: // D + vp.panX -= vp.xViewVectorToWorld(viewWidth * 0.5); + break; + } + } + }, + + get selection() { + return this.selection_; + }, + + get firstCanvas() { + if (this.tracks_.firstChild) + return this.tracks_.firstChild.canvas; + }, + + showDragBox_: function() { + this.dragBox_.classList.remove('timeline-drag-box-hidden'); + }, + + hideDragBox_: function() { + this.dragBox_.classList.add('timeline-drag-box-hidden'); + }, + + setDragBoxPosition_: function(eDown, eCur) { + var loX = Math.min(eDown.clientX, eCur.clientX); + var hiX = Math.max(eDown.clientX, eCur.clientX); + var loY = Math.min(eDown.clientY, eCur.clientY); + var hiY = Math.max(eDown.clientY, eCur.clientY); + + this.dragBox_.style.left = loX + 'px'; + this.dragBox_.style.top = loY + 'px'; + this.dragBox_.style.width = hiX - loX + 'px'; + this.dragBox_.style.height = hiY - loY + 'px'; + + var canv = this.firstCanvas; + var loWX = this.viewport_.xViewToWorld(loX - canv.offsetLeft); + var hiWX = this.viewport_.xViewToWorld(hiX - canv.offsetLeft); + var e = new cr.Event('selectionChanging'); + e.loWX = loWX; + e.hiWX = hiWX; + this.dispatchEvent(e); + }, + + onMouseDown_: function(e) { + var canv = this.firstCanvas; + var pos = { + x: e.clientX - canv.offsetLeft, + y: e.clientY - canv.offsetTop + }; + var wX = this.viewport_.xViewToWorld(pos.x); + + // Update the drag box position + this.showDragBox_(); + this.setDragBoxPosition_(e, e); + this.dragBeginEvent_ = e; + e.preventDefault(); + }, + + onMouseMove_: function(e) { + if (!this.firstCanvas) + return; + var canv = this.firstCanvas; + var pos = { + x: e.clientX - canv.offsetLeft, + y: e.clientY - canv.offsetTop + }; + + // Remember position. Used during keyboard zooming. + this.lastMouseViewPos_ = pos; + + // Update the drag box + if (this.dragBeginEvent_) { + this.setDragBoxPosition_(this.dragBeginEvent_, e); + } + }, + + onMouseUp_: function(e) { + var i; + if (this.dragBeginEvent_) { + // Stop the dragging. + this.hideDragBox_(); + var eDown = this.dragBeginEvent_; + this.dragBeginEvent_ = null; + + // Figure out extents of the drag. + var loX = Math.min(eDown.clientX, e.clientX); + var hiX = Math.max(eDown.clientX, e.clientX); + var loY = Math.min(eDown.clientY, e.clientY); + var hiY = Math.max(eDown.clientY, e.clientY); + + // Convert to worldspace. + var canv = this.firstCanvas; + var loWX = this.viewport_.xViewToWorld(loX - canv.offsetLeft); + var hiWX = this.viewport_.xViewToWorld(hiX - canv.offsetLeft); + + // Clear old selection. + for (i = 0; i < this.selection_.length; ++i) { + this.selection_[i].slice.selected = false; + } + // Figure out what has been hit. + var selection = []; + function addHit(type, track, slice) { + selection.push({track: track, slice: slice}); + } + for (i = 0; i < this.tracks_.children.length; ++i) { + var track = this.tracks_.children[i]; + + // Only check tracks that insersect the rect. + var a = Math.max(loY, track.offsetTop); + var b = Math.min(hiY, track.offsetTop + track.offsetHeight); + if (a <= b) { + track.pickRange(loWX, hiWX, addHit); + } + } + // Activate the new selection. + this.selection_ = selection; + cr.dispatchSimpleEvent(this, 'selectionChange'); + for (i = 0; i < this.selection_.length; ++i) { + this.selection_[i].slice.selected = true; + } + this.invalidate(); // Cause tracks to redraw. + } + } + }; + + /** + * The TimelineModel being viewed by the timeline + * @type {TimelineModel} + */ + cr.defineProperty(Timeline, 'model', cr.PropertyKind.JS); + + return { + Timeline: Timeline + }; +}); diff --git a/chrome/browser/resources/gpu_internals/timeline_model.js b/chrome/browser/resources/gpu_internals/timeline_model.js new file mode 100644 index 0000000..2196c11 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline_model.js @@ -0,0 +1,249 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview TimelineModel is a parsed representation of the + * TraceEvents obtained from base/trace_event in which the begin-end + * tokens are converted into a hierarchy of processes, threads, + * subrows, and slices. + * + * The building block of the model is a slice. A slice is roughly + * equivalent to function call executing on a specific thread. As a + * result, slices may have one or more subslices. + * + * A thread contains one or more subrows of slices. Row 0 corresponds to + * the "root" slices, e.g. the topmost slices. Row 1 contains slices that + * are nested 1 deep in the stack, and so on. We use these subrows to draw + * nesting tasks. + * + */ +cr.define('gpu', function() { + /** + * A TimelineSlice represents an interval of time on a given thread + * associated with a specific trace event. For example, + * TRACE_EVENT_BEGIN1("x","myArg", 7) at time=0.1ms + * TRACE_EVENT_END() at time=0.3ms + * Results in a single timeline slice from 0.1 with duration 0.2. + * + * All time units are stored in milliseconds. + * @constructor + */ + function TimelineSlice(title, colorId, start, args) { + this.title = title; + this.start = start; + this.colorId = colorId; + this.args = args; + this.subSlices = []; + } + + TimelineSlice.prototype = { + selected: false, + + duration: undefined, + + get end() { + return this.start + this.duration; + } + }; + + /** + * A TimelineThread stores all the trace events collected for a particular + * thread. We organize the slices on a thread by "subrows," where subrow 0 + * has all the root slices, subrow 1 those nested 1 deep, and so on. + * + * @constructor + */ + function TimelineThread(parent, tid) { + this.parent = parent; + this.tid = tid; + this.subRows = [[]]; + } + + TimelineThread.prototype = { + getSubrow: function(i) { + while (i >= this.subRows.length) + this.subRows.push([]); + return this.subRows[i]; + }, + + updateBounds: function() { + var slices = this.subRows[0]; + if (slices.length != 0) { + this.minTimestamp = slices[0].start; + this.maxTimestamp = slices[slices.length - 1].end; + } else { + this.minTimestamp = undefined; + this.maxTimestamp = undefined; + } + } + + }; + + /** + * The TimelineProcess represents a single process in the + * trace. Right now, we keep this around purely for bookkeeping + * reasons. + * @constructor + */ + function TimelineProcess(pid) { + this.pid = pid; + this.threads = {}; + }; + + TimelineProcess.prototype = { + getThread: function(tid) { + if (!this.threads[tid]) + this.threads[tid] = new TimelineThread(this, tid); + return this.threads[tid]; + } + }; + + /** + * Builds a model from an array of TraceEvent objects. + * @param {Array} events An array of TraceEvents created by + * TraceEvent.ToJSON(). + * @constructor + */ + function TimelineModel(events) { + this.processes = {}; + + this.importEvents(events); + } + + TimelineModel.prototype = { + __proto__: cr.EventTarget.prototype, + + getProcess: function(pid) { + if (!this.processes[pid]) + this.processes[pid] = new TimelineProcess(pid); + return this.processes[pid]; + }, + + /** + * The import takes an array of json-ified TraceEvents and adds them into + * the TimelineModel as processes, threads, and slices. + */ + importEvents: function(events) { + // A ptid is a pid and tid joined together x:y fashion, eg 1024:130 + // The ptid is a unique key for a thread in the trace. + + + // Threadstate + const numColorIds = 12; + function ThreadState(tid) { + this.openSlices = []; + } + var threadStateByPTID = {}; + + var nameToColorMap = {}; + var nextColorId = 0; + function getColor(name) { + if (!(name in nameToColorMap)) { + nameToColorMap[name] = nextColorId; + nextColorId = (nextColorId + 1) % numColorIds; + } + return nameToColorMap[name]; + } + + // Walk through events + for (var eI = 0; eI < events.length; eI++) { + var event = events[eI]; + var ptid = event.pid + ':' + event.tid; + if (!(ptid in threadStateByPTID)) { + threadStateByPTID[ptid] = new ThreadState(); + } + var state = threadStateByPTID[ptid]; + if (event.ph == 'B') { + var colorId = getColor(event.name); + var slice = new TimelineSlice(event.name, colorId, event.ts, + event.args); + state.openSlices.push(slice); + } else if (event.ph == 'E') { + if (state.openSlices.length == 0) { + // Ignore E events that that are unmatched. + continue; + } + var slice = state.openSlices.pop(); + slice.duration = event.ts - slice.start; + + // Store the slice on the right subrow. + var thread = this.getProcess(event.pid).getThread(event.tid); + var subRowIndex = state.openSlices.length; + thread.getSubrow(subRowIndex).push(slice); + + // Add the slice to the subSlices array of its parent. + if (state.openSlices.length) { + var parentSlice = state.openSlices[state.openSlices.length - 1]; + parentSlice.subSlices.push(slice); + } + } else if (event.ph == 'I') { + // TODO(nduca): Implement parsing of immediate events. + console.log('Parsing of I-type events not implemented.'); + } else { + throw new Error('Unrecognized event phase: ' + event.ph + + '(' + event.name + ')'); + } + } + this.updateBounds(); + + this.shiftWorldToMicroseconds(); + + var boost = (this.maxTimestamp - this.minTimestamp) * 0.15; + this.minTimestamp = this.minTimestamp - boost; + this.maxTimestamp = this.maxTimestamp + boost; + }, + + updateBounds: function() { + var wmin = Infinity; + var wmax = -wmin; + var threads = this.getAllThreads(); + for (var tI = 0; tI < threads.length; tI++) { + var thread = threads[tI]; + thread.updateBounds(); + wmin = Math.min(wmin, thread.minTimestamp); + wmax = Math.max(wmax, thread.maxTimestamp); + } + this.minTimestamp = wmin; + this.maxTimestamp = wmax; + }, + + shiftWorldToMicroseconds: function() { + var timeBase = this.minTimestamp; + var threads = this.getAllThreads(); + for (var tI = 0; tI < threads.length; tI++) { + var thread = threads[tI]; + for (var tSR = 0; tSR < thread.subRows.length; tSR++) { + var subRow = thread.subRows[tSR]; + for (var tS = 0; tS < subRow.length; tS++) { + var slice = subRow[tS]; + slice.start = (slice.start - timeBase) / 1000; + slice.duration /= 1000; + } + } + } + + this.updateBounds(); + }, + + getAllThreads: function() { + var threads = []; + for (var pid in this.processes) { + var process = this.processes[pid]; + for (var tid in process.threads) { + threads.push(process.threads[tid]); + } + } + return threads; + } + + }; + + return { + TimelineSlice: TimelineSlice, + TimelineThread: TimelineThread, + TimelineProcess: TimelineProcess, + TimelineModel: TimelineModel + }; +}); diff --git a/chrome/browser/resources/gpu_internals/timeline_track.js b/chrome/browser/resources/gpu_internals/timeline_track.js new file mode 100644 index 0000000..3a4c737 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline_track.js @@ -0,0 +1,186 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview Renders an array of slices into the provided div, + * using a child canvas element. Uses a FastRectRenderer to draw only + * the visible slices. + */ +cr.define('gpu', function() { + + const palletteBase = [ + {r: 0x45, g: 0x85, b: 0xaa}, + {r: 0xdc, g: 0x73, b: 0xa8}, + {r: 0x77, g: 0xb6, b: 0x94}, + {r: 0x23, g: 0xae, b: 0x6e}, + {r: 0x76, g: 0x5d, b: 0x9e}, + {r: 0x48, g: 0xd8, b: 0xfb}, + {r: 0xa9, g: 0xd7, b: 0x93}, + {r: 0x7c, g: 0x2d, b: 0x52}, + {r: 0x69, g: 0xc2, b: 0x75}, + {r: 0x76, g: 0xcf, b: 0xee}, + {r: 0x3d, g: 0x85, b: 0xd1}, + {r: 0x71, g: 0x0b, b: 0x54}]; + + function brighten(c) { + return {r: Math.min(255, c.r + Math.floor(c.r * 0.45)), + g: Math.min(255, c.g + Math.floor(c.g * 0.45)), + b: Math.min(255, c.b + Math.floor(c.b * 0.45))}; + } + function colorToString(c) { + return 'rgb(' + c.r + ',' + c.g + ',' + c.b + ')'; + } + + const selectedIdBoost = palletteBase.length; + + const pallette = palletteBase.concat(palletteBase.map(brighten)). + map(colorToString); + + /** + * Creates a new timeline track div element + * @constructor + * @extends {HTMLDivElement} + */ + TimelineTrack = cr.ui.define('div'); + + TimelineTrack.prototype = { + __proto__: HTMLDivElement.prototype, + + decorate: function() { + this.classList.add('timeline-track'); + this.slices_ = null; + + this.titleDiv_ = document.createElement('div'); + this.titleDiv_.className = 'timeline-track-title'; + this.appendChild(this.titleDiv_); + + this.canvasContainer_ = document.createElement('div'); + this.canvasContainer_.className = 'timeline-track-canvas-container'; + this.appendChild(this.canvasContainer_); + this.canvas_ = document.createElement('canvas'); + this.canvas_.className = 'timeline-track-canvas'; + this.canvasContainer_.appendChild(this.canvas_); + + this.ctx_ = this.canvas_.getContext('2d'); + }, + + set heading(text) { + this.titleDiv_.textContent = text; + }, + + set slices(slices) { + this.slices_ = slices; + this.invalidate(); + }, + get canvas() { + return this.canvas_; + }, + + onResize: function() { + this.canvas_.width = this.canvasContainer_.clientWidth; + this.canvas_.height = this.canvasContainer_.clientHeight; + this.invalidate(); + }, + + invalidate: function() { + if (this.parentNode) + this.parentNode.invalidate(); + }, + + set viewport(v) { + this.viewport_ = v; + this.invalidate(); + }, + + getCanvasWidth: function() { + return this.canvas_.width; + }, + + redraw: function() { + if (!this.viewport_) + return; + var ctx = this.ctx_; + var canvasW = this.canvas_.width; + var canvasH = this.canvas_.height; + + ctx.clearRect(0, 0, canvasW, canvasH); + + // culling... + var vp = this.viewport_; + var pixWidth = vp.xViewVectorToWorld(1); + var viewLWorld = vp.xViewToWorld(0); + var viewRWorld = vp.xViewToWorld(this.width); + + // begin rendering in world space + ctx.save(); + vp.applyTransformToCanavs(ctx); + + // tracks + var tr = new gpu.FastRectRenderer(ctx, viewLWorld, 2 * pixWidth, + 2 * pixWidth, viewRWorld, pallette); + tr.setYandH(0, canvasH); + var slices = this.slices_; + for (var i = 0; i < slices.length; ++i) { + var slice = slices[i]; + var x = slice.start; + var w = slice.duration; + var colorId; + colorId = slice.selected ? + slice.colorId + selectedIdBoost : + slice.colorId; + + if (w < pixWidth) + w = pixWidth; + tr.fillRect(x, w, colorId); + } + tr.flush(); + ctx.restore(); + }, + + /** + * Picks a slice, if any, at a given location. + * @param {number} wX Location to search at, in worldspace. + * @param {function():*} onHitCallback Callback to call with the slice, + * if one is found. + * @return {boolean} true if a slice was found, otherwise false. + */ + pick: function(wX, onHitCallback) { + var x = gpu.findLowIndexInSortedIntervals(this.slices_, + function(x) { return x.start; }, + function(x) { return x.duration; }, + wX); + if (x >= 0 && x < this.slices_.length) { + onHitCallback('slice', this, this.slices_[x]); + return true; + } + return false; + }, + + /** + * Finds slices intersecting the given interval. + * @param {number} loWX Lower bound of the interval to search, in + * worldspace. + * @param {number} hiWX Upper bound of the interval to search, in + * worldspace. + * @param {function():*} onHitCallback Function to call for each slice + * intersecting the interval. + */ + pickRange: function(loWX, hiWX, onHitCallback) { + function onPickHit(slice) { + onHitCallback('slice', this, slice); + } + gpu.iterateOverIntersectingIntervals(this.slices_, + function(x) { return x.start; }, + function(x) { return x.duration; }, + loWX, hiWX, + onPickHit); + } + + }; + + return { + TimelineTrack: TimelineTrack + }; +}); diff --git a/chrome/browser/resources/gpu_internals/timeline_view.css b/chrome/browser/resources/gpu_internals/timeline_view.css new file mode 100644 index 0000000..90d3a4a --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline_view.css @@ -0,0 +1,35 @@ +/* +Copyright (c) 2011 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +*/ +#timeline-view { + padding: 0px; + -webkit-box-orient: vertical; + -webkit-box-flex: 1; +} + +#timeline-view[selected] { + display: -webkit-box; +} + +#timeline-view-timeline-container { + display: -webkit-box; + -webkit-box-flex: 1; + overflow: auto; +} + +#timeline-view-timeline-container > .timeline { + -webkit-box-flex: 1; +} + +#timeline-selection-summary { + border-top: 1px solid black; + max-height: 300px; + min-height: 100px; + font-family: monospace; +} + +#timeline-selection-summary ul { + margin: 0px; +}
\ No newline at end of file diff --git a/chrome/browser/resources/gpu_internals/timeline_view.html b/chrome/browser/resources/gpu_internals/timeline_view.html new file mode 100644 index 0000000..e908dca --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline_view.html @@ -0,0 +1,11 @@ +<!-- +Copyright (c) 2011 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<div id="timeline-view" label="Timeline"> + <div id="timeline-view-timeline-container"> + </div> + <pre id="timeline-selection-summary"> + </pre> +</div> diff --git a/chrome/browser/resources/gpu_internals/timeline_view.js b/chrome/browser/resources/gpu_internals/timeline_view.js new file mode 100644 index 0000000..d0a3a4f --- /dev/null +++ b/chrome/browser/resources/gpu_internals/timeline_view.js @@ -0,0 +1,131 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview TimelineView visualizes GPU_TRACE events using the + * gpu.Timeline component. + */ +cr.define('gpu', function() { + function tsRound(ts) { + return Math.round(ts * 100.0) / 100.0; + } + + /** + * TimelineView + * @constructor + * @extends {gpu.Tab} + */ + TimelineView = cr.ui.define(gpu.Tab); + + TimelineView.prototype = { + __proto__: gpu.Tab.prototype, + + decorate: function() { + tracingController.addEventListener('traceBegun', this.refresh.bind(this)); + tracingController.addEventListener('traceEnded', this.refresh.bind(this)); + this.addEventListener('selectedChange', this.onViewSelectedChange_); + + this.refresh(); + }, + + onViewSelectedChange_: function() { + if (this.selected) { + if (tracingController.traceEvents.length == 0) { + tracingController.beginTracing(); + } + if (this.needsRefreshOnShow_) { + this.needsRefreshOnShow_ = false; + this.refresh(); + } + } + }, + + /** + * Updates the view based on its currently known data + */ + refresh: function() { + if (this.parentNode.selectedTab != this) { + this.needsRefreshOnShow_ = true; + } + + console.log('TimelineView.refresh'); + var events = tracingController.traceEvents; + this.timelineModel_ = new gpu.TimelineModel(events); + + // remove old timeline + var timelineContainer = $('timeline-view-timeline-container'); + timelineContainer.textContent = ''; + + // create new timeline if needed + if (events.length) { + this.timeline_ = new gpu.Timeline(); + this.timeline_.model = this.timelineModel_; + timelineContainer.appendChild(this.timeline_); + this.timeline_.onResize(); + this.timeline_.addEventListener('selectionChanging', + this.onSelectionChanging_.bind(this)); + this.timeline_.addEventListener('selectionChange', + this.onSelectionChanged_.bind(this)); + } else { + this.timeline_ = null; + } + }, + onSelectionChanging_: function(e) { + var text = + 'Start: ' + tsRound(e.loWX) + 'ms\n' + + 'End: ' + tsRound(e.hiWX) + 'ms\n' + + 'Duration: ' + tsRound(e.hiWX - e.loWX) + 'ms\n'; + var outputElem = $('timeline-selection-summary'); + outputElem.textContent = text; + }, + + onSelectionChanged_: function(e) { + var timeline = this.timeline_; + var selection = timeline.selection; + if (!selection.length) { + var outputDiv = $('timeline-selection-summary'); + outputDiv.textContent = ''; + return; + } + + var text = ''; + var tsLo = Math.min.apply(Math, selection.map( + function(s) {return s.slice.start;})); + var tsHi = Math.max.apply(Math, selection.map( + function(s) {return s.slice.end;})); + + text += 'Start: ' + tsRound(tsLo) + 'ms<br>'; + text += 'Duration: ' + tsRound(tsHi - tsLo) + 'ms<br>'; + + // compute total selection duration + var titles = selection.map(function(i) { return i.slice.title; }); + text += '<ul>'; + var slicesByTitle = {}; + for (var i = 0; i < selection.length; i++) { + var slice = selection[i].slice; + if (!slicesByTitle[slice.title]) + slicesByTitle[slice.title] = { + slices: [] + }; + slicesByTitle[slice.title].slices.push(slice); + } + for (var sliceGroupTitle in slicesByTitle) { + var sliceGroup = slicesByTitle[sliceGroupTitle]; + text += '<li>' + + sliceGroupTitle + ': ' + sliceGroup.slices.length + + '</li>'; + } + text += '</ul>'; + + // done + var outputDiv = $('timeline-selection-summary'); + outputDiv.innerHTML = text; + } + }; + + return { + TimelineView: TimelineView + }; +}); diff --git a/chrome/browser/resources/gpu_internals/tracing_controller.css b/chrome/browser/resources/gpu_internals/tracing_controller.css new file mode 100644 index 0000000..331fe85 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/tracing_controller.css @@ -0,0 +1,33 @@ +/* +Copyright (c) 2011 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +*/ +.gpu-tracing-overlay { + text-align: center; + display: -webkit-box; + width: 200px; + height: 80px; + -webkit-box-orient: vertical; + -webkit-box-pack: center; + -webkit-box-align: center; +} + +.gpu-tracing-start-button { + position: fixed; + right: 3px; + top: -1px; + -webkit-margin-start: 5px; + text-decoration: none; + text-align: center; + display: inline-block; + margin-top: 4px; + padding: 5px 10px 3px 10px; + border-top-right-radius: 8px; + border-top-left-radius: 8px; + background-clip: border-box; + background: rgb(255,0,0); + border-left: 1px solid black; + border-top: 1px solid black; + border-right: 1px solid black; +} diff --git a/chrome/browser/resources/gpu_internals/tracing_controller.html b/chrome/browser/resources/gpu_internals/tracing_controller.html new file mode 100644 index 0000000..7db2635 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/tracing_controller.html @@ -0,0 +1,14 @@ +<!-- +Copyright (c) 2011 The Chromium Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<div hidden> + <div id="gpu-tracing-start-button-template" class="gpu-tracing-start-button"> + Record new data + </div> + <div id="gpu-tracing-overlay-template" class="gpu-tracing-overlay"> + <div class="gpu-tracing-status">Tracing active.</div> + <button class="gpu-tracing-stop-button">Stop tracing</button> + </div> +</div> diff --git a/chrome/browser/resources/gpu_internals/tracing_controller.js b/chrome/browser/resources/gpu_internals/tracing_controller.js new file mode 100644 index 0000000..f46e417 --- /dev/null +++ b/chrome/browser/resources/gpu_internals/tracing_controller.js @@ -0,0 +1,127 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileoverview State and UI for trace data collection. + */ +cr.define('gpu', function() { + function TracingController() { + this.overlay_ = $('gpu-tracing-overlay-template').cloneNode(true); + this.overlay_.removeAttribute('id'); + cr.ui.decorate(this.overlay_, gpu.Overlay); + + this.traceEvents_ = []; + + var startButton = $('gpu-tracing-start-button-template').cloneNode(true); + startButton.removeAttribute('id'); + document.body.appendChild(startButton); + startButton.onclick = this.beginTracing.bind(this); + + var stopButton = this.overlay_.querySelector('.gpu-tracing-stop-button'); + stopButton.onclick = this.endTracing.bind(this); + } + + TracingController.prototype = { + __proto__: cr.EventTarget.prototype, + + tracingEnabled_: false, + + /** + * Called by info_view to empty the trace buffer + */ + beginTracing: function() { + if (this.tracingEnabled_) + throw Error('Tracing already begun.'); + + this.overlay_.visible = true; + + this.tracingEnabled_ = true; + console.log('Beginning to trace...'); + + this.traceEvents_ = []; + if (!browserBridge.debugMode) + chrome.send('beginTracing'); + + this.tracingEnabled_ = true; + + var e = new cr.Event('traceBegun'); + e.events = this.traceEvents_; + this.dispatchEvent(e); + + e = new cr.Event('traceEventsChanged'); + e.numEvents = this.traceEvents_.length; + this.dispatchEvent(e); + + var self = this; + window.addEventListener('keypress', function f(e) { + if (e.keyIdentifier == 'Enter') { + window.removeEventListener('keypress', f); + self.endTracing(); + } + }); + }, + + /** + * Checks whether tracing is enabled + */ + get isTracingEnabled() { + return this.tracingEnabled_; + }, + + /** + * Gets the currently traced events. If tracing is active, then + * this can change on the fly. + */ + get traceEvents() { + return this.traceEvents_; + }, + + /** + * Callbed by gpu c++ code when new GPU trace data arrives. + */ + onTraceDataCollected: function(events) { + this.traceEvents_.push.apply(this.traceEvents_, events); + }, + + /** + * Called by info_view to finish tracing and update all views. + */ + endTracing: function() { + if (!this.tracingEnabled_) throw new Error('Tracing not begun.'); + + console.log('Finishing trace'); + if (!browserBridge.debugMode) { + chrome.send('beginToEndTracing'); + } else { + var events = getTimelineTestData1(); + this.onTraceDataCollected(events); + window.setTimeout(this.onEndTracingComplete.bind(this), 250); + } + }, + + /** + * Called by the browser when all processes ack tracing + * having completed. + */ + onEndTracingComplete: function() { + this.overlay_.visible = false; + this.tracingEnabled_ = false; + console.log('onEndTracingComplete p1 with ' + + this.traceEvents_.length + ' events.'); + var e = new cr.Event('traceEnded'); + e.events = this.traceEvents_; + this.dispatchEvent(e); + }, + + selfTest: function() { + this.beginTracing(); + window.setTimeout(this.endTracing.bind(This), 500); + } + }; + return { + TracingController: TracingController + }; +}); + |