glGetError hängt für einige Sekunden
-
22-08-2019 - |
Frage
Ich entwickle eine OpenGL-Anwendung und ich sehe einige seltsame Dinge passieren. Die Maschine, mit denen ich die Prüfung mit einer NVidia Quadro FX 4600 ausgestattet und es läuft RHEL WS 4.3 x86_64 (Kernel 2.6.9-34.ELsmp).
Ich habe mit einem Debugger durch die Anwendung trat und ich habe bemerkt, dass es auf OpenGL Anrufe hängt, die Informationen aus der OpenGL API erhalten: das heißt - glGetError, glIsEnabled etc. Jedes Mal, es auflegt, das System reagiert nicht mehr für 3-4 Sekunden.
Eine andere Sache, die interessant ist, ist, dass, wenn diese denselben Code auf RHEL 4.5 (Kernel 2.6.9-67.ELsmp) ausgeführt wird, ist es völlig in Ordnung läuft. Der gleiche Code läuft auch perfekt auf Windows XP. Alle Maschinen sind mit der exakt gleichen Hardware:
- PNY NVIDIA Quadro FX4600 768MB PCI Express
- Dual-Intel Xeon DP E5345 Quad Core 2,33 Hz
- 4096 MB 667 MHz DDR2 Fully Buffered
- Super Micro Micro X7DAL-E Intel 5000X Chipsatz Dual Xeon Motherboard
- Enermax Liberty-620-Watt-Netzteil
Ich habe die neuesten 64-Bit-Treiber aktualisiert: Version 177.82, dem Datum der Veröffentlichung:. 12. November 2008 und das Ergebnis ist genau das gleiche
Hat jemand eine Ahnung, was das System verursachen könnte auf diesen OpenGL Anrufe hängen?
Lösung
Es scheint, dass dies ein Problem mit weniger als perfekt NVidia-Treiber für Linux. Ein Upgrade auf eine neuere Kernel scheint zu helfen. Wenn ich gezwungen ist, diese datierten Kernel zu verwenden, gibt es einige Dinge, die ich versucht habe, die zu helfen scheinen.
die __GL_YIELD
Umgebungsvariablen definieren vor "NOTHING"
X zu beginnen scheint mit dieser älteren Kernel Stabilität zu erhöhen.
http: //us.download.nvidia. com / XFree86 / Linux-x86_64 / 177.82 / README / Kapitel-11.html
Ich habe auch versucht Triple-Buffering und Flipping deaktivieren.
Ich habe auch festgestellt, dass diese Foren sehr hilfreich für Linux / NVidia Probleme. Sie einfach eine Suche nach "linux crash"