GlGetError зависает несколько секунд

Я разрабатываю приложение OpenGL и наблюдаю странные вещи. Машина, на которой я тестирую, оснащена NVidia Quadro FX 4600 и работает под управлением RHEL WS 4.3 x86_64 (ядро 2.6.9-34.ELsmp).

Я прошел через приложение с помощью отладчика и заметил, что оно зависает на вызовах OpenGL, которые получают информацию от OpenGL API: то есть - glGetError, glIsEnabled и т. д. Каждый раз, когда он зависает, система не отвечает на запросы 3-4 секунды.

Еще одна интересная вещь заключается в том, что если этот же код запускается в RHEL 4.5 (Kernel 2.6.9-67.ELsmp), он работает полностью нормально. Тот же код отлично работает и в Windows XP. Все машины используют одно и то же оборудование:

  • PNY nVidia Quadro FX4600 768 МБ PCI Express
  • Два четырехъядерных процессора Intel Xeon DP E5345 2.33 Гц
  • 4096 МБ, 667 МГц, DDR2 с полной буферизацией
  • Материнская плата Super Micro X7DAL-E Intel 5000X с двумя процессорами Xeon
  • Блок питания Enermax Liberty 620 Вт

Я обновил 64-битные драйверы до последней версии: версия 177.82, дата выпуска: 12 ноября 2008 г., и результат такой же.

Кто-нибудь знает, что может быть причиной зависания системы при этих вызовах OpenGL?

За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
1
0
585
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете копнуть глубже, используя системный профилировщик, такой как Sysprof или OProfile. Имеют ли другие приложения OpenGL, использующие эти вызовы, аналогичное поведение?

Ответ принят как подходящий

Похоже, что это проблема с несовершенными драйверами NVidia для Linux. Кажется, помогает обновление до более новой версии ядра. Если я буду вынужден использовать это устаревшее ядро, я попробую кое-что, что может помочь.

Определение переменной среды __GL_YIELD для "NOTHING" перед запуском X, кажется, увеличивает стабильность с этим старым ядром. http://us.download.nvidia.com/XFree86/Linux-x86_64/177.82/README/chapter-11.html

Я также пробовал отключить тройную буферизацию и перелистывание.

Я также обнаружил, что эти форумы очень помогает при проблемах Linux / NVidia. Просто выполните поиск по запросу "сбой linux"

Другие вопросы по теме