LINUX.ORG.RU
ФорумAdmin

Xorg в фоне без «картинки» как Xvfb но с GPU

 , ,


0

3

Всем привет!

Нужно запустить Xorg в фоне для предоставления glx API приложению, но монитора нет и выводить ничего никуда не надо.

Вроде бы всё запустил и всё работает. Но вот Xorg обращается к /dev/ttyX создавая Терминал с якобы «картинкой». А если этого самого /dev/ttyX нету?

Возможно ли запустить Xorg без VT tty?
Xvfb делает всё как надо, но не умеет работать с GPU. Он как бы не для этого.

Ответ на: комментарий от gag

Ни в какую не хочет использовать GPU. Подгружает MESA драйвера и рендрит процом.
Как его натравить на GPU то?

# Xvfb :99 -ac -screen 0 1x1x24 -listen tcp +extension GLX +render -noreset
# VGL_DISPLAY=:99 DISPLAY=:99 vglrun glxinfo |  grep -E " version| string| rendering|display"

string| rendering|display"
name of display: :99
display: :99  screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
client glx vendor string: VirtualGL
client glx version string: 1.4
GLX version: 1.4
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 12.0.0, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 21.0.3
OpenGL core profile shading language version string: 4.50

#VGL_DISPLAY=:99 DISPLAY=:99 vglrun glxgears
9561 frames in 5.0 seconds = 1912.032 FPS
9860 frames in 5.0 seconds = 1971.928 FPS

при этом 100% загрузка CPU и нулевая GPU

Но если запустить через Xorg
# Xorg :0 -nolisten tcp
# VGL_DISPLAY=:0 DISPLAY=:0 vglrun glxinfo |  grep -E " version| string| rendering|display"
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
client glx vendor string: VirtualGL
client glx version string: 1.4
GLX version: 1.4
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce GTX 1080/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 495.44
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 495.44
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 495.44
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

# VGL_DISPLAY=:0 DISPLAY=:0 vglrun glxgears
18579 frames in 5.0 seconds = 3715.665 FPS

# DISPLAY=:0 glxinfo |  grep -E " version| string| rendering|display"
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
GLX version: 1.4
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce GTX 1080/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 495.44
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 495.44
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 495.44
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20


Обычные Xы отлично работаеют с GPU как сами по себе, так и с vgl

Тут либо что-то не работает, либо я чего-то не понимаю.

Spider55
() автор топика
Ответ на: комментарий от Spider55

Короеч этот vgl надо запускать так:

vglrun -d /dev/dri/card0 ....

кто бы мог подумать.

Spider55
() автор топика

В итоге отказался я от Xvfb и virtualgl, потому что это прям такой костыль. Половина не работает, половина с горем пополам.
НО! Я зупустил Xorg без tty (точнее с /dev/null в качестве tty) и он даже работает.
И вот же ирония: софтина ради которой я это всё делал падает после какого-то не продолжительного времени работы.

[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.

Но блин.... на обычном Xorg с монитором оно же работает... Как так то...

Spider55
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.