OpenGL+Linux+NVidia

Hello, (forgive me for cross-posting)

Here at Boeing we are beginning to write/port codes that use OpenGL on our Dell high-end dual-processor Xeon PCs running Redhat E3 WS, pre-installed by Dell. I have on my machine an NVidia Quadro FX3400, using Dell’s repackaged Nvidia driver.

Writng OpenGL apps with PCs running Linux (as opposed to SGI workstations) is new to us and we’re having trouble getting things off the ground. We’ve had problems with the Nvidia drivers in general, but also are trying to decide which implementation of OpenGL to use. Currently we have only Mesa up and running.

However, Mesa does not support several extensions that we desire (shading language in particular) and have also been told that it is not a suitable implementation for serious graphics applications. We are looking for alternatives.

It is my understanding 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.

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.

I read on a very old Linux-how-to that the OpenGL libraries are included with the drivers to the graphics cards. The libraries we have loaded now are those from Mesa. I believe the OpenGL libraries in both implementations have the same name and location, so installing one will overwrite the other.

One source of confusion is that there seems to be multiple linux/nvidia drivers available, one that comes straight from Nvidia, 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. If we cannot do this, how can the NVidia OpenGL libraries be loaded?

Because of other non-related problems, we have tried using both the packaged version of the provided by Dell and the one provided by Redhat. Apparently, there have been problems with both. 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.

We haven’t been able to get support from either Redhat or Dell as both point us towards the other. We have not been able to get support from NVidia either.

(more general question)

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 + extensions or 2.0?) and then writing our graphics software such that anyone with such an implementation should be able to, in theory, run our software, perhaps even under Windows. We wish to avoid writing any code that would require users to have Nvidia graphics cards in their machines. Is this a reasonable strategy, and if so, are there any pitfalls that we should try and avoid? We understand that we need to avoid proprietary extensions and use only the ARB extensions.

If at all possible, we would like to take advantage of the new vertex/fragment shading capabilities, but are concerned that this technology is too cutting edge. The software is due to be released in roughly 6 months.

I also have read something indicating that NVidia’s OpenGL Implementation does not include the GLUT (and possibly GLU, although I believe it is bundled with GL) libraries. If this is true, can GLUT be loaded on top of the NVidia GL libraries?

Any help would be greatly appreciated.

Thanks

Hi !

I have used the nVIDIA drivers (from the nVIDIA website) on Dell Precision SMP machines with a number of different nVIDIA video cards without any problems, but if Dell says that you should not use it then it is not to much to ask that they help you out I guess.

Mesa is OpenGL 1.5 compatible at the momment I belive, but if you use Mesa from the Mesa website it is software only, you do not get any hardware acceleration at all, execpt from that the Mesa implementation is very good quality software and as far as I know it passes all the SGI OpenGL conformance tests, which is more then you can say about some drivers out there.

Mesa comes with GLUT but GLUT is a stand alone library that you can download and compile for any OpenGL driver.

GLU is always included with OpenGL.

Mikael

This question really belongs on the linux specific side, but I’m just going to answer it here.

You go to nvidia’s website, download the driver for linux, get out of X (init 3 brings you to runlevel 3 as root)

Install the driver, and it works. Done (granted, I have never had the pleasure of trying a Quadra).

Maybe you can learn more about Nvidias specific OpenGL driver on developers.nvidia.com
(just a suggestion)

Definitely try out the NVIDIA release drivers. I assume you have rpms or source for the Dell and Redhat drivers so you can go back if you need to. NVIDIA GL shared libs are installed in /usr/lib and/or /usr/lib64 (if you have 64 bit they can install both 32 and 64 bit versions). Not sure where the Mesa shared libs are installed - since I can’t find them and the package is installed I believe they are overwritten. The libGLU libs are just links to the X11R6 GLU libs. The NVIDIA GL headers (not installed by default though accessible through /usr/share/doc/NVIDIA_GLX-1.0/include) can be installed by passing the --opengl-headers to the NVIDIA installer. Also when you use the installer be sure to use either the -K or -k options when new kernels are loaded otherwise the nvidia installer will uninstall the nvidia kernel module from the last kernel used to install it and then you will have to reinstall should you need to go back to a previous kernel. After installations you may need to make some minor modifcations - be sure to read /usr/share/doc/NVIDIA_GLX-1.0/README. It is a long document but has every option needed for NVIDIA card configuration on Linux. THe primary changes you may need to make in your xorg.conf or XFree86.conf is shown in (sec-03) EDITING YOUR X CONFIG FILE of that README file. Be sure to remove the Load DRI line and if you use system-config-display (or Display from System Settings) you will have to go in and remove the line again as it will be added back in (I recommend manual editing of X config files). If you leave the Load DRI line in the X server may not start the next time or you will find graphics are not accelerated.

Although Redhat/Fedora Core no longer supports GLUT (licensing and build issues) they have included freeglut (seems to be just as good core functionality with a few more features) at least in Fedora Core 2 and 3 - check your RH enterprise edition or use up2date or yum to install it. GLU and GLUT will both use NVIDIA’s GL shared libs without issue.

As far as porting it is probably a good idea to mandate a specific version (1.5). It really depends on your user base/potential customers though. Not much I can say beyond that…

Good luck