PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : merkwürdiges Problem mit OpenGL und neuem NV-Treiber


Asmodeus
2006-09-11, 09:58:03
Mit dem bisherigen Nvidia-Treiber 91.31 hatte ich keine Probleme. Mit dem 91.47 habe ich jetzt jedoch folgendes Problem. Meine selbstgeschriebene Anwendung stürzt reproduzierbar ab, sobald im Fullscreenmodus zum ersten mal nach dem Löschen des Depth-Buffers ein OpenGL-Befehl aufgerufen wird. (laut Debugger Absturz in nvoglnt.dll) Dabei spielt es keine Rolle, was für ein OpenGL-Befehl kommt, es stürzt immer ab. Zum Absturz kommt es aber nur im Fullscreenmodus, im Fenstermodus läuft alles problemlos. Außerdem stürzt er im Fullscreenmodus aber nur ab, wenn ich Multisampling über den PFD aktiviere. Ohne MSAA oder mit Supersampling tritt das Problem komischerweise nicht auf. Nun bin ich etwas ratlos, da ich nicht weiß, ob und wenn ja, wie ich dieses Problem beheben kann. Aber vielleicht hat irgendjemand einen Vorschlag oder eine Idee.

EDIT: Ich habe gerade noch herausgefunden, dass der Absturz sogar nur bei 4xMSAA auftritt, bei 2xMSAA läuft auch alles problemlos.

Gruss, Carsten.

Gast
2006-09-11, 11:13:44
Naja eindeutiger Treiberbug halt würde ich sagen. Sowas sieht man ja immer wieder in den Fixlisten von nVIDIA ("fixed crash in foo when playing in 1600x1200 with 4xMSAA" etc.). Wie sie sowas produzieren würde ich aber auch gerne wissen.

Kannst wohl nur nVIDIA Bescheid geben.

Asmodeus
2006-09-11, 12:59:40
Kann man aus einem eigenen Programm heraus über die NVCPL.dll den voreingestellten Antialiasing-Modus eigentlich nur abfragen, oder auch setzen?
Falls das geht, wäre das vielleicht ja noch eine Alternative, gegenüber dem Setzen des AA-Modus über die Multisample-Extension und den PFD.

Gruss, Carsten.

muhkuh_rs
2006-09-11, 14:49:32
Ich habe keine Probleme mit 4xMSAA bei diesen Treibern. Einen Treiberbug halte ich für unwahrscheinlich, da der Fehler so elementar ist, dass er wohl bei nVidias eigenen Tests aufgefallen wäre.

Ich würde versuchen, einen minimalen test case zu schreiben und zu posten. Sollte es wirklich ein Bug sein, dann braucht man den sowieso wenn man den an nvidia melden will.

ScottManDeath
2006-09-11, 18:34:47
Videospeicher alle?

Asmodeus
2006-09-12, 10:46:55
Videospeicher alle?

Hmm, naja, ich habe ja wie schon gesagt, nur vom 91.33 auf den 91.47 gewechselt. Oder spekulierst Du darauf, dass z.B. das Speichermanagement unter dem 91.47 geändert wurde, und der Speicher deshalb plötzlich knapp wird? Damit im Zusammenhang könnte vielleicht stehen, dass ich noch beobachtet habe, dass es nur zu Abstürzen kommt, wenn ich eine sehr komplexe Szene, mit enorm viel Geometrie habe. Obwohl ja wie schon gesagt, davon überhaupt nichts angezeigt wird, denn er stürzt ja vorher immer schon ab. Jedoch ist der Videospeicher bei einer komplexen Szene vor dem Zeichnen natürlich schon gut mit Geometrie und Texturen gefüllt.

Gruss, Carsten.

del_4901
2006-09-12, 11:39:46
Was sagt denn NVPerfHUD und Co.?

Asmodeus
2006-09-12, 12:06:43
Was sagt denn NVPerfHUD und Co.?

Läuft NVPerfHUD nicht nur mit Direct3D? Ansonsten betrug der Speicherbedarf für Geometrie und Texturen bei sehr komplexen Szenen auch bei der Treiberversion 91.33 schon über 300 MB (bei einer 256MB PCI-express Grafikkarte) und es funktionierte alles wunderbar. Nur jetzt mit 91.47 funktioniert es plötzlich nicht mehr.

Gruss, Carsten.

muhkuh_rs
2006-09-12, 12:12:05
Läuft NVPerfHUD nicht nur mit Direct3D? Ansonsten betrug der Speicherbedarf für Geometrie und Texturen bei sehr komplexen Szenen auch bei der Treiberversion 91.33 schon über 300 MB (bei einer 256MB PCI-express Grafikkarte) und es funktionierte alles wunderbar. Nur jetzt mit 91.47 funktioniert es plötzlich nicht mehr.

Gruss, Carsten.

Ja, NVPerfHUD läuft nur mit D3D. Für OpenGL gibt es den gDebugger:
http://www.gremedy.com/

del_4901
2006-09-12, 12:43:23
Ich bin ein Blindfish ^^

http://developer.nvidia.com/object/glexpert_home.html
hier das könnte noch nützlich werden. Zum gDEBugger

Asmodeus
2006-09-12, 12:59:49
Leider gibt es mit den Tools gleich mehrere Probleme. NVPerfKit enthält in der letzten mir zur Verfügung stehenden Version nur den angepassten 85.96 Treiber. Damit treten auch keine Probleme auf. Bis zu einer NVPerfKit Version mit 91.47 oder höherem Treiber wird es wohl noch etwas dauern. Und gDebugger konnte ich leider bisher nie dazu bewegen, mit meiner Anwendung zusammenzuarbeiten. :(

Gruss, Carsten.

del_4901
2006-09-12, 13:20:58
Mach doch mal ein minimal Programm ... meinetwegen mit zufallsgenerierten Würfeln oder was weis ich.

Asmodeus
2006-09-12, 13:48:48
Mach doch mal ein minimal Programm ... meinetwegen mit zufallsgenerierten Würfeln oder was weis ich.

Sorry, wenn ich gerade etwas auf dem Schlauch stehe, aber was bringt mir denn ein Minimalprogramm? Ich möchte doch, dass mein Programm, so wie es ist läuft, und nicht ein Programm, mit jeder Menge Würfel. Bis Ende der Woche steht mir wohl eine 512MB Karte zur Verfügung, da werd ich erstmal testen, ob das Problem dann immer noch auftritt, um vielleicht die Theorie des knappen Speichers bestätigen oder widerlegen zu können.

Gruss, Carsten.

del_4901
2006-09-12, 13:52:29
Das könntest du dann uns und NV in die Hand geben.
Gibt du uns dein ganzes Programm (wirst du vllt. gar nicht wollen) schauen wir eh alle erstmal wie ein Schwein ins Uhrwerk, und dann verliert man schnell die Lust Bugs für Andere zu finden. ^^

muhkuh_rs
2006-09-12, 15:19:25
Sorry, wenn ich gerade etwas auf dem Schlauch stehe, aber was bringt mir denn ein Minimalprogramm? Ich möchte doch, dass mein Programm, so wie es ist läuft, und nicht ein Programm, mit jeder Menge Würfel. Bis Ende der Woche steht mir wohl eine 512MB Karte zur Verfügung, da werd ich erstmal testen, ob das Problem dann immer noch auftritt, um vielleicht die Theorie des knappen Speichers bestätigen oder widerlegen zu können.

Gruss, Carsten.

Zu 99% ist der Bug im eigenen Code. Wenn man einen Testfall entwickelt, dann nimmt man so lange Sachen heraus, bis der Fehler nicht mehr auftritt. Bei dieser Prozedur fällt einem meistens auf, dass man irgendwo irgendwas gemacht hat, was zu undefiniertem Verhalten führt. Wenn nicht, dann kommt etwas heraus, mit dem man bei dem Treiberhersteller schnell mit Hilfe rechnen kann.

Wenn wirklich so etwas vorliegt, dass der Treiber bei vollem Videospeicher Fehler macht, dann lässt sich so etwas auch mit einem Testfall finden. Einfach mal wild Dummy-Resourcen generieren und dann schauen was passiert.