render improvements

Lars Knoll lars at trolltech.com
Fri Apr 15 07:10:27 PDT 2005


Hi,

Zack and myself have in the last two weeks worked on improving performance the 
general composition path in the render extenstion (the code in fbcompose.c). 

You can find patches for xserver and xorg at:
http://trolls.troll.no/lars/render/render_xserver.diff
http://trolls.troll.no/lars/render/render_xorg.diff

The main change is in fbcompose.c, which you can find separately here:
http://trolls.troll.no/lars/render/fbcompose.c

We've done some performance measurements using Xephyr, which shows an overall 
speedup of 3-4 times when not using transformations, and about a factor of 8 
for bilinear transformations.

You can find a more detailed list of results on:
http://trolls.troll.no/lars/render/render_old.txt
http://trolls.troll.no/lars/render/render_new.txt

render_old gives the old timing results, render_new the timings with our 
changes. The benchmark program we used is at 
http://trolls.troll.no/lars/render/render_bench_ops.tar.bz2 (requires a 
recent Qt4 snapshot to build).

The speedup using a recent x.org server is less, we currently suspect that 
framebuffer reads are the limiting factor now. We're not sure why they are so 
slow, but I'm hope on the list can enlighten us. My current suspicion is that 
they are not cached in the CPU at all and always go directly to graphics 
memory.

We can try to reduce framebuffer reads to speed this up (I have some ideas how 
to do this), but we wonder if there are ways to speed up the reads from the 
framebuffer, at least from offscreen memory?

Cheers,
Lars & Zack



More information about the xorg mailing list