2016-07-24 9 views
0

В настоящее время я использую OSMesa для отображения вне экрана. Я запускаю его на интерфейсе командной строки linux (RHEL). Он работает очень хорошо, но отнимает много времени. В основном я запускаю анимацию opengl вне экрана и захватываю кадры на лету и создаю видео с помощью ffmpeg. Итак, мой вопрос заключается в том, можно ли использовать графический процессор для внеэкранного рендеринга, чтобы ускорить процесс рендеринга. Я знаю, что могу использовать FBOs, но я думаю, что они требуют поддержки окон, которые у меня нет из-за Linux CLI. Итак, в любом случае, есть ли в любом случае использование FBOs в моем случае или что является лучшим решением для ускорения процесса рендеринга?внеэкранный рендеринг с поддержкой графического процессора НО без поддержки окон

ответ

1

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

В принципе да, но до сих пор не было стандартного API, как это сделать. Если вы используете графические процессоры NVidia, вы можете использовать безглавую EGL с проприетарными драйверами Nvidia: https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/

Использование Kernel DRM и драйверов Mesa OpenGL можно настроить и использовать GPU в одном процессе без сервера отображения. Там есть демо-ролик, называемый «kmscube», я развернул его в свой GitHub и сделал несколько небольших модификаций: https://github.com/datenwolf/kmscube В текущем состоянии kmscube будет рисовать на экране, но должно быть возможно изменить выбор коннектора таким образом , что вы получаете полный экранный рендеринг.

Кроме того, вся инфраструктура Wayland сосредоточена на возможности предоставить клиентам произвольные фреймбууры, которые затем объединяются, поэтому они смотрят на то, как компоновщики Wayland выделяют внебюджетные фреймбуффы для использования клиентами Wayland, также стоит смотря на.