1 Feature requests (small-scale, near-term changes)
2 =================================================
4 Report CPU load per frame.
6 Report GPU load per frame.
8 Report CPU frequency per frame.
10 Report GPU frequency per frame.
12 Report shader compilation time.
14 Report elapsed time per frame.
16 Add options to control which metrics should be collected.
18 Add Eric's tiny hash table for collecting per-shader statistics
20 people.freedesktop.org:~anholt/hash_table
22 Capture GPU performance counters.
24 Allow dumping of shader source for investigation
26 Infrastructure (larger-scale things, more future-looking items)
27 ===============================================================
29 Use ncurses for a better top-like display.
31 Report timestamps and CPU time durations for operations causing
34 Emit per-frame data in a format for external timeline viewer.
36 Allow enabling/disabling of tracing at run-time
38 Such as via signals, (optionally specified by env. variable)
40 Investigation for other potential features
41 ==========================================
43 Audit Eric's recipe for performance tuning to see what else fips
44 should automatically collect:
46 http://dri.freedesktop.org/wiki/IntelPerformanceTuning/
48 Audit exisiting visualization tools before writing one from scratch
50 Eero suggested two possibilities:
54 http://pythonhosted.org/pytimechart/index.html
58 https://gitorious.org/e-graph
62 Explore using perf/LTTng probing instead of LD_PRELOAD wrapper
64 This has the advantage of allowing full-system,
65 multi-process data collection.
67 Things to change while replaying to isolate impact of different pieces
68 of the pipeline (list by Eero)
69 ==============================
70 The interesting "what is a bottleneck" experiments are
71 (from back of 3D pipeline to front):
72 - Disable blend (= disable related dst reads)
73 - Binding 1x1 / NULL texture instead of real ones [1]
74 - Using simple pass-through pixel shader instead of real ones [2]
75 - Use kill / discard pixel shader instead of real ones
76 - Use 0x0 / 1x1 scissor rect