Nvidia implementation of OpenGL for Linux?


Here at Boeing we are beginning to write/port codes that use OpenGL to our Dell high-end PCs running Linux (Redhat E3 WS, pre-installed by Dell). Up until now we have been using Mesa.

However, Mesa does not support several extensions that we need and have been told that it is not a suitable implementation for serious graphics applications. We have also been told that there is an Nvidia implementation of OpenGL that is either freely available in general, or that should be freely available to us since we have purchased Nvidia graphics cards.

Specifically, I have on my machine an NVidia Quadro FX3400, using Dell’s repackaged Nvidia driver.

We cannot seem to find out whether or not this information is true, and if so, where to find and how to install NVidia’s implementation of OpenGL?

Can anyone help?

(second question: multiple drivers for NVidia?)

There seems to be multiple drivers available, one that comes straight from Nvidia, and another that has been repackaged and provided by Dell, and yet another that is provided by Redhat. Dell says do NOT download and install the driver directly from Nvidia’s website. So we have tried using both the packaged version from Dell and the one provided by Redhat. Apparently, there have been problems with both, each having its own unique set of issues. I have seen these two drivers referred to as “nv” and “nvidia”, although I must admit that I am confused as to which they refer to.

This seems odd since my understanding is that Dell and Redhat are only allowed to repackage the driver provided by Nvidia, so in theory they should behave the same. My understanding is that noone anywhere has a copy of the source code for Nvidia drivers other than Nvidia themselves. Can anyone give me any insight as to why the 2 drivers do not behave identically? (Other than the obvious answers, for example that they are not the same version).

In any case, for use with OpenGL, is one of these drivers more well suited than another?

(Another issue: Portable OpenGL code?)

We are attempting to make our software as portable as possible, and are contemplating requiring our users to run a conformant version of OpenGL (1.5 or 2.0?). We wish to avoid writing any code that would require users to be using Nvidia graphics cards. Any hints or advice on strategies to avoid this? Are there any pitfalls in particular to avoid?

Peter Bismuti
Shared Services Group
Commercial Airline Division
Renton, WA

In answer to some of your questions (I have not used linux for a while however):

Nvidia linux driver site:
Help with nvidia linux drivers

Note MESA is (generally) a software implementation. You will not be using the 3D features of you video card if you use it.

The drivers
“nv” - 2D only nvidia (comes with distributions)
“nvidia” - 2D and 3D support. (as can be downloaded from the Nvidia site)

I would personally try the drivers from the Nvidia site. I believe there are also some scripts included in the download which will tell you if the driver is installed correctly. (Ensure AGP is setup correctly) (Dell probably do not want to support driver problems with people running different driver versions)

As long as you don’t use any NV extensions, it should run on any OpenGL implementation. Nvidia have two obvious exceptions to this rule:

-Texture clamp mode. In order to support broken applications, Nvidia in the past have treated GL_CLAMP as GL_CLAMP_TO_EDGE. Not sure on the recent status.

  • GLSL - Nvidia supports and lot of non-standard “extensions” (such as allowing you to write float x=1; instead of float x=1.0;) so if you use GLSL ensure you run your shaders through the GLSL validator available on the 3Dlabs website.

Note: there have been answers posted on the Beginners
forum where you cross-posted.

The “nv” is not “2D” but it is a fully functional
MESA-based software implementaion. It just does not
use the nVidia’s hardware at all. The “nvidia” driver
comes from nVidia as stated on the previous post.
But note that both of these names are used for the
system to identify the device driver to use when
starting up the X window system. It is in a section
of the XF86Config file with is located in /et/X11
or something like that. That is where the name comes

Avoid using NV extensions if you can. This menas
that you will loose some features but will most
cenrtainly be compatible with other OpenGL implementaions.
Anything with ARB is probably going to work, but
be careful.

GLU comes with GL and GLUT is standalone and can
be obtained independently.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.