Indirect rendering with OpenGL-ES in X?

David Jander david at protonic.nl
Tue Oct 6 01:51:56 PDT 2009


Hi all,

My excuses if this question may seem slightly off-topic (I hope it is 
not). In the light of the painful state of hardware acceleration support 
for embedded devices using X, I have been wondering about the following 
possibilities, and want to know if someone else has thought of, or tried 
something like this before:

I have:
An embedded (linux-) system with a display interface (linux 
framebuffer), running kdrive Xserver (Xfbdev) and a MBX 3-D core with 
binary OpenGL-ES 1.1 and EGL libraries.

I want:
To be able to develop an X-application that gets OpenGL (-ES) graphics 
rendered into an X-window (local rendering only).

The problem:
The OpenGL-ES/EGL libraries that are delivered with the hardware, do not 
support any other than full-screen rendering (EGL is restricted to the 
NULL-window) or rendering to off-screen buffers (pbuffer support).

Possible solutions (hacks):

1. Write (hack together) some GLX (mesa-) back-end that translates 
OpenGL to OpenGL-ES taking into account the restriction of the provided 
libraries. I have seen someone doing something similar, but that project 
is long since abandoned and was based on a very old version of Mesa.

2. Invent some sort of poor-man "EGLX" and hack it directly into the 
Xserver?

3. Since the applications will run locally anyway, implement some hack 
in the X-server, like shadow-buffers, to update screen contents 
efficiently from EGL-pbuffer surfaces.

Unfortunately, I have not enough knowledge about how OpenGL and GLX 
support in the X-server really works to make any better sense out of 
this, but my intuition tells me that there must be a way to do this, and 
the probability that there is someone here who has done this or at least 
thought about it should also be rather high, I suppose.

Any ideas or suggestions are welcome.

Best regards,

-- 
David Jander


More information about the xorg-devel mailing list