GLX 1.2 on ATI cards..

Hi all!

On two computers using ATI cards, one a Asus HD4870X2 and one Mobility Radeon x700, both running debian and the latest proprietary driver available from ATI/AMD, glxinfo reports GLX 1.2 on the server side and my GLX 1.3 application crashes. I know i can easily port my application to support both 1.2 and later, but according to the OpenGL SDK, the GLX 1.2 api is kinda obsolete…? Why have they chosen 1.2 and not 1.4 that i had using an NVIDIA GeForce 7950GT? Is it something wrong with my setup?

Thanks in regards
Johan Gardell

Can anyone at least confirm they’re also stuck with GLX 1.2 on an ATI card?

EDIT: I saw now that one of the GLX server extensions it exports, GLX_OML_swap_method requires GLX 1.3 according to

I guess that means it’s supposed to support GLX 1.3 but that something else is wrong.

I’ve ran into the same thing; some code I wrote when I was still using NVIDIA drivers refused to work with ATI’s fglrx driver because my code depended on GLX 1.3 being available.

As a test I disabled the GLX version testing in my code but that just made the glXMakeContextCurrent() call result in a BadDrawable error. Changing that call to glXMakeCurrent made my whole machine lock up, though I had some fbconfig bits left in there that may have confused ATI’s driver.

Some googling around gave me the idea that the ATI (fglrx) drivers as well as the Mesa-based drivers are stuck with GLX 1.2 (server-side). I also peeked at the sources of some applications (glfw, quake3, glxgears) and they all seem to restrict themselfes to using GLX 1.2 functions (i.e. no fbconfig stuff). fglrx seems to be somewhat of a special case since it does support things like pbuffers but doesn’t advertise it (the wine sources hinted at this).

I’m a little confused too because the OpenGL Linux ABI requires OpenGL implementations to export GLX 1.3 functions and (although I’ve forgotten where I read this) some documentation also discouraged using GLX 1.2 calls to set up a context.

Eh…the ABI does not require GLX 1.3. The Mesa based drivers don’t support GLX 1.3, but they should all support GLX_SGIX_fbconfig and GLX_SGI_make_current_read. On r300 using fbconfigs (via the extension functions, not the GLX 1.3 functions) and glXMakeCurrentReadSGI should work. If it doesn’t please create a small test case and submit a bug to The component is “Mesa”.

This should also work on the i915 and i965 drivers.

I’m pretty sure that all recent Mesa-based drivers have fbconfigs, but one or two are missing GLX_SGI_make_current_read. I’m pretty sure r128 and savage are missing it, but I don’t remember about the others.

The GLX_OML_swap_method spec says that it “requires” GLX 1.3, but what it really requires is fbconfigs. These are supported from the server by GLX_SGIX_fbconfig. I know because I wrote all of that code. :slight_smile:

Well, i just wrote two code paths, one for 1.2 and one for 1.3 and newer… I don’t use any “special features” from GLX anyway so i only need an OpenGL context :slight_smile: But its good to know about GLX_SGIX_fbconfig and GLX_SGI_make_current_read. Thanks :slight_smile: