Update - may, 1st 2003
There were two driver releases by nVIDIA
in the meantime. 1.0-4349 and 1.0-4363. Right now I'm using 1.0-4363.
Again I have no stability issues with it. 1.0-4349 was the same. The
slowdowns "introduced" with the 1.0-4191 release are gone by now. Stuff
is back to nice speeds again. It still could be faster for sure...
we're are never satisfied ;-) The only issues, I sofar found with
1.0-4363, are more of coder-concern. First thing is the still missing
support for the OpenGL/GLX-extension GLX_ARB_render_texture. I emailed
nVIDIA about it asking when we'll see it being supported by the driver.
Andy Ritger of nVIDIA replied promptly and promised that they'll
address this issues as fast as they can. Another thing I found can be
considered a real bug. When grabbing the main rendering-context with
glCopyTexSubImage2D() and the OpenGL window is partly overlapped by
another window, glClear()s to the color- and z-buffer don't seem to
affect the area which is covered by the overlapping window. See a
screenhost of this in action here and here. If you like to test it on your own box, the programs used to reproduce this can be grabbed here.
They are quick hacks, but I have reports from some people that have
them working on their Linux-machines (e.g. several nVIDIA-based
gfx-cards, ATI Radon 9700 Pro). If the contained binaries don't work
for you, you can still try to compile them yourself. You'll need
development-stuff for OpenGL, GLUT, SDL and SDL_Image. BTW, they should
also compile without any change on Windows and MacOS X. I might try to
verify this myself later. Update - march, 7th 2003
This update is much overdue. I am
currently using the 1.0-4191 driver release from nVIDIA. Furthermore I
have updated my system in the meantime. Take a look below for specs. So
what can I say for the usual question about lockups/crashes. Rocksolid
this driver/hardware combo is for me. I have xscreensaver 4.08 (using
many of the gl-hacks) running all the time, I play tons of UT2003 and
foobillard, I model/animate/render away with Realsoft3D, I match-move
with Icarus and finally my own OpenGL/Cg-app fx-nx-dx runs flawlessly
(well as long as the OpenGL/Cg/driver part is concerned ;) Oh yeah,
another thing of interest... 2D slowdown with the 1.0-4191 release. I
use Gnome 2.2.0 and I am affected by this slowdown. Here's a little
hint that might help to get a bit more reponsiveness back again. Just
disable any desktop background image or gradient. Playing around with
the acceleration of the XRENDER XFree86-extension doesn't make a
difference for me. That's about it. Update - september, 27th 2002
Right now I am running the
system described below and using the driver-version 1.0-3123.
Unfortunately I have entered the land of lockups again :/ At least they
are occuring only under specific circumstances, which can be avoided.
And even if those circumstances are present it doesn't happen very
often. Those circumstances are __GL_FSAA_MODE=5 and
__GL_DEFAULT_LOG_ANISO=3. The env-var __GL_SYNC_TO_VBLANK isn't touched
at all. I think it is set to 0 by default (according to
/usr/share/doc/NVIDIA_GLX-1.0/README). When I have __GL_FSAA_MODE=5 and
__GL_DEFAULT_LOG_ANISO=3 set in a bash and start some OpenGL-program
from that very bash it can happen that the machine locks hard. But this
only happens (if it happens) when I exit the started OpenGL-program.
During the run-time of the program it does not happen. Don't ask...
that's just what I observed sofar. Furthermore I have encountered this
only with windowed OpenGL-programs. Not that this makes much sense,
since even "full-screen" OpenGL-programs are "windowed" somehow. I have
only "tested" this for __GL_FSAA_MODE=5, __GL_DEFAULT_LOG_ANISO=3 and
no other combination of these two env-vars. I have better things to do
than to try to lockup my machine :) Update - december, 3rd 2001
After updating my kernel to
2.4.16 and installing the XFree86-driver 1.0-2313 from nVIDIA I checked
out that lockup-thing again. This time it works rock-solid with either
__GL_SYNC_TO_VBLANK=0 or __GL_SYNC_TO_VBLANK=1. I am not sure what
finally lead to this status, but nevertheless I wanted to mention this
here. Introduction to the problem
When I updated the nVIDIA driver
from 0.9-769 to 1.0-1251 on my linux-box suddenly all OpenGL apps
failed. They stalled/hung/crashed. Using RedHat 7.0 I first thought it
was a problem of similar nature like the PAM issue seen on
Mandrake-based systems. But this not the case. Using the tool strace I
found out that OpenGL-programs get stuck when a call to
glXSwapBuffers(), glutSwapBuffers() or SDL_GL_SwapBuffers() occured.
So I said to myself: "Just try out a single-buffered OpenGL-program. See
if the same problem surfaces there too." I changed some OpenGL-program
of mine to only use glDrawBuffer( GL_FRONT ) and simply ignore any
calls to glXSwapBuffers() and the like. Guess what, that worked. Then I
wondered why 0.9-769 could use double-buffering and 1.0-1251 seemingly
not. I soon remembered an env-var I once read about in some README-file
from nVIDIAs driver distribution... "__GL_SYNC_TO_VBLANK". This led to
the...
Solution
Very simple... just make sure the env-var
__GL_SYNC_TO_VBLANK is set to 0. This is really all that is needed.
Somehow 0.9-769 works with both, vblank-sync enabled and disabled. But
1.0-1251 sort of needs an explicit "export __GL_SYNC_VBLANK=0" on my
system. I put the line "export __GL_SYNC_TO_VBLANK=0" that into my
~/.bashrc, but you can also put it /etc/bashrc to make it available to
all users on your system.
My system (updated on march, 7th 2003)
RedHat Linux 7.2 (or 7.3) running
kernel 2.4.19 on a
Athlon XP 2000+ (~1,6 GHz) (512 MBytes PC266 RAM) plugged into an
Asus A7N8X Deluxe mobo with an
forgot the brand (GeForce4 Ti 4800, 64 MBytes DDR, TV-Out/DVI)
Adaptec AHA 2940
Haupauge WinTV
Output of cat /proc/driver/nvidia/agp/* /proc/driver/nvidia/version /proc/driver/nvidia/cards/0 (updated on march, 7th 2003)
Fast Writes: Supported
SBA: Supported
AGP Rates: 8x 4x
Registers: 0x1f000e1b:0x1f004102
Host Bridge: nVidia (unknown)
Fast Writes: Supported
SBA: Supported
AGP Rates: 8x 4x
Registers: 0x1f00421f:0x00000102
Status: Enabled
Driver: NVIDIA
AGP Rate: 8x
Fast Writes: Disabled
SBA: Disabled
Model: GeForce4 Ti 4200 with AGP8X
IRQ: 11
Video BIOS: 04.28.20.05.01
Card Type: AGP
NVRM version: NVIDIA Linux x86 nvidia.o Kernel Module 1.0-4191 Mon Dec 9 11:49:01 PST 2002
GCC version: gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
Addition(s):
Since I saw some reports (mainly @ #nvidia on
irc.openprojects.net and @ www.linuxgames.com) of people still having
lockups after having disabled vblank-syncing I wanted to do some kind
of stress test on my system here. I opened a bash and entered this:
export __GL_FSAA_MODE=4
gears -fps -delay 0 -planetary -geometry 300x240 &
molecule -fps -delay 0 -no-wander -no-labels -geometry 300x240 &
cage -fps -delay 0 -geometry 300x240 &
sierpinski3d -fps -delay 0 -geometry 300x240 &
With these four xscreensaver GL-hacks running I continued to use my
machine as usual... coding with nedit, compiling with gcc, browsing
with mozilla, chatting with xchat and listening to mp3s with xmms
played back from a nfs-mounted partition. After approximately six hours
(5 hours, 56 minutes, 12 seconds) I grew tired of this and stopped the
four GL-hacks. No single lockup or else happened. This is of course no
very sophisticated large-scale test of stability, but for me more than
enough to point out that my system runs rock-solid now. I may repeat
this with Q3A and/or UT later.
Mirco "MacSlow" Müller, last change on may, 1th 2003