LLVMpipe проблема современных дистрибутивов Linux

У дистрибутивов Linux есть одно серьёзное преимущество перед любой Windows, это драйвер LLVMpipe позволяющий запускать приложения зависимые от видеокарты без помощи видеокарты, однако случайно была обнаружена проблема...
27 июля 2023, четверг 15:26
Hard-Workshop для раздела Блоги

Однажды я выпустил ChimbaBench v2.2, там добавил тест GPU Heavy (v0.5) специально для нагрузки видеокарт:

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

Можно было бы сказать что во всём виновата виртуальная машина, и вообще на реальном ПК проблем не будет якобы... Однако есть одно "НО", как-то я запустил Ubuntu 13.04 в виртуальной машине, а в ней ChimbaBench v2.2, ради прикола включил тест GPU Heavy (v0.5), каково же было моё удивление когда ничего не зависло и всё нормально заработало!

И тут я понял, дело не в том что тест GPU Heavy слишком сложен чтобы его осилил процессор без помощи видеокарты через драйвер LLVMpipe, нет, на самом деле это современные дистрибутивы Linux с современными версиями драйвера LLVMpipe не способны осилить тест GPU Heavy...

Simply Linux 10.1

Начну с данного дистрибутива просто потому что он первый попался под руку среди множества других:

У данного дистрибутива драйвер на основе LLVM 11.0.1 (256 bits), и тест GPU Heavy невозможно запустить, приложение намертво зависает и закрыть возможно только через диспетчер задач, операционная система ничего не делает при попытке закрыть приложение крестиком, всё аналогично и в режиме OpenGL 2.0:

Короче дистрибутив не осилил...

Debian 11.6.0 xfce +nonfree

Дальше Debian, здесь тоже драйвер на основе LLVM 11.0.1, но при этом тест GPU Heavy был запущен и работает:

И тут я задумался, а вдруг проблема Simply Linux в настройках виртуальной машины? Ведь в Debian завелось же! Но нет, я просто зря потратил время подбирая настройки виртуальной машины для Simply Linux, без вариантов зависает и висит длительное время, я даже количество ядер выделял побольше, тоже никак не помогло осилить тест GPU Heavy:

В общем Debian справился, это радует, однозначно зачёт, а вот Simply Linux незачёт.

Fedora Workstation 37-1.7

У Fedora LLVMpipe на основе LLVM версии 15.0.0 (256 bits), и версия явно более свежая, однако это никак не помогло осилить GPE Heavy тест, увы:

На кнопку закрытия тоже никак не реагирует система, приложение просто намертво зависло и висит...

OpenSUSE Leap 15.4 Build 31.98 - KDE

Настало время Суслика! И здесь всё отлично, "Суслик" осилил тест GPU Heavy! Хотя версия LLVM 11.0.1 далеко не самая новая, выходит не в LLVM версии дело, а проблема в самом LLVMpipe драйвере у других дистрибутивов:

Похоже мне нужно будет составлять таблицу работоспособности дистрибутивов.

EndeavourOS Cassini Neo 22.12

Увы, Нео уже не тот, не осилил тест GPU Heavy, сколько бы я не ждал... Версия LLVM при этом 15.0.7 (256 bits), но разве это что-то меняет? Закрыть зависшее приложение без помощи диспетчера задач, как обычно, нельзя, даже не знаю, стоит ли дальше упоминать про этот типичный факт:

Однозначно незачёт.

Parabola LXDE 2019.6

Вот и настала очередь свободного дистрибутива, интересно, осилит ли он тест GPU Heavy? Да, этот дистрибутив осилил тест, правда запускался довольно долго, но запустился:

Версия LLVM 8.0 (128 bits).

Rosa Fresh Plasma 5 - 12.2

Роса тоже справилась с задачей, тест запущен и работает:

Версия LLVM 12.0.1 (256 bits), идём дальше.

Pure OS 10 GNOME

Пюрешка, что может быть вкуснее пюрешки? Ладно, запускаю тест и он работает! Меня это очень радует, особенно тот факт, что не возникло никаких проблем с позиционированием окна при изменении разрешения в настройках бенчмарка:

Однозначно зачёт, версия LLVM 11.0.1 (256 bits).

SalentOS 14.04.2 Full

Далее я дёрнул старичка, и он осилил без проблем тест GPU Heavy, правда в режиме OpenGL 2.0 ибо драйвер большее не поддерживает, тем не менее:

Версия LLVM 3.4 (128 bits), а ещё можете полюбоваться на кривые обои рабочего стола, только в дистрибутивах Linux такое счастье можно нынче обнаружить, даже за Windows XP я такого не припомню...

В любом случае это зачёт.

Slackware 15.0

Время Слаки! К сожалению этот дистрибутив не осилил мой тест ни в режиме OpenGL 2.0, ни в режиме OpenGL 3.0, и LLVM 13.0.0 (256 bits) не помог никак:

К сожалению зависшее приложение всё так же невозможно было закрыть без помощи диспетчера задач.

Trisquel 11 MATE

Трещотка в моём нелюбимом исполнении MATE, без помощи диспетчера задач зависшее приложение так же не удалось закрыть, думаю нет смысла объяснять что произошло:

LLVM версии 15.0.6 (256 bits).

Trisquel 11 KDE

Второй шанс трещотки! И она его упустила, висит намертво:

Ubuntu 13.04

Дед выходит на арену и легко раскидывает всех предыдущих неудачников! Даже выдавил 2-3 FPS при разрешении 360p, когда SalentOS с более новым LLVMpipe едва 1 FPS вытягивала имея такое же количество ядер в распоряжении! Да, в режиме OpenGL 2.0 работает, но чего ещё было ждать от Galliun 0.4:

Версия LLVM 3.2 (128 bits).

Ubuntu 14.04.5

Сынок 13 убунты тоже справился, и даже вытянул OpenGL 3.0 версию теста, к качеству изображения конечно есть вопросы, есть засветы которых быть не должно, но оно работает:

Драйвер Gallium 0.4, версия LLVM была 3.8 (128 bits).

Ubuntu 22.04.1

А вот современный малыш к сожалению не справился с тестом GPU Heavy, ещё обновлениями назойливо надоедает, хотя доступ к интернету заблокирован, а в настройках обновления максимально отключены, вот вам и современные дистрибутивы:

Однозначно незачёт, кстати, версия LLVM 13.0.1 (256 bits).

Red OS Murom 7.3.2

Далее идёт богатырь, но силёнок оказалось маловато и GPU Heavy тест одержал верх, приложение висит намертво, и без диспетчера задач не закрыть:

В общем никак, нужно больше кушать каши... Версия LLVM... Да кому она уже нужна? Ладно, версия 12.0.1 (256 bits).

Wubuntu 11.3.3 u22.04.2 KDE

Клон настоящей Windows выходит на сцену! И сразу же уходит с позором:

Версия LLVM 15.0.7 (256 bits).

И на этом пожалуй хватит, остались только 32 разрядные дистрибутивы, но их я не буду уже проверять...

Результаты

Пришло время подвести итоги:

Итого среди современных дистрибутивов 8 провалили тест и 4 прошли, то есть провалило тест в 2 раза больше современных дистрибутивов чем прошло, Trisquel 11 MATE/KDE я посчитал как один дистрибутив, и Parabola LXDE я не учитывал так как он не совсем современный.

Среди древних дистрибутивов 3 из 3 прошли тест, как и Parabola ещё не совсем древняя, но уже и не совсем современная.

Если грубо подсчитать без учета самых древних дистрибутивов, то выходит 9 провалов на 5 успехов.

Каков из этого всего можно сделать вывод? Я могу предположить только два варианта:

1) Разработчики ряда современных дистрибутивов откровенно накосячили, как следствие проблемы с работой приложений использующих встроенный в дистрибутив драйвер LLVMpipe.

2) Разработчики ряда современных дистрибутивов собрали/использовали драйвер LLVMpipe который не удовлетворяет спецификации OpenGL 2.x/3.x, как следствие зависание при попытке запустить тест GPU Heavy требующий чуть больше чем самый минимальный базовый функционал OpenGL.

В любом случае это проблема, и она существенная, особенно если дистрибутив нужно установить на ПК без полноценной видеокарты. В таком случае драйвер LLVMpipe обязан помогать используя процессор для работы, но на практике всё очень печально вышло, драйвер который по сути должен был заменить нефункциональную видеокарту сам оказался нефункциональным в ряде дистрибутивов...

Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.