Broken OpenGL: Wrong GLX renderer in glxinfo and inxi (Nvidia instead of Intel)

7,086

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

Share:
7,086
masterhui
Author by

masterhui

Updated on September 18, 2022

Comments

  • masterhui
    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
      Mitch over 9 years
      When 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
      masterhui over 9 years
      Correct, 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.