trava glGetError para vários segundos
-
22-08-2019 - |
Pergunta
Estou desenvolvendo uma aplicação OpenGL e eu estou vendo algumas coisas estranhas acontecem. A máquina que eu estou testando com está equipado com uma NVIDIA Quadro FX 4600 e ele está sendo executado RHEL WS 4.3 x86_64 (kernel 2.6.9-34.ELsmp).
Eu pisei através da aplicação com um depurador e eu notei que ele está pendurado em chamadas OpenGL que estão recebendo informações da API OpenGL: ie - glGetError, glIsEnabled, etc. Cada vez que ele desliga, o sistema não responde por 3-4 segundos.
Outra coisa que é interessante é que se esse mesmo código é executado no RHEL 4.5 (Kernel 2.6.9-67.ELsmp), funciona completamente bem. O mesmo código também funciona perfeitamente no Windows XP. Todas as máquinas estão usando o mesmo hardware exata:
- PNY nVidia Quadro FX4600 768MB PCI Express
- duplo Intel Xeon DP Quad Core E5345 2,33 Hz
- 4096 MB 667 MHz com buffer DDR2
- Super Micro X7DAL-E Intel 5000X Chipset dual Xeon Motherboard
- Enermax Liberty 620 watt fonte de alimentação
Eu fiz o upgrade para os drivers mais recentes de 64 bits: Versão 177,82, Data de lançamento:. 12 de novembro de 2008 e o resultado é exatamente o mesmo
Alguém tem alguma idéia do que poderia estar causando o sistema para pendurar essas chamadas OpenGL?
Solução
Parece que este é um problema com menos-que-perfeito controladores da NVidia para Linux. Atualizando para um kernel mais recente aparece para ajudar. Se eu sou forçado a usar este kernel datado, há algumas coisas que eu tentei que parecem ajuda.
Definindo a variável de ambiente __GL_YIELD
para "NOTHING"
antes de iniciar X parece aumentar a estabilidade com este kernel mais velho.
http: //us.download.nvidia. com / XFree86 / Linux-x86_64 / 177,82 / README / capítulo-11.html
Eu também tentei desabilitar Triple Buffering e Invertendo.
Eu também descobri que destes fóruns são muito úteis para problemas de Linux / NVidia. Basta fazer uma pesquisa para "crash linux"