From performance point of view

Guillaume Maillard <[email protected]>
Newsgroups gmane.comp.freedesktop.xserver
Organization ILM
Message-ID <[email protected]>
 Hi all,


Before reading this 'first & short' email to this list,
I would like you start by doing:
wget http://blueos.free.fr/Static.tar.gz
tar -zxf Static.tar.gz
cd Static
./test
and press SPACE, move some windows, look at you cpu consumption.

 This code was coded in June 2002, and release in October 2002,
it evolved a lot after this date, is faster, consume less, but
the result is the same, it reaches the _ minimal _ performance 
that xserver must IMHO reach to be a success.

In the past, I had to 'sink' in the XFree86 code to understand
what the main issues were. I'm not a vodoo spirit, just a
software engineer who tried to find the best way to use Xfree,
so it could help for a new xserver.

If you have some time you can read:
http://www.osnews.com/story.php?news_id=1905

So I enjoy seeing a project like freedesktop to start,
and would be happy to help a bit if I can.
IMHO a 'revolution' can't appear if xserver stay X11 centric,
I mean that it's not bad to provide a Xlib or 'standard' extensions,
but I would like to push to trash (or fire) all the book about X
I have on my desk (yes, I have read more 2000 pages about the
subject...:( ).

Keys for userfriendly:
o non blocking UI operations
   -> 1 thread per window in userland
   -> 1 thread per xserver-internal-window (xserver-land)
  communications done by message queue
o implement a Syncro() function which block until the operations
before the the last Syncro() are _REALLY_ done.


Keys for performances:
o a composing manager as closed as possible of
the native bitmap management of modern gfx card
  -> full 32bits
o reduce the number of operations managed by the
servers (remember the RISC approach for processors)
  -> it means that an xlib compatibilty layer must be userland and
   only rely on the primitives operations
  -> client side widgets
  -> color conversion in userspace (no conversion for 32bits data of
course)
o 1 bitmap per window with a cache system ( bitmap rebuilt ondemand )
o  shared bitmap on local use (by shared memory if running on the same
computer) between the userland and xserser-land.
o a separate input server which communicate asyncronoulsy with the
xserver
o an 'input gate' which filter the inputs by looking at the rendering
status ( ex: flush intermediate mouse-moved event if the refresh rate
become to slow )
o integrated AA font rendering in the xserver. 
o be 'verticaly synchronised' on drawing.
o never ask a redraw for something already drawn (or stored in
the window bitmap)

I promised to make a short email, so I will not explain more now.
It's not 'thought' or 'guesses', all what I'm talking about
were tested, and validated.
If not kicked out, I would be happy to argue with a lot of more
description of the previous point, with con and pro, and a lot
of technical points.

Regards,
Guillaume


PS: Sorry for my bad english writing.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.