If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
Bug with all Nvidia drivers > 53.03 on Ti4200?
Hi all.
I've got a Gainward GeForce 4 Ti4200, and wanted to upgrade the driver to fix some annoying instabilities in recent games. The newer drivers fix the instabilities all right, but cause problems with a scientific application I've written. I've tracked down the problem to the glRasterPos() openGL function call: calling this causes the program to crash immediately. It's not my program that's at fault here, as the attached code (a standard example from the OpenGL Red Book) exhibits the same problem. It's not my computer, as I've tried it on another computer with a GeForce 4 Ti4200 and the same issue occurred. I've tried several different driver versions: 30.82, 44.03, 45.23, 52.16 and 53.03 all work, while 56.64, 56.72, 66.93, 67.66 and 71.84 all cause any application that calls glRasterPos() to crash. The only difference between the crashing and not-crashing situations is which NVidia driver is installed, and since all versions before 53.03 work fine and all versions after have a problem I reckon that this must be a driver bug. So, the question is, how do I let the developers at NVidia know about this, given that it seems to be almost impossible to contact them? Pretty crutty idea of customer service, if you ask me. Since the glRasterPos call is unlikely to be used in games and so on, my suspicion is that they just don't test their drivers adequately against the full range of allowed openGl calls. Attached code is 'drawf.c' from the Red Book. It crashes on the glRasterPos2i call. 8-------------------------------------------------------------- /* * Copyright (c) 1993-1997, Silicon Graphics, Inc. * ALL RIGHTS RESERVED * Permission to use, copy, modify, and distribute this software for * any purpose and without fee is hereby granted, provided that the above * copyright notice appear in all copies and that both the copyright notice * and this permission notice appear in supporting documentation, and that * the name of Silicon Graphics, Inc. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. * * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. * * US Government Users Restricted Rights * Use, duplication, or disclosure by the Government is subject to * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph * (c)(1)(ii) of the Rights in Technical Data and Computer Software * clause at DFARS 252.227-7013 and/or in similar or successor * clauses in the FAR or the DOD or NASA FAR Supplement. * Unpublished-- rights reserved under the copyright laws of the * United States. Contractor/manufacturer is Silicon Graphics, * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. * * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. */ /* * drawf.c * Draws the bitmapped letter F on the screen (several times). * This demonstrates use of the glBitmap() call. */ #include GL/glut.h #include stdlib.h GLubyte rasters[24] = { 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0xc0, 0xff, 0xc0}; void init(void) { glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glClearColor (0.0, 0.0, 0.0, 0.0); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glRasterPos2i (20, 20); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glFlush(); } void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho (0, w, 0, h, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); } /* ARGSUSED1 */ void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); } } /* Main Loop * Open window with initial window size, title bar, * RGBA display mode, and handle input events. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(100, 100); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); init(); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutDisplayFunc(display); glutMainLoop(); return 0; } 8-------------------------------------------------------------- -- Mark Mackey http://www.swallowtail.org/ code code code code code code code code code code code code code bug code co de code code code bug code code code code code code code code code code code code code code code code code code code code code code code code code code c |
#2
|
|||
|
|||
It works fine on my machine. GF6 6600 GT, 66.93 drivers. I compiled it
with Visual Studio 6, not anything newer, as a C++ file. Mark Mackey wrote: Hi all. I've got a Gainward GeForce 4 Ti4200, and wanted to upgrade the driver to fix some annoying instabilities in recent games. The newer drivers fix the instabilities all right, but cause problems with a scientific application I've written. I've tracked down the problem to the glRasterPos() openGL function call: calling this causes the program to crash immediately. It's not my program that's at fault here, as the attached code (a standard example from the OpenGL Red Book) exhibits the same problem. It's not my computer, as I've tried it on another computer with a GeForce 4 Ti4200 and the same issue occurred. I've tried several different driver versions: 30.82, 44.03, 45.23, 52.16 and 53.03 all work, while 56.64, 56.72, 66.93, 67.66 and 71.84 all cause any application that calls glRasterPos() to crash. The only difference between the crashing and not-crashing situations is which NVidia driver is installed, and since all versions before 53.03 work fine and all versions after have a problem I reckon that this must be a driver bug. So, the question is, how do I let the developers at NVidia know about this, given that it seems to be almost impossible to contact them? Pretty crutty idea of customer service, if you ask me. Since the glRasterPos call is unlikely to be used in games and so on, my suspicion is that they just don't test their drivers adequately against the full range of allowed openGl calls. Attached code is 'drawf.c' from the Red Book. It crashes on the glRasterPos2i call. 8-------------------------------------------------------------- /* * Copyright (c) 1993-1997, Silicon Graphics, Inc. * ALL RIGHTS RESERVED * Permission to use, copy, modify, and distribute this software for * any purpose and without fee is hereby granted, provided that the above * copyright notice appear in all copies and that both the copyright notice * and this permission notice appear in supporting documentation, and that * the name of Silicon Graphics, Inc. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. * * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. * * US Government Users Restricted Rights * Use, duplication, or disclosure by the Government is subject to * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph * (c)(1)(ii) of the Rights in Technical Data and Computer Software * clause at DFARS 252.227-7013 and/or in similar or successor * clauses in the FAR or the DOD or NASA FAR Supplement. * Unpublished-- rights reserved under the copyright laws of the * United States. Contractor/manufacturer is Silicon Graphics, * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. * * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. */ /* * drawf.c * Draws the bitmapped letter F on the screen (several times). * This demonstrates use of the glBitmap() call. */ #include GL/glut.h #include stdlib.h GLubyte rasters[24] = { 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0xc0, 0xff, 0xc0}; void init(void) { glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glClearColor (0.0, 0.0, 0.0, 0.0); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glRasterPos2i (20, 20); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glFlush(); } void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho (0, w, 0, h, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); } /* ARGSUSED1 */ void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); } } /* Main Loop * Open window with initial window size, title bar, * RGBA display mode, and handle input events. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(100, 100); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); init(); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutDisplayFunc(display); glutMainLoop(); return 0; } 8-------------------------------------------------------------- |
#3
|
|||
|
|||
As you have shown, it almost certainly must be a driver bug but you are
not likely to get satisfaction from either nVidia or Gainword. The problem undoubtedly results from the drivers not being backwards compatible with your card even if nVidia claims the Ti4200 is supported. This has been shown to be true for both older cards and older OSes with new drivers and there are many newsgroup messages regards similar problems with DirectX as well as openGL. |
#4
|
|||
|
|||
Mark Mackey wrote:
Hi all. I've got a Gainward GeForce 4 Ti4200, and wanted to upgrade the driver to fix some annoying instabilities in recent games. The newer drivers fix the instabilities all right, but cause problems with a scientific application I've written. I've tracked down the problem to the glRasterPos() openGL function call: calling this causes the program to crash immediately. It's not my program that's at fault here, as the attached code (a standard example from the OpenGL Red Book) exhibits the same problem. It's not my computer, as I've tried it on another computer with a GeForce 4 Ti4200 and the same issue occurred. I've tried several different driver versions: 30.82, 44.03, 45.23, 52.16 and 53.03 all work, while 56.64, 56.72, 66.93, 67.66 and 71.84 all cause any application that calls glRasterPos() to crash. The only difference between the crashing and not-crashing situations is which NVidia driver is installed, and since all versions before 53.03 work fine and all versions after have a problem I reckon that this must be a driver bug. So, the question is, how do I let the developers at NVidia know about this, given that it seems to be almost impossible to contact them? Pretty crutty idea of customer service, if you ask me. Since the glRasterPos call is unlikely to be used in games and so on, my suspicion is that they just don't test their drivers adequately against the full range of allowed openGl calls. Attached code is 'drawf.c' from the Red Book. It crashes on the glRasterPos2i call. 8-------------------------------------------------------------- /* * Copyright (c) 1993-1997, Silicon Graphics, Inc. * ALL RIGHTS RESERVED * Permission to use, copy, modify, and distribute this software for * any purpose and without fee is hereby granted, provided that the above * copyright notice appear in all copies and that both the copyright notice * and this permission notice appear in supporting documentation, and that * the name of Silicon Graphics, Inc. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. * * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. * * US Government Users Restricted Rights * Use, duplication, or disclosure by the Government is subject to * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph * (c)(1)(ii) of the Rights in Technical Data and Computer Software * clause at DFARS 252.227-7013 and/or in similar or successor * clauses in the FAR or the DOD or NASA FAR Supplement. * Unpublished-- rights reserved under the copyright laws of the * United States. Contractor/manufacturer is Silicon Graphics, * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. * * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. */ /* * drawf.c * Draws the bitmapped letter F on the screen (several times). * This demonstrates use of the glBitmap() call. */ #include GL/glut.h #include stdlib.h GLubyte rasters[24] = { 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0xc0, 0xff, 0xc0}; void init(void) { glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glClearColor (0.0, 0.0, 0.0, 0.0); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glRasterPos2i (20, 20); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); glFlush(); } void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho (0, w, 0, h, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); } /* ARGSUSED1 */ void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); } } /* Main Loop * Open window with initial window size, title bar, * RGBA display mode, and handle input events. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(100, 100); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); init(); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutDisplayFunc(display); glutMainLoop(); return 0; } 8-------------------------------------------------------------- I found this in some random OGL FAQ, maybe it applies: 10.070 How do I draw glBitmap() or glDrawPixels() primitives that have an initial glRasterPos() outside the window's left or bottom edge? When the raster position is set outside the window, it's often outside the view volume and subsequently marked as invalid. Rendering the glBitmap and glDrawPixels primitives won't occur with an invalid raster position. Because glBitmap/glDrawPixels produce pixels up and to the right of the raster position, it appears impossible to render this type of primitive clipped by the left and/or bottom edges of the window. However, here's an often−used trick: Set the raster position to a valid value inside the view volume. Then make the following call: glBitmap (0, 0, 0, 0, xMove, yMove, NULL); This tells OpenGL to render a no−op bitmap, but move the current raster position by (xMove,yMove). Your application will supply (xMove,yMove) values that place the raster position outside the view volume. Follow this call with the glBitmap() or glDrawPixels() to do the rendering you desire. |
#5
|
|||
|
|||
In article ,
Sharanga Dayananda wrote: It works fine on my machine. GF6 6600 GT, 66.93 drivers. I compiled it with Visual Studio 6, not anything newer, as a C++ file. Yes, I suspect it's specific to the Ti4200 (or similar ages of card): newer cards seem to work fine for me as well. -- Mark Mackey http://www.swallowtail.org/ code code code code code code code code code code code code code bug code co de code code code bug code code code code code code code code code code code code code code code code code code code code code code code code code code c |
#6
|
|||
|
|||
In article ,
Robert Gault wrote: As you have shown, it almost certainly must be a driver bug but you are not likely to get satisfaction from either nVidia or Gainword. The problem undoubtedly results from the drivers not being backwards compatible with your card even if nVidia claims the Ti4200 is supported. This has been shown to be true for both older cards and older OSes with new drivers and there are many newsgroup messages regards similar problems with DirectX as well as openGL. Arse: that's what I feared. Nvidia of course have a perfect right not to support older cards with newer drivers (although supporting older cards is good customer service), but they shouldn't claim that the cards are supported when they clearly don't actually test to see if they are . -- Mark Mackey http://www.swallowtail.org/ code code code code code code code code code code code code code bug code co de code code code bug code code code code code code code code code code code code code code code code code code code code code code code code code code c |
#7
|
|||
|
|||
In article ,
deimos wrote: I found this in some random OGL FAQ, maybe it applies: 10.070 How do I draw glBitmap() or glDrawPixels() primitives that have an initial glRasterPos() outside the window's left or bottom edge? Yes, this is a quite separate problem. I had hoped at one point that I could use the the glBitmap() mathod of moving the raster position to avoid having to call glRasterPos at all, but unfortunately you can only change the x and y coords of the raster position with glBitmap, and I need to set a z coord as well. -- Mark Mackey http://www.swallowtail.org/ code code code code code code code code code code code code code bug code co de code code code bug code code code code code code code code code code code code code code code code code code code code code code code code code code c |
#8
|
|||
|
|||
Arse: that's what I feared. Nvidia of course have a perfect right not to
support older cards with newer drivers (although supporting older cards Except that's a major selling feature. We don't want to go back to the days of driver updates for cards being abandoned whether there are outstanding bugs or nott. is good customer service), but they shouldn't claim that the cards are supported when they clearly don't actually test to see if they are . They probably do test. But with software this complex, it's not possible to test for everything all of the time. |
#9
|
|||
|
|||
In article , tq96 wrote:
Arse: that's what I feared. Nvidia of course have a perfect right not to support older cards with newer drivers (although supporting older cards Except that's a major selling feature. We don't want to go back to the days of driver updates for cards being abandoned whether there are outstanding bugs or nott. I agree: I was perhaps being over-nice to Nvidia there... is good customer service), but they shouldn't claim that the cards are supported when they clearly don't actually test to see if they are . They probably do test. But with software this complex, it's not possible to test for everything all of the time. Except that the bug that I see involves the driver segfaulting immediately when one of the standard original openGL 1.0 calls is made, and moreover the original openGL 1.0 book's example programs contain several examples in which this bug shows up. That's not really very obscure. -- Mark Mackey http://www.swallowtail.org/ code code code code code code code code code code code code code bug code co de code code code bug code code code code code code code code code code code code code code code code code code code code code code code code code code c |
#10
|
|||
|
|||
Mark Mackey wrote:
In article , Sharanga Dayananda wrote: It works fine on my machine. GF6 6600 GT, 66.93 drivers. I compiled it with Visual Studio 6, not anything newer, as a C++ file. Yes, I suspect it's specific to the Ti4200 (or similar ages of card): newer cards seem to work fine for me as well. I've actually tried this demo on a Ti4200, and a GF2 MX400 a few years back. It could actually be yer compiler. I've heard many many people (including myself ) complaining that OpenGL wasn't working or nVidia's drivers aren't working, and always 'tis been some fault of my code. I honestly doubt that they would've broken core functionality like that. I think quite a few games use glRasterPos to render some components of HUDs and such. If you'd like to try out the executable I compiled, you can download it at: http://sparrowhawk.no-ip.info/downloads/ it's glRasterPos.exe in that folder. (please virus scan it, though I can assure you that 'tis not virus infected.) This would eliminate yer compiler as the culprit. Sharanga |
|
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Are Forceware drivers the same as regular Nvidia drivers? | Luke Piasecki | Nvidia Videocards | 13 | October 6th 04 02:08 AM |
Question Evga 6800GT and Official drivers | Jean | Nvidia Videocards | 5 | July 8th 04 04:34 AM |
NVidia 6800 --- developer comments from Nvidia news release | John Lewis | Nvidia Videocards | 1 | April 17th 04 12:54 AM |
Strange behavor with different Nvidia drivers on a FX 5900 SE or TX | Rusty Smith | Nvidia Videocards | 1 | February 24th 04 07:24 PM |
Nvidia drivers seem to get corrupted over 2 week period | Stuart M | Nvidia Videocards | 8 | August 7th 03 03:08 PM |