• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3<!--
4Copyright (c) 2012 The Chromium Authors. All rights reserved.
5Use of this source code is governed by a BSD-style license that can be
6found in the LICENSE file.
7-->
8<head>
9<title>importer.linux_perf.I915Parser tests</title>
10<script src="../../base.js"></script>
11</head>
12<body>
13<script>
14'use strict';
15
16base.require('unittest');
17base.require('test_utils');
18base.require('importer.linux_perf_importer');
19
20function testi915Import() {
21  var lines = [
22    // NB: spliced from different traces; mismatched timestamps don't matter
23    '          chrome-1223  [000]  2784.773556: i915_gem_object_pwrite: ' +
24               'obj=ffff88013f13fc00, offset=0, len=2984',
25    '          chrome-1539  [000] 18420.677750: ' +
26               'i915_gem_object_change_domain: ' +
27               'obj=ffff8800a88d1400, read=44=>40, write=00=>40',
28    '          chrome-1539  [000] 18420.677759: i915_gem_object_fault: ' +
29               'obj=ffff8800a88d1400, GTT index=0 , writable',
30    '               X-964   [000]  2784.774864: i915_flip_request: ' +
31               'plane=0, obj=ffff88013f0b9a00',
32    '          <idle>-0     [000]  2784.788644: i915_flip_complete: ' +
33               'plane=0, obj=ffff88013f0b9a00',
34    '          chrome-1539  [001] 18420.681687: i915_gem_request_retire: ' +
35               'dev=0, ring=1, seqno=1178152',
36    '          chrome-1539  [000] 18422.955688: i915_gem_request_add: ' +
37               'dev=0, ring=1, seqno=1178364',
38    '             cat-21833 [000] 18422.956832: i915_gem_request_complete: ' +
39               'dev=0, ring=1, seqno=1178364',
40    '               X-1012  [001] 18420.682511: i915_gem_request_wait_begin: ' +
41               'dev=0, ring=4, seqno=1178156',
42    '               X-1012  [000] 18422.765707: i915_gem_request_wait_end: ' +
43               'dev=0, ring=4, seqno=1178359',
44    '          chrome-1539  [000] 18422.955655: i915_gem_ring_flush: ' +
45               'dev=0, ring=1, invalidate=001e, flush=0040',
46    '          chrome-1539  [000] 18422.955660: i915_gem_ring_dispatch: ' +
47               'dev=0, ring=1, seqno=1178364',
48    '          chrome-1539  [000] 18420.677772: i915_reg_rw: ' +
49               'write reg=0x100030, len=8, val=(0xfca9001, 0xfce8007)'
50  ];
51  var m = new tracing.Model(lines.join('\n'), false);
52  assertEquals(0, m.importErrors.length);
53
54  var i915GemThread = undefined;
55  var i915FlipThread = undefined;
56  var i915GemRingThread = undefined;
57  var i915RegThread = undefined;
58  m.getAllThreads().forEach(function(t) {
59    switch (t.name) {
60    case 'i915_gem':
61      i915GemThread = t;
62      break;
63    case 'i915_flip':
64      i915FlipThread = t;
65      break;
66    case 'i915_gem_ring':
67      i915GemRingThread = t;
68      break;
69    case 'i915_reg':
70      i915RegThread = t;
71      break;
72    default:
73      throw new unittest.TestError('Unexpected thread named ' + t.name);
74    }
75  });
76  assertNotUndefined(i915GemThread);
77  assertNotUndefined(i915FlipThread);
78  assertNotUndefined(i915GemRingThread);
79  assertNotUndefined(i915RegThread);
80
81  assertEquals(3, i915GemThread.slices.length);
82
83  assertEquals(1, i915FlipThread.slices.length);
84
85  assertAlmostEquals(2784.774864 * 1000.0,
86      i915FlipThread.slices[0].start);
87  assertAlmostEquals((2784.788644 - 2784.774864) * 1000.0,
88      i915FlipThread.slices[0].duration);
89
90  assertEquals(7, i915GemRingThread.slices.length);
91
92  assertEquals(1, i915RegThread.slices.length);
93}
94
95</script>
96</body>
97</html>
98