Building GLcore in mesa
Kristian Høgsberg
krh at bitplanet.net
Thu Mar 16 09:45:08 PST 2006
Keith Whitwell wrote:
> It seems to me that whatever reason Xorg needs to build mesa for (I'm
> guessing the indirect GLX software rasterizer) is a mistake.
>
> If mesa is to be built, it should be built within the tree it is
> developed. That might mean that Mesa should learn how to build itself
> in a form suitable for use as X.org's internal rasterizer, or better
> still now that we have AIGLX approaching, that Mesa grows a DRI
> software-only rasterizer that Xorg can use when a hardware driver for
> AIGLX isn't available.
Funny you should mention this :) I've been working on building the
software rasterizer in mesa and at this point I have something that
works, but I need to clean it up a bit, and there are a couple of issues
that I'm not sure how to deal with. I've renamed GLcore to softgl,
since now it is just one implmentation of GL. Also, this is not a
software DRI driver, it's a implementation of the GLX provider interface
that I added in the GLX module. For now, I've attached a mesa patch and
an xorg patch with my current work. The outstanding issues in order of
importance are:
- I use dlopen() from dix code to load softgl.so from the Xorg module
dir. Suggestion: We just ok dlopen() as a dix level dependency, or
maybe do a thin wrapper as in Xgl. All we need is load module, close
module, lookup symbols. RTLD_LOCAL must work. Just use flat module
directory? Versioning?
- We still need to copy files from Mesa into the glx module. Most of
these are generated files:
dispatch.h
glapioffsets.h
glapitable.h
glapitemp.h
glheader.h
glprocs.h
but there are a few files that I think we should just copy into xorg
cvs:
glapi.h
glapi.c
glthread.h
glcontextmodes.c
glcontextmodes.h
- The build order is still a bit tangled up:the xserver glx module must
build against system installed mesa of same version as the dispatch
files werer copied from; the glapi files end up pulling in GL/gl.h and
GL/glx.h and they should match. I think this is a requirement that
could be relaxed, though, the glapi files doesn't use much from gl.h
and glx.h.
Conversely, softgl is an xorg module and needs xorg-sdk to be
installed at build time, so the build order is:
make install of mesa header files (e.g. as part of make linux-dri),
make install of xorg-sdk (i.e. xorg server)
make install of mesa linux-softgl target
- mesa needs to be built from scratch for this, you can't share a dri
build tree with a softgl build tree. Maybe this can be fixed, it's
because of the different ways the dispatch table
(driDispatchRemapTable) works for dri and software rendering - Ian?
- I'm adding these glx header files to the xorg sdk:
glxserver.h
glxscreens.h
glxdrawable.h
glxcontext.h
glxext.h
glxutil.h
glxerror.h
but that's temporary - I want to clean this up so I don't expose the
glx module implementation and only install one header file, and add a
interface versioning mechanism.
Eventually, I think we should just move xorg/GL/glx up to xorg/glx,
since that's all it is now, but I think we should do that once we have a
decent version control system for the server.
Oh, and is there any reason that I shouldn't just get rid of
glx_ansic.h? It's just gratuitously wrapping a subset of libc (deja-vu)
for no good reason that I can see.
Kristian
More information about the xorg
mailing list