TurboVNC, Xfce4, VirtualGL, and GLX

Running a Xfce4 remote desktop through TurboVNC/3.0.1-GCCcore-11.3.0 and VirtualGL/3.0.2-GCCcore-11.3.0. This is from inside a Terminal app in remote desktop:

[w55c785@tempest-epyc003 ~]$ glxinfo
name of display: :1.0
Error: couldn’t find RGB GLX visual or fbconfig

From MobaXterm on my desktop, when I ssh -Y directly from the login node to tempest-epyc003:

[w55c785@tempest-epyc003 ~]$ glxinfo
name of display: localhost:10.0
display: localhost:10 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float,
GLX_EXT_framebuffer_sRGB, GLX_EXT_get_drawable_type,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_copy_sub_buffer, GLX_OML_swap_method, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_SGI_make_current_read, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI

So the existing driver is being bound properly through ssh -Y but not when I start a remote desktop. For grins here is what is installed on all cpu nodes, so a driver is loaded:

sudo lspci -vv -s 62:00.0
62:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. Integrated Matrox G200eW3 Graphics Controller (rev 04) (prog-if 00 [VGA controller])
DeviceName: Embedded Video
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 0 (4000ns min, 8000ns max)
Interrupt: pin A routed to IRQ 259
NUMA node: 0
IOMMU group: 52
Region 0: Memory at de000000 (32-bit, prefetchable) [size=16M]
Region 1: Memory at e7808000 (32-bit, non-prefetchable) [size=16K]
Region 2: Memory at e7000000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: [dc] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: mgag200
Kernel modules: mgag200

Without glx support I’m unable to get ParaView and VisIt working.

Any assistance would be much appreciated.

Kenny, MSU RCI

Hi Kenny.

Happy New Year and thanks for your post.

I’m just curious as to what happens if you open your terminal app as first described and run ssh -Y to that host. Not from the login server.

Using your same example with hostname tempest-epyc003

Get back to this point.

Running a Xfce4 remote desktop through TurboVNC/3.0.1-GCCcore-11.3.0 and VirtualGL/3.0.2-GCCcore-11.3.0. This is from inside a Terminal app in remote desktop:

and then run
ssh -Y tempest-epyc003 and then glxinfo.

Again, just curious as the results.

I did this experiment and I want to see what your results are in comparison to mine.

Thanks,
-gerald

Hi Gerald, Happy New Year to you too :slight_smile: Sure thing. Same results, except the DISPLAY variable now has localhost:10.0.

[w55c785@tempest-epyc010 ~]$ glxinfo

name of display: :1.0

Error: couldn’t find RGB GLX visual or fbconfig

[w55c785@tempest-epyc010 ~]$ ssh -Y tempest-epyc010

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Fri Jan 6 14:35:09 2023

Welcome!

[w55c785@tempest-epyc010 ~]$ glxinfo

name of display: localhost:10.0

Error: couldn’t find RGB GLX visual or fbconfig

[w55c785@tempest-epyc010 ~]$

You’re DISPLAY (the environment variable) isn’t right. The command that failed, it said you’re on 1, but the output of your ssh session is 10.

When I get a desktop session I see a message like this. I just got DISPLAY 5.

Desktop 'TurboVNC: o0647.ten.osc.edu:5 (johrstrom)' started on display o0647.ten.osc.edu:5

It seems for whatever reason that environment variable isn’t being exported correctly OR that something else is setting it perhaps.

I don’t know what could be missing, I don’t set the DISPLAY variable. X11 and the display manager handle that. SSH negotiates for it with -X or -Y options. Everything in these scripts are the original files from your remote desktop github repository. Let me show you, I start up a new terminal in MobaXterm which handles (as you may well know) X11 forwarding:

 07/01/2023   16:00.28   /home/mobaxterm  echo $DISPLAY
127.0.0.1:0.0

 07/01/2023   16:00.32   /home/mobaxterm  ssh -Y tempest-login
Load key “/home/mobaxterm/.ssh/id_rsa”: invalid format
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Sat Jan 7 16:00:02 2023 from 10.152.165.219
Welcome!
[w55c785@tempest-login ~]$ echo $DISPLAY
localhost:10.0
[w55c785@tempest-login ~]$

Notice the display is now :10.0. If you use ssh -v -Y you’ll see the ssh debug1 output which shows you the display negotiation. glxinfo does return a bunch of information regarding the capabilities of the Matrox driver installed.

VNC displays this at the top upon remote desktop launch, I can also verify it from output.log:
Desktop ‘TurboVNC: tempest-epyc002:1 (w55c785)’ started on display tempest-epyc002:1

There’s no such display as tempest-epyc002:1. Only :1.

[w55c785@tempest-epyc002 ~]$ glxinfo -display tempest-epyc002:1
Error: unable to open display tempest-epyc002:1

Here’s opening a Terminal straight away:

[w55c785@tempest-epyc002 ~]$ echo $DISPLAY
:1.0
[w55c785@tempest-epyc002 ~]$ glxinfo
name of display: :1.0
Error: couldn’t find RGB GLX visual or fbconfig

Out of curiosity, what does your glxinfo reveal about your display being set? I think it might boil down to configuration.

Kenny

job_script_content.sh is the one setting the DISPLAY. And we’re starting the script.sh (the one that actually boots the desktop) with that environment variable set.

[johrstrom f2cec55b-35af-4708-85d7-9b5ed54a865d()]  grep DISPLAY *.sh
job_script_content.sh:DISPLAY=:${display} "/users/PZS0714/johrstrom/ondemand/data/sys/dashboard/batch_connect/sys/bc_desktop/owens/output/f2cec55b-35af-4708-85d7-9b5ed54a865d/script.sh" &

What does the content of your output.log look like? Does it have any indication why this may be happening?

We seem to find the display through this grep expression.

display=$(echo "${VNC_OUT}" | awk -F':' '/^Desktop/{print $NF}')

Perhaps it’s not working for you?

Thanks, Jeff, I’ll dig through it. I’m in training all week so I’ll be slow to respond this week.

Kenny, MSU RCI