> Regardless of my personal preference as expressed, there are some minor issues
> in the EGL part of the patch.  One is that, it lifts certain restrictions
> required by EGL 1.4 by commenting out the code (e.g. in eglSwapBuffers).  It
> should check if EGL_MESA_gallium is supported and decide what to do.

Is that restriction (the surface being swapped by eglSwapBuffers must
be bound to the current context) actually in the spec?

The man page at
http://www.khronos.org/opengles/documentation/opengles1_0/html/eglSwapBuffers.html
doesn't talk about contexts at all, and GLX doesn't have that
restriction.

As far as merging my patches, great, but there is some complexity
involved, since there are various versions of them.

First of all, the Gallium framework/programs code is now independent
of the extensions as it contains its own main loop with DRI2 and KMS
support, and can thus be merged now, independently of the extension
and/or egl_g3d.
This is quite useful for writing Gallium demos/tool in C: you call its
init_and_render function passing a "draw" function pointer, and it
calls back draw with a pipe_context and pipe_framebuffer_state you can
use for drawing.
Using it from Python would however require some adaptations.

As for the extension, this is the current situation:
1. The orginal GLX and EGL patches. There are based on egl_glx,
egl_softpipe and the GLX/DRI stack.
They implement a GetGalliumSurfaces call which pulls surfaces out of
an st_framebuffer.
This makes them somewhat invasive and is inelegant since there is a
dependency on the state tracker.

2. The EGL patch based on egl_g3d. This patch is much cleaner, thanks
to egl_g3d's design, which is much better than the existing one as it
separates the API implementation (in egl_g3d.c) from the abstraction
of the underlying rendering system (the
native_display/native_surface/native_config classes).
This allows a very simple implementation of the Gallium extension.
However, the patch I posted depends on changes to native_surface which
I think are beneficial, but I'm not sure if Chia-I Wu likes.
Note that this actually changes the extension interface, which now has
a GetGalliumTextures function instead of GetGalliumSurfaces, that
mimics Chia-I Wu's design of native_surface->validate, which I believe
is superior to my initial interface design.

3. A new GLX implementation based on the egl_g3d native core,
including a GLX_MESA
I sent a preview of this to Chia-I Wu and have since made it work with
all applications except single-buffered ones (due to egl_g3d dropping
single-buffered visuals: this should be asily fixable), including
compiz.
I'll post a patch to the list soon with the code.
Using this means however replacing (in actual use, not in the
repository, of course) all the GLX/DRI stack with a new Gallium-only
GLX implementation.

Thus, of all the code involved, my new Gallium programs code and
Chia-I Wu's egl_g3d can be merged now, as they have no dependencies
and don't affect the existing code.

As for the extensions, they somewhat depend on whether we decide to go
with egl_g3d or not.
If egl_g3d becomes the default EGL and GLX layer for Gallium drivers,
then the egl_g3d versions of the extensions and the overall codebase
are much cleaner.
Otherwise, it's easy to add glXGetGalliumScreen and
glXCreateGalliumContext on top of the existing code but getting
surfaces/textures is a bit more ugly. Also, it may be a good idea to
update the old patches to expose the new glXGetGalliumTextures with
user-specified attachments rather than the old and uglier
GetGaliumSurfaces interface.

What do you think?

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to