EXA performance problem

Christoph Bartoschek bartoschek at or.uni-bonn.de
Mon Nov 28 01:35:24 PST 2011

Am 28.11.2011 07:43, schrieb Maarten Maathuis:
>> xorg at lists.freedesktop.org: X.Org support
>> Archives: http://lists.freedesktop.org/archives/xorg
>> Info: http://lists.freedesktop.org/mailman/listinfo/xorg
>> Your subscription address: madman2003 at gmail.com
> No, damage is an extention, it is called by EXA, it's probably adding
> all you rectangles to a damage region used to determine how much data
> is actually valid (needed for ram<-->vram migrations for example).
> One thing that just comes to mind, if you are rendering a million
> rectangles, how many of those do you actually see on your screen?

Most of them are only 1x1 pixel wide. And lots of rectangles share the 
same pixel.  I assue that one can optimize the application. But I did 
not write it and do not know how it works. I only know that it was able 
to show vector pictures consisting of millions of rectangles within 
seconds (VLSI design data) when run on XFree86. With Xorg it takes minutes.

I only see the problem because we recently upgraded our X11 thin clients 
to better hardware. But they turned out to be much slower than the older 

My quest to find the problem has led me to the damage extension now. 
First I thought it was a network problem. But Xorg was also slow on my 
notebook when the program was started locally.

The contrast is striking: The old XFree86 thin clients were able to draw 
all the rectangles that were sent over a 100 MBit ethernet network in 
seconds. While my more powerful Xorg server needs minutes although the 
software runs on the same machine.

However, I was able to improve the runtime of the first operation in 
damagePolyRectangle. The runtime of my benchmark went down from 90 
seconds to 64 seconds.

Now one has to look at
(*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects);


More information about the xorg mailing list