[Xorg] X on OpenGL

Keith Packard keithp at keithp.com
Sun Jul 11 09:50:32 PDT 2004

Around 13 o'clock on Jul 11, Soeren Sandmann wrote:

> I am not convinced that OpenGL has everything that applications will
> need. Some things I don't see how to support:

It's important to think of OpenGL as just the rendering back-end, not the 
whole X server architecture.  In particular, OpenGL requires external
device configuration mechanisms which are system-dependent (GLX, AGL, WGL).

And, OpenGL doesn't provide much in the way of input device support, so 
we'll want to add our own for that.

> - mode setting
> Changing the mode of hardware

We're already talking about moving this to an external library which can 
be shared by all graphics applications; my assumption here is that the 
system-dependent pieces for a 'Gl-solo' based X server would include an 
interface to this library.

I don't have a solid idea about how that library should be constructed; 
whether the X server should be in charge of mode selection at any level or 
whether it should just react to externally controlled events.

> - reading pixels out of the framebuffer
> GetImage needs to be supported, and I'd hope that we could do better
> than just synchronize with the hardware, then read the pixels. Some
> cards can DMA pixels to main memory.

The GL API isn't required to be lame.  I believe the closed-source nVidia
driver uses DMA in this case, but the bandwidth of that operation is only a
small factor faster than the bandwidth of reading data with the CPU as it
has to transit AGP space, which (I believe) involves manual CPU cache
poisoning or uncached accesses.

> - breadcrumb
> To do good-looking animations, applications will want to know when a
> given request is actually completed by the graphics hardware. So the
> API should support that.

Yeah, this would be nice; we could manage schedulin the hardware better 
with this as well.

> - gamma correct compositing
> Really good-looking antialiasing will require gamma correct
> compositing. Can OpenGL do this?

Some OpenGL hardware does support this, but most does not at the current 
time.  Certainly new programmable hardware should be able to manage this, 
and I think the GL api exposes enough capability to suppor it.

> So I would like to propose that there is an abstraction layer on top
> of OpenGL that has support for these things and also knows about the X
> server select() loop.

The open source GL drivers are mutable, so we can experiment with them and 
push changes into closed source drivers as well.  The key is to figure out 
how to make this all work; the fact that we're drawing to the screen 
through the OpenGL API doesn't really change much here.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg/attachments/20040711/20b12072/attachment.pgp>

More information about the xorg mailing list