You definitely need the "3D X server" to always be running in the
background, and this is independent of the "2D X server", which in
your case is a TurboVNC session. The TurboVNC X server is a virtual
X server ("X proxy"), so it doesn't actually touch the GPU. It
renders all of the X11 primitives and images from X11 applications
into a framebuffer in main memory, so the only actual driver
connected to the TurboVNC X server is the RFB server, which deals
with sending changes to that framebuffer to a connected viewer or
viewers. VirtualGL's job is to marshal OpenGL commands from 3D
applications (launched using vglrun) to the 3D X server, read back
the rendered frames from the GPU in real time, and composite the
frames into the application's X windows, which are in the TurboVNC
session.
The main thing that vglserver_config does is insert a bit of code
(either invoking the vglgenkey script or invoking xhost +LOCAL:)
into the display manager startup scripts so that VirtualGL users
(either the vglusers group or all users of the system, depending on
the option you chose) can access the 3D X server while the display
manager is sitting at the login prompt. Inability to access Display
:0 means that vglserver_config apparently didn't succeed in doing
that, or something else is amiss with your server's configuration.
I use CentOS 7 as my primary development machine, so I know that
vglserver_config works properly on that platform using both GDM and
LightDM.
Other comments inline.
On 2/5/19 3:45 PM, johnbot wrote:
so i mucked around and set vgl display to 1 which I'm
pretty sure is not what i wanted for split rendering.
If the GPU-attached X server ("3D X server") is using Display
:0, which is normally the case, then you shouldn't need to change
VGL_DISPLAY. VGL_DISPLAY should point to the 3D X server, and
DISPLAY should point to the 2D X server, but :0.0 is the default
for VGL_DISPLAY if it isn't specified.
Rebooted
after running systemctl set-default graphical.target (not
sure if required)
Shouldn't be required unless you changed it. graphical.target is
the default in CentOS 7.
Not applicable unless you are actually using a headless GPU
(with no monitor outputs.)
I assume
VGL display 0 needs to be available however the sanity
checks are failing.
I've run
the sanity checks with no output.
xdpyinfo -display :0
/opt/VirtualGL/bin/glxinfo
-display :0 -c
Your assumption is
correct. Not sure what could be wrong. If you are using GDM,
then I would suggest editing /etc/gdm/Init/Default and
adding something like
echo testing >/tmp/out
right before the xhost line that vglserver_config added.
Then verify whether /tmp/out is created when you restart the
display manager (init 3/init 5). I didn't ask whether you're
using GDM or LightDM. The output of vglserver_config
that you posted indicates that both are installed.
Either should work fine on CentOS 7, so you might try switching
from one to the other to see if that solves the problem.