[Mesa-users] libGL and libOSMesa dispatch conflict issue on Fedora 14 build

Tyson Whitehead twhitehead at gmail.com
Thu Oct 6 09:14:44 PDT 2011

On October 5, 2011 17:32:25 tom fogal wrote:
> Does --enable-gl-osmesa actually add OSMesa* functions to libGL, or
> just 'turn on' building libOSMesa at the same time libGL is built?
> I am honestly asking; I do not remember.  I know there was some
> semi-recent (within past 6 months) changes or at least discussion about
> whether libOSMesa should be built from the .o's directly, or just built
> with -lGL so that it links into libGL for the gl* functions.

At the time I had presumed it added OSMesa* functionality to libGL as the 
description given in configure.ac was "enable OSMesa with libGL".

However, I can see how that could also means just build libOSMesa as well as 
libGL, and looking at what configure.ac actual does (adds osmesa to 
DRIVER_DIRS), I think this is most likely what would happen.

> I might argue that this is probably the way you want it, too: users
> might *want* a library which has the OpenGL symbols in a standard
> method.  Others (i.e. us) might want that same library with mangled
> symbols.  So a distribution probably requires 2 packages: 'osmesa' and
> 'osmesa-mangled'.
> We could (probably) get a change upstream so that mangled libraries are
> named differently, e.g. libMangledGL and libMangledOSMesa.  If that
> helps distro packagers created packages for a mangled OSMesa, I will
> write up some patches.

I could see this would be useful all right.  Certainly makes more sense than 
require each package that wants it to have to compile a static version.

> > My understanding is then that the former implies the only way to get
> > OSMesa functionality is to compile up a seperated mangled OSMesa
> > library, while the later implies that this isn't libOSMesa as it
> > wasn't compiled that way.
> Nah, OSMesa and mangling are orthogonal concerns/features.  They can be
> used together, or not.

I am a bit confused by that answer, but I think maybe that it because I failed 
to fully state what I was meaning/thinking of.  Let me try again.

My understanding then is that the only way to get OSMesa functionality at the 
same time as the regular GL functionality (i.e., use both libOSMesa and libGL 
in the same application) is to have the OSMesa is compiled with mangling.

(otherwise you get the multiple symbol resolution issue I ran into)

> > All together this means the Fedora VTK packaging is buggy as compiled
> Yeah, sounds like it.  How could that work with, say, the nvidia
> driver?  There's no chance of nvidia's libGL having OSMesa functions in
> it.  So explicitly telling VTK libGL always has OSMesa functions does
> sound wrong to me, yes.

Yeah.  I can see how that would be a mess.  Interestingly enough, it sounds 
like the the MacOS libGL must have OSMesa functionality.


> > It also means th at the only ways to enable OSMesa would be
> > 1 - Get your patches, build a custom mangled OSMesa, and compile
> > against it using VTK_OPENGL_HAS_OSMESA off and VTK_USE_MANGLED_MESA
> > on.
> If you *needed* a short term fix, then yes.  I don't think the VTK
> folks would be very happy with you shipping our tree and calling it
> 'VTK'.  We need to get that upstreamed, and it will change during that
> process -- we've already started submitting it and they already dislike
> pieces, so bits are already changing.
> > 2 - Recompile libGL to support OSMesa using --enable-gl-osmesa
> > and compile against it using using VTK_OPENGL_HAS_OSMESA on and
> For the above reason -- it's very possible that existent libGL's do
> *not* and *can*not have OSMesa symbols -- I highly discourage this
> option.

I think we are just going to go with just rebuilding the Fedora 14 VTK package 
with OSMesa functionality turned off for now.  I'll also open a bug report with 
them as well about the way they are compiling it.

Cheers!  -Tyson

More information about the mesa-users mailing list