Linked by Eugenia Loli on Mon 27th Feb 2006 07:10 UTC, submitted by fsmdave
X11, Window Managers 3D graphics on X11: XGL vs AIGLX. This article delves into the inner workings of XGL and AIGLX. It shows that there are many similarities between these two competing/co-operating "rivals" and plenty of room for growth.
Thread beginning with comment 99670
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: Good read
by rayiner on Mon 27th Feb 2006 14:48 UTC in reply to "Good read"
rayiner
Member since:
2005-07-06

It's convoluted because the underlying problem is a complicated one. First, X supports two mechansisms for rendering OpenGL --- direct and indirect. Indirect rendering is usually used for remote clients --- OpenGL calls get translated into a GLX protocol stream, which gets sent to the X server and rendered. The direct method bypasses the GLX stream, and has the application render directly using a userspace GL library and a kernel module.

Neither mechanism makes "calls" to the graphics card --- since modern GPUs like to be programmed via command packets and not direct MMIO register access. Instead, the direct rendering mechanism allows libGL to create command packets in userspace, and when enough data has been buffered, to call into the kernel DRI (or the NVIDIA equivalent) to verify the correctness of these packets and transfer them to the graphics card.

Reply Parent Score: 5

RE[2]: Good read
by jonsmirl on Mon 27th Feb 2006 15:02 in reply to "RE: Good read"
jonsmirl Member since:
2005-07-06

One proposal has been to turn everything into a direct rendering client. Remote apps would get a process forked off to service them, that process would then direct render on behalf of the remote client. Doing this removes the distinction between indirect and direct rendering.

In this model the X server as currently implemented disappears. Everything that draws is direct rendered (including the window/composition manager). Remote clients are handled with external processes (good for security). UI events are routed by the window/composition manager and then sent out to the correct process.

xlib support is handled by splitting some XGL code out into a library which turns the xlib calls into direct rendered OGL.

Edited 2006-02-27 15:03

Reply Parent Score: 5