Вопрос или проблема
Я активно использую Xephyr для изоляции x11. Однако ускорение вообще не работает.
3D-программы просто не запускаются, декодирование видео не работает, vdpau не работает, такие вещи как chromium и другие программы, нагруженные веб-контентом с использованием gpu, работают невыносимо медленно.
Я использую его следующим образом.
Xephyr -br -ac -noreset -screen 800x600 :1
DISPLAY=:1 icewm
В чем проблема? Ситуация аналогична, когда я настраиваю это с помощью doas или sudo.
@stephen-kitt прав, Xephyr не предоставляет это нативно. Однако вы можете использовать virtualGL для ускорения.
Скачайте 32-битную версию для 32-битных приложений и наоборот для 64-битных приложений. Я взял ее здесь, но вы также можете собрать ее из исходников.
После этого вы можете использовать Xephyr
, чтобы запустить вложенный X-сервер, и vglrun
для запуска приложения.
Xephyr -br -ac -noreset -screen 800x600 :1
DISPLAY=:1 vglrun icewm
Xephyr — это базовая реализация X-сервера на основе фреймбуфера; он не поддерживает никакой формы 3D или видео-ускорения.
Я не уверен, что есть какая-либо реализация вложенного X-сервера, которая обеспечивала бы лучшую производительность.
Ответ или решение
Xephyr — это популярное решение для изоляции X11, которое позволяет запускать отдельный X сервер внутри уже существующего. Такая возможность полезна для тестирования и разработки приложений в изолированной среде, но столкновения с проблемами производительности и отсутствием аппаратного ускорения могут стать значительными препятствиями.
Теория
Xephyr, по сути, является фреймбуферной реализацией X сервера. Это означает, что он работает на уровне программного обеспечения, а не задействует графический процессор (GPU) вашего компьютера. Основным следствием такого подхода является отсутствие поддержки 3D-ускорения и аппаратной декодировки видео. В результате все графические операции обрабатываются исключительно CPU, что существенно снижает скорость и эффективность, особенно при выполнении задач, требующих интенсивной графики, таких как 3D-рендеринг, воспроизведение видео и запуск приложений, использующих WebGL.
Как следствие, программы, требующие аппаратного ускорения, такие как современные браузеры (например, Chromium, как упомянуто в вопросе) или мультимедийные приложения, оказываются фактически непригодными для использования в среде Xephyr. Это происходит из-за того, что такие приложения активно используют возможности GPU для оптимизации рендеринга.
Пример
Предположим, вы пытаетесь запустить браузер Chromium в среде Xephyr с параметрами:
Xephyr -br -ac -noreset -screen 800x600 :1
DISPLAY=:1 icewm
В этом сценарии вы вероятно столкнетесь с значительными задержками в производительности, так как весь рендеринг происходит через CPU, без использования возможностей GPU для обработки 3D графики или видео.
Применение
Хотя Xephyr и не предоставляет поддержку аппаратного ускорения, есть способ обойти это ограничение с помощью VirtualGL. VirtualGL — это инструмент, позволяющий перенаправлять OpenGL команды от приложений на GPU вашего компьютера, тем самым восполняя недостающие возможности аппаратного ускорения в подобных средах.
Шаги для использования VirtualGL с Xephyr
-
Установка VirtualGL: Для начала, скачайте и установите соответствующую версию VirtualGL. Для этого перейдите на репозиторий VirtualGL на GitHub. Убедитесь, что выбранная версия соответствует архитектуре приложений, будь то 32-битная или 64-битная.
-
Запуск Xephyr и приложения через VirtualGL: После установки VirtualGL можно начинать использование его для запуска приложений в среде Xephyr.
Xephyr -br -ac -noreset -screen 800x600 :1
DISPLAY=:1 vglrun icewm
Команда vglrun
используется для того, чтобы переадресовать графические команды от приложения к GPU, несмотря на то, что оно исполняется в среде Xephyr.
Заключение
Хотя Xephyr не предлагает поддержки аппаратного ускорения "из коробки", использование в сочетании с VirtualGL позволяет обойти это ограничение и значительно увеличить производительность приложений, требующих графического ускорения. Следует учитывать, что это решение может добавить некоторую степень сложности в настройке среды и требует дополнительной конфигурации, но является оптимальным для тех случаев, когда необходимо сочетать изоляцию среды и высокую графическую производительность.
Таким образом, для обеспечения действительно высокой производительности в изолированной среде посредством Xephyr, использование технологии VirtualGL является оптимальным подходом, обеспечивающим необходимое аппаратное ускорение.