Broken OpenGL: Wrong GLX renderer in glxinfo and inxi (Nvidia instead of Intel)
OpenGL is using indirect rendering, sending data back to your local system to be rendered there instead, and it's detecting and listing that hardware instead of what's on your server.
I had the same confusion, but with an Nvidia card in the server and an AMD card detected. Here are the relevant bits from glxinfo for my case:
$ glxinfo | egrep 'direct|client|server|OpenGL'
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: AMD Radeon HD 6770M OpenGL Engine
OpenGL version string: 1.4 (2.1 ATI-1.24.38)
OpenGL extensions:
I had no AMD hardware at all in that system, so I was mystified too, until I realized my local system has the Radeon HD 6770M. When glxinfo reports client and server, it looks like it defines those just like X does; the server is the host running the X server pointed to in $DISPLAY and the client is the host running glxinfo. So even though, as you said, there's no X server on the server machine, there still is one running and being queried by glxinfo over the network. I'm guessing in your case you do actually have Nvidia hardware on your local system that's running X.
As an experiment you can try running glxinfo without having a display specified, and you can see it won't even try to work:
$ DISPLAY="" glxinfo
Error: unable to open display
If you run an X server on the remote server itself, configure it to use direct rendering, and use something like VNC to interact with X, it's possible to use hardware acceleration on the server. In that case it'll just send the finished images to your local system.
An old post, but related concept:
https://serverfault.com/questions/174003/how-can-opengl-graphics-be-displayed-remotely-using-vnc
This page mentions x11vnc as well:
https://help.ubuntu.com/community/VNC/Servers
masterhui
Updated on September 18, 2022Comments
-
masterhui almost 2 years
I have spent all day trying to resolve this issue, I hope someone in this friendly forum can help:
I am running the following setup:
Distribution: Ubuntu 14.04.01 Kernel: 3.13.0-43-generic Hardware: Intel Core i7-3840QM CPU with integrated Intel HD Graphics IvyBridge GPU
When I run glxinfo, I get:
$ glxinfo name of display: localhost:10.0 libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast display: localhost:10 screen: 0 direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose) server glx vendor string: NVIDIA Corporation 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_multisample, GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, GLX_EXT_framebuffer_sRGB, GLX_EXT_swap_control, GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_NV_float_buffer, GLX_NV_multisample_coverage, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync client glx vendor string: Mesa Project and SGI client glx version string: 1.4 client 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_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync GLX version: 1.4 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_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_multithread_makecurrent, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: NVS 5100M/PCIe/SSE2 OpenGL version string: 1.4 (2.1.2 NVIDIA 331.113) [...]
The problem seems to be the following two lines above:
server glx vendor string: NVIDIA Corporation [...] client glx vendor string: Mesa Project and SGI
Fact is, this installation has never had a Nvidia graphics card/driver installed. So no idea why I have nVidia references here. Here is some more info that might help:
$ lshw -C video
*-display description: VGA compatible controller product: 3rd Gen Core processor Graphics Controller vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 09 width: 64 bits clock: 33MHz capabilities: msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:47 memory:f7800000-f7bfffff memory:e0000000-efffffff ioport:f000(size=64)
$ dpkg -l nvidia
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-============================-===================-===================-============================================================== un libgl1-nvidia-alternatives <none> <none> (no description available) un nvidia-libopencl1-dev <none> <none> (no description available) un nvidia-va-driver <none> <none> (no description available) un nvidia-vdpau-driver <none> <none> (no description available)
$ inxi -G
Graphics: Card: Intel 3rd Gen Core processor Graphics Controller X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: [email protected], [email protected] GLX Renderer: NVS 5100M/PCIe/SSE2 GLX Version: 1.4 (2.1.2 NVIDIA 331.113)
Any help how to get rid of the nvidia/NVS references is highly appreciated!
Regards
-
Mitch over 9 yearsWhen you say "Fact is, this installation has never had a Nvidia graphics card/driver installed." Are you saying that there was never an nVidia card plugged into the computer while that OS was working? If there was an nVidia card, the kernel would have detected it and that may be why it's there
-
masterhui over 9 yearsCorrect, there was never a nVidia card plugged in. Btw., this is a Ubuntu server installation (no xserver, no window manager). I need OpenGL support for running libfreenect2.
-