In trying to figure out why the clutter FBO tests simply fell over in indirect contexts, I got to discover exactly how disgusting this code is. The glapi code appears to have been cargo-culted in from Mesa, but is over-general for our purposes. In particular, glapi goes through some contortions to support the corner case semantics of glXGetProcAddress, which is a thing that simply can not happen in xserver, and contains much more threading support than can happen in xserver.
This patchset attempts to simplify some of that. I've lightly tested it, in the sense that glxinfo and glxgears still work in indirect contexts, but I've not tried anything as robust as piglit yet. There's more to come, in the form of fixing and simplifying _glapi_add_dispatch for the xserver environment, but that's proving a little tricker than I was hoping. Nonetheless, the before-and-after is very pretty already: text data bss dec hex filename 1833530 69920 49664 1953114 1dcd5a Xvfb-before 1741772 62928 49640 1854340 1c4b84 Xvfb-after b/glx/Makefile.am | 2 b/glx/glapi.c | 417 -- b/glx/glapi.h | 28 b/glx/glthread.c | 162 - b/glx/glthread.h | 69 b/hw/xquartz/GL/indirect.c | 9 glx/glapitemp.h | 6655 --------------------------------------------- 7 files changed, 19 insertions(+), 7323 deletions(-) - ajax _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel