Xgl server

Owen Taylor otaylor at redhat.com
Fri Nov 5 18:00:44 PST 2004


On Fri, 2004-11-05 at 17:27 -0700, Brian Paul wrote:

> A while back I suggested designing a very simple OpenGL glue interface 
> for creating/managing rendering contexts, drawing surfaces, etc. that 
> the GL-based X server could layer upon.  It would also work for people 
> wanting to do X-less GL applications.
> 
> mesa-solo (aka mini-glx) serves that purpose now, but it's kind of a 
> hack (the emulation of the GLX and basic Xlib functions is kind of icky).

Especially inside the X server, presumably...

> It occured to me that maybe the EGL interface (part of the OpenGL ES 
> standard) could be used instead.
> 
> The EGL spec can be found here:  http://www.khronos.org/opengles/spec.html
> 
> One potential advantage to using the EGL interface is the fact that it 
> might be supported by other hardware vendors.  Suppose, 
> hypothetically, that NVIDIA were to support EGL.  Then, the GL-based X 
> server could run on it (instead of a full X server).

Well, but once you fill in the blanks of what NativeWindowType, and
NativeDisplayType, do you really have much useful portability left?

> One thing with EGL is that it's designed to interface with an existing 
> window system, like X or WGL.  See eglCreateWindowSurface() for 
> example.  But, I think a "pure" EGL implementation is possible with a 
> little work.

It's quite possible that EGL is a useful starting point; why create
another <x>MakeCurrent name if we can use eglMakeCurrent. But in the
end, it seems like to go beyond proof-of-concept, we're going to have
a much bigger X server <=> hardware interface.

 - Implementing an X server in GL without clip lists sounds pretty
   painful. But while GLX implementations have clip lists, they aren't
   API exposed, and neither are they in EGL.

 - Xvideo - presumably there will still be card-specific Xvideo modules;
   how do they coordinate hardware access with the GL implementation?
   How do we tell the Xvideo module to render to a pbuffer? 

 - PBuffers shared between processes; we need that both for 
   direct-rendering-clients rendering to redirected windows, and 
   for passing redirected windows to a compositing manager for final
   display.

Things like that. Right now, we have a pretty good idea of what the
application API looks like, with a few holes, like the 
composite <=> pbuffer connection. It sees that it just needs to
be pushed down the stack to get a more concrete idea of what the
X server <=> GL implementation is, and what extensions to the DRI
are needed.

One other question that comes to mind: presumably, accelerated indirect
rendering is still at least a minor goal. Is implementing that on top of
EGL going to be feasible, or would you need something that mapped to GLX
in a literal one-to-one sense, but didn't use the Xlib types?

Regards,
						Owen

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg/attachments/20041105/a1eeb0fb/attachment.pgp>


More information about the xorg mailing list