Trying to get a handle on 2D graphics rendering performance can be a
difficult task. Obviously, people care about the performance of their
2D applications. Nobody wants to wait for a web browser to scroll past
-tacky banner ads or for an email client to render a pageful of
+tacky banner ads or for an email client to render a screen full of
spam. And it's easy for users to notice "my programs aren't rendering
as fast with the latest drivers". But what developers need is a way to
quantify exactly what that means, in order to track improvements and
avoid regressions. And that measurement is the hard part. Or at least
it always has been hard, until Chris Wilson's recent cairo-perf-trace.
-# Previous attempts at 2D benchmarking
+## Previous attempts at 2D benchmarking
Various attempts at 2D-rendering benchmark suites have appeared and
even become popular. Notable examples are x11perf and gtkperf. My
things like x11perf in the past. I won't recommend it again in the
future. See below for what I suggest instead.
-# What do the 3D folks do?
+## What do the 3D folks do?
For 3D performance, everybody knows this lesson already. Nobody
measures the performance of "draw the same triangles over and
-over". And when a program that does that (like glxgears) everybody
-laughs if someone tries to take its frames-per-second report
-seriously. In fact, the phrase "glxgears is not a benchmark" is a
-catchphrase among 3D developers. Instead, 3D measurement is made with
-"benchmark modes" in the 3D applications that people actually care
-about, (which as far as I can tell is just games for some reason). In
-the benchmark mode, a sample session of recorded input is replayed as
-quickly as possible and a performance measurement is reported.
+over". And if someone does, (by seriously quoting glxgear fps numbers,
+for example), then everybody gets a good laugh. In fact, the phrase
+"glxgears is not a benchmark" is a catchphrase among 3D
+developers. Instead, 3D measurement is made with "benchmark modes" in
+the 3D applications that people actually care about, (which as far as
+I can tell is just games for some reason). In the benchmark mode, a
+sample session of recorded input is replayed as quickly as possible
+and a performance measurement is reported.
As a rule, our 2D applications don't have similar benchmark
modes. (There are some exceptions such as the trender utility for
coding up application-specific benchmarking code for every interesting
application isn't something that anyone is signing up to do right now.
-# Introducing cairo-perf-trace
+## Introducing cairo-perf-trace
Over the past year or so, Chris "ickle" Wilson has been putting a lot
of work into a debugging utility known as cairo-trace, (inspired by
evolution. Obviously, anyone should feel free to generate and propose
new traces to contribute.
-# Putting cairo-perf-trace to use
+## Putting cairo-perf-trace to use
In the few days that cairo-perf-traces has existed, we're already
seeing great results from it. When Kristian Høgsberg recently proposed