EXA performance problem
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