[RFC PATCH] XAA: Remove pluggable GC validation.

Jamey Sharp jamey at minilop.net
Wed Jul 7 03:42:21 PDT 2010


On Tue, Jul 6, 2010 at 1:59 PM, Aaron Plattner <aplattner at nvidia.com> wrote:
> On Tue, Jul 06, 2010 at 09:56:51AM -0700, Jamey Sharp wrote:
>> That requires not using ValidateGC to select GC ops.
>
> This sounds bad.  GC ops are simple enough that every bit of validation
> overhead causes significant performance regressions.  Pierre-Loup did an
> experiment recently that showed that moving validation from ValidateGC to
> the ops cost 5% on lines.

Pierre-Loup got that result using `x11perf -seg1`. 1-pixel "lines" are
certainly going to show performance changes worse than most any other
test, so I think this conclusion is backwards: This change causes a
mere 5% performance hit in the worst case? That's almost measurement
noise.

He said the test was a quick hack. Of course, the code is
closed-source, so I can't review or duplicate the experiment, but I'd
guess a more polished refactoring would have even less performance
impact. He left IRC abruptly after reporting these results so I
couldn't find out more.

As counter-evidence I'll point out that no open source driver resorts
to these tricks for performance, as far as I can tell. My guess is
that function pointers are worse on modern out-of-order CPUs than
conditional branches, and so I hypothesize that if you do a complete
conversion to eliminate validation-time ops selection you'll see
little performance change. I'd expect your code to be quite a bit
easier to understand and maintain, too.

I hope the effort involved will be further justified by the ability to
eliminate Xinerama, hotplug screens, and make other improvements.

Jamey


More information about the xorg-devel mailing list