Приложение OpenGL делает утечки Xorg - PullRequest
0 голосов
/ 01 июля 2018

Я работаю над довольно большим приложением Qt5 / OpenGL. Каждый раз, когда приложение запускается и завершается в linux с драйвером nvidia, с активным композитором , nvidia-smi показывает увеличение использования VRAM на 4 Мб для процесса Xorg.

Мое предположение было бы таково, что даже если мое приложение утечет, все должно быть освобождено, когда оно уничтожено, но, похоже, это не так.

В этой теме Требуется очистка памяти графического процессора OpenGL? , Кто-то упомянул, что это не будет так, если «Список отображения» будет открыт для общего доступа.

Я не очень разбираюсь в OpenGL и не смог найти в интернете достоверную информацию об этой проблеме.

Моя цель - понять, как это может произойти, откуда это может появиться в моем коде и как это исправить.

Примечание:

Утечки присутствуют в Xorg после остановки моего приложения, и никакие другие процессы, кроме Xorg и Desktop Environnement, не отображаются в nvidia-smi

Используемое мной DE не имеет значения (проверено: KDE, Lxde, OpenBox, Gnome, Unity).

Дистрибутив Linux, который я использую (почти), не имеет значения (проверено: Ubuntu 16.04, Ubuntu 18.04, fedora 26) (еще не воспроизведено в ArchLinux, мы все еще исследуем это)

Версия драйвера nvidia не имеет значения, протестировано 340, 384, 390.

1 Ответ

0 голосов
/ 12 июля 2018

Проблема была решена благодаря интенсивному сеансу отладки.

Утечка была вызвана родительским элементом NULL родительского элемента windowContainer, содержащего QVTKOpenGLWindow непосредственно перед удалением.

Этот код был здесь раньше, когда мы использовали QOpenGLWidget, и он не вызывал проблем. В любом случае, NULL-родительский виджет перед удалением бесполезен, поэтому удаление строки решит проблему.

Этой утечки не должно быть, даже в этой ситуации, поэтому я открыл проблему Qt , чтобы сообщить о ней.

...