1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
8 * @fileoverview Parses drm driver events in the Linux event trace format.
10 tvcm.require('tracing.importer.linux_perf.parser');
11 tvcm.exportTo('tracing.importer.linux_perf', function() {
13 var Parser = tracing.importer.linux_perf.Parser;
16 * Parses linux drm trace events.
19 function DrmParser(importer) {
20 Parser.call(this, importer);
22 importer.registerEventHandler('drm_vblank_event',
23 DrmParser.prototype.vblankEvent.bind(this));
26 DrmParser.prototype = {
27 __proto__: Parser.prototype,
29 drmVblankSlice: function(ts, eventName, args) {
30 var kthread = this.importer.getOrCreatePseudoThread('drm_vblank');
31 kthread.openSlice = eventName;
32 var slice = new tracing.trace_model.Slice('', kthread.openSlice,
33 tracing.getStringColorId(kthread.openSlice), ts, args, 0);
35 kthread.thread.sliceGroup.pushSlice(slice);
39 * Parses drm driver events and sets up state in the importer.
41 vblankEvent: function(eventName, cpuNumber, pid, ts, eventBase) {
42 var event = /crtc=(\d+), seq=(\d+)/.exec(eventBase.details);
46 var crtc = parseInt(event[1]);
47 var seq = parseInt(event[2]);
48 this.drmVblankSlice(ts, 'vblank:' + crtc,
57 Parser.registerSubtype(DrmParser);