Mathieu Pasquet
2016-07-22 10:55:34 UTC
Hello,
We are using VirtualGL in one of our projects, and it’s great, but we
have a specific scenario that creates issues (which are probably not
due to VGL itself, but I feel that here is still the most relevant place
to ask). We use VirtualGL inside docker while sharing both the X11 socket
and /dev/dri while making sure groups & uids match. The goal is to have a
virtual X display inside the docker (with the dummy driver and x11vnc).
We sadly cannot use TurboVNC because it doesn’t to my knowledge offer a
way to run an arbitrary command that would allow us to use TOTP[1]. We
run our software from another container, using:
DISPLAY=xorg-container:0 vglrun -d :1 ./software.
(:1 being the "3D" X server on the host)
[1] https://tools.ietf.org/html/rfc6238
We were previously using llvmpipe only without sharing anything from the
host, but obviously performance is much worse without hardware
acceleration. We still use mesa everywhere, and the same version in host
and containers.
It often works, but sometimes fails to initialize and ends after
displaying the following error (and putting the vglrun call in a loop
bypasses that issue):
X Error of failed request: BadValue (integer parameter out of range
for operation)
Major opcode of failed request: 130 (MIT-SHM)
Minor opcode of failed request: 3 (X_ShmPutImage)
Value in failed request: 0x320
Serial number of failed request: 16
Current serial number in output stream: 17
I have to point out that VirtualGL 2.4.1 has this (apparently random)
behavior, while VirtualGL 2.5 only has the next error (but which
occurs everytime, preventing us from using it).
Another strange thing is that we can run glxinfo and it returns the
right information, or our software which works when there isn’t an
error, but any attempt at running glxgears or glxspheres results in
a vglclient error:
Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
Visual ID of window: 0x21
Context is Direct
OpenGL Renderer: Gallium 0.4 on AMD TAHITI (DRM 2.43.0, LLVM 3.8.0)
[VGL] ERROR: Could not connect to VGL client. Make sure that vglclient is
[VGL] running and that either the DISPLAY or VGL_CLIENT environment
[VGL] variable points to the machine on which vglclient is running.
[VGL] ERROR: in connect--
[VGL] 261: Connection refused
Running them from the same container but using the :1 display for both
display and rendering does not exhibit this problem.
When running several of the xorg-vglclient-software instances, we can
also sometimes observe buffers from one instance leaking into another,
or inverted output.
I would like to inquire if any of these errors ring a bell, or if the
architecture is fundamentally flawed due to DRI, DRM, permissions, or
Xorg shenanigans.
Best regards,
We are using VirtualGL in one of our projects, and it’s great, but we
have a specific scenario that creates issues (which are probably not
due to VGL itself, but I feel that here is still the most relevant place
to ask). We use VirtualGL inside docker while sharing both the X11 socket
and /dev/dri while making sure groups & uids match. The goal is to have a
virtual X display inside the docker (with the dummy driver and x11vnc).
We sadly cannot use TurboVNC because it doesn’t to my knowledge offer a
way to run an arbitrary command that would allow us to use TOTP[1]. We
run our software from another container, using:
DISPLAY=xorg-container:0 vglrun -d :1 ./software.
(:1 being the "3D" X server on the host)
[1] https://tools.ietf.org/html/rfc6238
We were previously using llvmpipe only without sharing anything from the
host, but obviously performance is much worse without hardware
acceleration. We still use mesa everywhere, and the same version in host
and containers.
It often works, but sometimes fails to initialize and ends after
displaying the following error (and putting the vglrun call in a loop
bypasses that issue):
X Error of failed request: BadValue (integer parameter out of range
for operation)
Major opcode of failed request: 130 (MIT-SHM)
Minor opcode of failed request: 3 (X_ShmPutImage)
Value in failed request: 0x320
Serial number of failed request: 16
Current serial number in output stream: 17
I have to point out that VirtualGL 2.4.1 has this (apparently random)
behavior, while VirtualGL 2.5 only has the next error (but which
occurs everytime, preventing us from using it).
Another strange thing is that we can run glxinfo and it returns the
right information, or our software which works when there isn’t an
error, but any attempt at running glxgears or glxspheres results in
a vglclient error:
Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
Visual ID of window: 0x21
Context is Direct
OpenGL Renderer: Gallium 0.4 on AMD TAHITI (DRM 2.43.0, LLVM 3.8.0)
[VGL] ERROR: Could not connect to VGL client. Make sure that vglclient is
[VGL] running and that either the DISPLAY or VGL_CLIENT environment
[VGL] variable points to the machine on which vglclient is running.
[VGL] ERROR: in connect--
[VGL] 261: Connection refused
Running them from the same container but using the :1 display for both
display and rendering does not exhibit this problem.
When running several of the xorg-vglclient-software instances, we can
also sometimes observe buffers from one instance leaking into another,
or inverted output.
I would like to inquire if any of these errors ring a bell, or if the
architecture is fundamentally flawed due to DRI, DRM, permissions, or
Xorg shenanigans.
Best regards,
--
Mathieu Pasquet
R&D Engineer
alter way
Mathieu Pasquet
R&D Engineer
alter way