[patch] Use dlsym instead of glXGetProcAddress in xdriinfo
Brian Paul
brian.paul at tungstengraphics.com
Thu Nov 24 07:41:18 PST 2005
Andy Ritger wrote:
>
> On Wed, 23 Nov 2005, Vladimir Vukicevic wrote:
>
>
>>On 11/21/05, Felix Kühling <fxkuehl at gmx.de> wrote:
>>
>>>The attached patches (monolithic and modular) should fix dynamic linking
>>>problems with xdriinfo, that NVidia users were complaining about. Their
>>>libGL doesn't define glXGetProcAddress but only glXGetProcAddressARB.
>>
>>Has anyone contacted nVidia to see if they'd be willing to export the
>>relevant GLX symbols (glXGetProcAddress in particular, but possibly
>>others as well) from their libGL? It seems like the least painful
>>solution, especially since it can potentially lower the amount of
>>support issues regarding 6.9 that they have to deal with.
>
>
> Thanks for asking, Vladimir. I apologize for not contributing to
> this thread sooner. Between Matthias, Ian, and others, most of the
> major points have already been mentioned, but I'll reiterate:
>
> - the Linux OpenGL ABI
> (http://oss.sgi.com/projects/ogl-sample/ABI/) requires
> the GLX_ARB_get_proc_address extension (which provides
> glXGetProcAddressARB)
>
> - glXGetProcAddress is a part of the GLX 1.4 draft spec
>
> - the GLX 1.4 spec has never been ratified (it's not available,
> as far as I can tell, on opengl.org, and the only version of
> the spec I've ever seen was only labeled "Draft")
>
> - it is undesirable to advertise a version of GLX that is not
> ratified (if it hasn't been ratified, then it's still possible
> to change; if the spec changes, how will applications know
> if an implementation's GLX 1.4 is the ratified 1.4 or the
> earlier draft version of 1.4); in this case, this point
> is probably just academic -- Mesa has claimed GLX 1.4 long
> enough that I doubt anyone would want to try to change the
> GLX 1.4 draft spec.
I think what happened (long time ago) was that GLX 1.4 was spec'd and
ratification was imminent, but for some reason, it never happened. In
anticipation of 1.4 I added glXGetProcAddress to Mesa and bumped the
version number for the next Mesa release. I neglected to
remove/disable the 1.4 stuff prior to the Mesa release and it went out
that way, and stayed that way. I didn't even realize that 1.4 wasn't
ratified until much later.
> - it is undesirable to expose OpenGL API entry points if the
> version string or extension string does not properly reflect
> that the entry point is available (eg: glXGetProcAddress should
> not be expoed by an implementation unless that implementation
> also claims GLX 1.4), mostly because it encourages poor
> versioning practices in OpenGL applications. Ulrich Drepper
> has good things to say about entry point control in his
> DSO HowTo (http://people.redhat.com/drepper/dsohowto.pdf).
>
> I think the lesson here should be that if you want to write an OpenGL
> application on Linux that will be portable to anything other than
> GLX 1.4 implementations, you should use "glXGetProcAddressARB",
> rather than "glXGetProcAddress". The former is required by the
> Linux OpenGL ABI, so it's a safe assumption, while the latter is
> only provided by GLX 1.4 implementations.
>
> That said, I'd like to update NVIDIA's GLX implementation to GLX 1.4.
> I've pinged the GLX-ARB working group about the official status of
> GLX 1.4, and hopefully we can just make GLX 1.4 official, at which
> point NVIDIA's implementation will be updated, the version string
> will be reved, and glXGetProcAddress entry point will be exposed.
That would be great. Thanks, Andy.
-Brian
More information about the xorg
mailing list