glGetError si blocca per alcuni secondi
-
22-08-2019 - |
Domanda
Sto sviluppando un'applicazione OpenGL e vedo accadere cose strane. La macchina che sto testando con è dotato di una NVIDIA Quadro FX 4600 ed è in esecuzione RHEL WS 4.3 x86_64 (kernel 2.6.9-34.ELsmp).
Ho fatto un passo attraverso l'applicazione con un debugger e ho notato che è appeso sulle chiamate OpenGL che ricevono informazioni dal API OpenGL: vale a dire - glGetError, glIsEnabled, ecc Ogni volta che si blocca, il sistema non risponde per 3-4 secondi.
Un'altra cosa che è interessante è che se questo stesso codice viene eseguito su RHEL 4.5 (Kernel 2.6.9-67.ELsmp), funziona tutto bene. Lo stesso codice viene eseguito anche perfettamente su Windows XP. Tutte le macchine stanno utilizzando esattamente lo stesso hardware:
- PNY nVidia Quadro FX4600 768MB PCI Express
- dual Intel Xeon DP Quad Core E5345 2.33hz
- 4096 MB a 667 MHz DDR2 Fully Buffered
- Super Micro X7DAL-E Intel 5000X chipset Dual Xeon Motherboard
- Enermax Liberty 620 watt di alimentazione
Ho aggiornato ai più recenti driver a 64 bit: Versione 177.82, Data di rilascio:. Nov 12, 2008 e il risultato è lo stesso esatto
Qualcuno ha qualche idea di che cosa potrebbe causare il blocco del sistema su queste chiamate OpenGL?
Soluzione
Sembra che questo è un problema con i driver di meno-che-perfetto NVidia per Linux. Aggiornamento ad un kernel più recente sembra aiutare. Se sono costretto ad usare questo kernel datato, ci sono alcune cose che ho provato che sembrano aiutare.
Definire la variabile d'ambiente __GL_YIELD
a "NOTHING"
prima di iniziare X sembra aumentare la stabilità con questo kernel più vecchi.
http: //us.download.nvidia. com / XFree86 / Linux x86_64 / 177.82 / README / capitolo-11.html
Inoltre ho provato a rendere invalido triplo buffering e Flipping.
Ho anche scoperto che questi forum sono molto utili per problemi di Linux / NVidia. Basta fare una ricerca per "incidente linux"