PDA

View Full Version : GTX 470 driver issues.



kRogue
05-21-2010, 05:33 AM
Hi all,

Some issues of the GL4.0 drivers under Vista, to report and to see if others had the same issue(s).

Driver version: 197.44, Vista 32bit, linky: http://developer.download.nvidia.com/ope...ternational.exe (http://developer.download.nvidia.com/opengl/4.0/windows/197.44_notebook_win7_winvista_32bit_international. exe) from http://developer.nvidia.com/object/opengl_driver.html. (http://developer.nvidia.com/object/opengl_driver.html)

Firstly the driver did NOT recognize the card as is, I modified the .inf file replacing the string 06CD0 with 06CD4. The new value I got from Vista's device manager, the old value is what was matched to "470 GTX" in the inf file. After doing this the driver installed fine.

Now for GL issues:
(1) doing this:


for(int i=0;i<some_uniform_int;++i)
{
gl_ClipDistance[i]=dot(some_uniform_vec4[i], position);
}

produced: "lvalue in assignment to complex".
This error was not reported in the shader compilation log, but in the link log.

getting grungy and doing:


gl_ClipVertex=position;

produced: "fatal error C9999: *** exception during compilation ***"

On Linux with 195.36.07.04, linky: http://developer.download.nvidia.com/opengl/4.0/linux/NVIDIA-Linux-x86-195.36.07.04-pkg1.run

the driver installed with no issues, but error (1) above did happen where as error (2) did not.

Additionally, changing the code to:


#ifndef MAX_CLIP_PLANES
#define MAX_CLIP_PLANES 6
#endif

for(int i=0;i<MAX_CLIP_PLANES; ++i)
{
float r;

r= (i<number_clip_planes)?
dot( position, clip_planes[i]):
1.0;

gl_ClipDistance[i]=dot( position, some_uniform_ver4[i]);
}

works, so chances are the GLSL compiler is unrolling the above and avoiding the too complicated lvalue, "gl_ClipDistance[i]".

Note that under older drivers(such as 195.62) with a GeForce9800GT the original code worked just fine.

Best Regards
-Kevin

barthold
05-21-2010, 12:07 PM
Thanks kRogue. We'll take a look.

Barthold
(with my NVIDIA hat on)

Piers Daniell
05-28-2010, 09:49 AM
Hi kRogue,

The index to gl_ClipDistance needs to be an integral constant, or one that the compiler can derive. Basically we need to know ahead of time how big gl_ClipDistance needs to be, and with constant indexes we can figure that out.

The GLSL spec talks about this requirement of gl_ClipDistance on page 87:
http://www.opengl.org/registry/doc/GLSLangSpec.4.00.7.pdf

cheers
Piers

Chris Lux
06-02-2010, 12:43 PM
i don't want to cross post, but this also fits in here:

http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&amp;Number=278557#Post2785 57