1

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: 1600x900@60.0hz, 2560x1440@60.0hz 
           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

1 Answers1

1

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

Jesse
  • 11