On Thu, 2006-06-01 at 17:07 +0100, Alan Hourihane wrote:
> On Thu, 2006-06-01 at 08:53 -0700, Ian Romanick wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > Jacek Poplawski wrote:
> > > On 5/30/06, Pedro Maia <[EMAIL PROTECTED]> wrote:
> > > 
> > >>  To run quake2 please use, LD_PRELOAD="path/to/libGL.so" quake2
> > >>
> > >> In my case it works fine, with that trick , without it didn't work.
> > > 
> > > But why it didn't work? It opens /usr/lib/libGL.so for sure, because
> > > without
> > > it even software accelerated OpenGL doesn't work in the game.
> > > Quake2 is the only application I tried which loads libGL with dlopen.
> > 
> > I think the way that Quake2 dlopens libGL prevents some symbols in libGL
> > from being exposed to the driver.  I seem to remember alanh mentioning
> > something about this, but I don't recall the details.  My dlopen-fu is
> > lacking, so I'm not sure what the problem or the solution might be.
> 
> Basically, what happens is this....
> 
> A game may try to dlopen libGL itself at runtime rather than linking at
> build time.
> 
> So, the linux dllinker does not bother to search for symbols to resolve
> that exist in the DRI driver. I'm not sure exactly why it doesn't
> though.

Actually I do remember my theory....

When a program is linked at build time, libGL is the one responsible for
dlload'ing the DRI driver and resolves symbols perfectly well with the
current RTLD flags.

But when the program dlopen's libGL itself, it resolves what it
currently has access to which the DRI driver isn't actually loaded. I
suspect for this to work the libGL's dlinit() routine (that's called
when dlopen'ed) would need to someone link in the correct DRI driver at
that time - but I'm pretty sure all the available details to do that
wouldn't be available.

I don't think there's any easy fix, which is why I resorted to the
LD_PRELOAD approach.

This may all be bogus though.

Alan.



--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to