How to get correct OpenGL version?

I am running OpenSuSE 11.0 on my machines. This has Mesa 7.0.3, and the Mesa web site states “Version 7.x of Mesa implements the OpenGL 2.1 API.” Yet when I run glxinfo, I get “OpenGL version string: 1.4 Mesa 7.0.3”, and program that use OpenGL 2 features do not run.

Can anyone explain how to get Mesa to be the OpenGL version that it claims to be?

The machines are a Thinkpad T61 with Intel 965GM, and a T60p with ATI FireGl 4250 (IIRC).


Please give renderer, version and vendor strings from the glxinfo output.

By default Mesa will restrict the GL version to what the hardware driver can do. While Mesa 7.x supports OpenGL 2.1 most drivers don’t. Thus you’re restricted to OpenGL 1.4 to ensure that you get hardware acceleration.


hem, I got opengl 2.1 support with a intel 965GM chipset with the ubuntu distro. Go on the Intel website to see what actually supports this chipset and were you can get lastest drivers. On Ubuntu they comes with OS updates.

Here’s the string info:

OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 965GM 20061102
OpenGL version string: 1.4 Mesa 7.1

This is after installing the new Mesa 7.1 over the weekend, to replace 7.0.3.
The Mesa web site said that OpenGL 2.1 is supposed to be supported with the
Intel driver. There’s a file in /usr/lib64/dri with a file timestamped at the update time. If the number in the renderer string is a date, as it appears, could it be that the upgrade had an old driver version?

OK, I have the same configuration (exactly the same vendor, version and renderer string).
Unfortunately driver developers often forget to update the date string, so it’s only a lower bound on the driver date.

Mesa 7.1 and the i965 driver that come with it do support OpenGL 2.1. However they need a sufficiently recent direct rendering manager (DRM) kernel module to do so.

The following command will tell you your current DRM version:
cat /var/log/Xorg.0.log | grep DRM

On my system I have the following line in the output:
(II) [drm] DRM interface version 1.3

Telling me that my DRM version is 1.3. However 1.8 is needed to support OpenGL 2.1.


That’s strange: I have the same DRM interface version in my Xorg.0.log. However, in /usr/lib64 I have (and symlinks), the same in /usr/lib, and no other libdrm* anywhere in /usr. Where would it be getting the old version from?

AFAIK this DRM version is different from the libdrm version. Only upgrading the kernel module will help. I do not know if 1.8 already is in the latest standard kernels. Maybe only using the -mm kernels or even getting the DRM module from the DRI developers will help.


Brilliant! [sarcasm emoticon]

Now if there was only some way of compiling a new Xorg module that I could understand, I could do that. (I’m not a complete novice - been doing Unix/Linux software for a couple of decades - but I still got lost about two paragraphs into the only compilation instructions I found.) I’d even be happy if I could find somewhere to download the source. I see notices about a new version (7.4) having been released just recently, but I can’t find anywhere to download it from.

This is not about Xorg. This is a kernel module. You do not need a newer Xorg.

Linux GL drivers work like this:
In the kernel there is a DRM module which does the direct access to the hardware. It is used by the DRI drivers. libdrm acts as a kind of glue between these two.

I currently use kernel 2.6.26 and the i965 DRM module that’s included is version 1.3. I noticed 2.6.26 is the latest released kernel version. Maybe this DRM 1.8 thing we need will be in 2.6.28.


I may have to resort to that. I usually run OpenSuSE since I know how to get most things working in it. Tried installing Fedora 9 on a machine this afternoon, because it is supposed to have a version of Xorg 7.4, but I can’t get it to even start the window manager. Seems to be locked into Gnome :frowning:

I’m a little worried that Ubuntu would be the same. Haven’t tried it, but what I’ve seen suggests that they follow the “make it look like Windoze 'cause Bill Gates has too much money” philosophy, rather than having a Linux that acts like a Unix system should. But if anyone knows to the contrary, I’d be happy. I just need fvwm2 with tcsh running in a few xterms…

Anyway it is very easy to install fvwm2 packages and use it as default.

“hem, I got opengl 2.1 support with a intel 965GM chipset with the ubuntu distro”

Hi, I also have a intel 965GM and use kubuntu (8.10). could you tell me what you’ve done to get opengl 2.1. support? I’ve looked for info in google, I’ve gone to the intel website as well… but I don’t know what to do exactly.

I fact I were wrong, I don’t work with opengl on this kind of hardware, I just read the wikipedia article that states that this graphic processor should support opengl 2.1 and I though latest intel drivers supported it.

I have looked more further into this downloading and compiling latest intel graphic drivers sources myself which was a bit awkward but it was not even better, always no more than 1.4 support! Thank you intel.

Sorry for this wrong information, I was not well informed.

Good luck! :slight_smile:

Well, there are drivers that support 2.1.

Linux drivers consist of multiple parts, for 3D acceleration the most important are:

  1. Mesa with DRI drivers.
  2. The hardware-specific kernel module
  3. Other stuff such as libdrm, the X driver, generic stuff in the kernel, etc.

The problem here is that 2) is rather outdated in kernels commonly used. The current version of 2) is not yet part of the mainstream kernel (I suppose Linus wants it to be tested more before it will be unleashed on all Linux users). AFAIK 1) and 3) are already capable of OpenGL 2.1 in current distros.

So you have to wait 'till a new kernel module for intel graphics chips hits the mainline kernels or build your own kernel with a more current DRM than what you’d get from an ordinary kernel.


Thanks a lot PkK for the precision. :slight_smile:

Thanks for the interesting info Philipp.

I’m not really familiar with kernel compilation and such things but I’d really like to be able to have opengl 2 support. Could you tell me how can I build such a kernel? Is there any patch I can directly apply to the source kernel and that’s it?

Btw, do you know when this code will be inserted into the kernel? Will it be in the next 2.6.28?

Thanks a lot!

Do you mean GEM kernel?

The most recent stable driver release is available at <u>;/u&gt;. There should be another release in the next few weeks. We’re working on a few more bugs before it ships. I don’t know when distros will pick it up.

If you don’t want to wait, you can get the latest & greatest. Grab Mesa master and Eric’s for-airlied kernel branch. See <u>;/u&gt;. Ignore what it says on there about branches. Get the for-airlied branch. That’s the stable stuff that’s waiting to go upstream.

thanks idr!

so, does the for-airlied kernel branch provide a drm kernel module that supports opengl 2?

When paired with the appropriate user-mode driver, yes. The kernel module just handles command submission, memory management, and interrupt handling. The real meat is in the user-mode portion of the driver. With the memory manager in the for-airlied branch, the user-mode driver can export correct GL_ARB_occlusion_query, which allows OpenGL 2.0 to be advertised.