Indirect rendering with OpenGL-ES in X?
david at protonic.nl
Tue Oct 6 01:51:56 PDT 2009
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:
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.
To be able to develop an X-application that gets OpenGL (-ES) graphics
rendered into an X-window (local rendering only).
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
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.
More information about the xorg-devel