13.1 - NVIDIA, libGL renderer problem

On my HTPC frontend I’ve been running MythTV. It works pretty well, but I wanted to test out XBMC, so I installed it. When I run it, I get the following error:

> xbmc
Running DIL (3.23.0) Version
DtsDeviceOpen: Opening HW in mode 0
DtsDeviceOpen: Create File Failed
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.

The program runs, but all text is missing.

So then I ran it using LIBGL_DEBUG=verbose:

> LIBGL_DEBUG=verbose /usr/bin/xbmc
Running DIL (3.23.0) Version
DtsDeviceOpen: Opening HW in mode 0
DtsDeviceOpen: Create File Failed
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib64/dri/updates/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/updates/swrast_dri.so
libGL error: dlopen /usr/lib64/dri/updates/swrast_dri.so failed (/usr/lib64/dri/updates/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so
libGL: Can't open configuration file /home/tonka/.drirc: No such file or directory.
libGL error: failed to load driver: swrast
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib64/dri/updates/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/updates/swrast_dri.so
libGL error: dlopen /usr/lib64/dri/updates/swrast_dri.so failed (/usr/lib64/dri/updates/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so
libGL: Can't open configuration file /home/tonka/.drirc: No such file or directory.
libGL error: failed to load driver: swrast

That doesn’t seem to tell me anything more useful than the previous message.

I’m running:

> uname -a
Linux Tonka-htpc 3.11.10-7-desktop #1 SMP PREEMPT Mon Feb 3 09:41:24 UTC 2014 (750023e) x86_64 x86_64 x86_64 GNU/Linux

Some info about my system:

> glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 4.3.0 NVIDIA 331.49
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL version string: 4.4.0 NVIDIA 331.49
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler
tonka@Tonka-htpc:~> glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: GeForce GTX 570/PCIe/SSE2
    GL_NVX_conditional_render, GL_NVX_gpu_memory_info, 
    GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, 
    GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
    GL_NVX_conditional_render, GL_NVX_gpu_memory_info, 
    GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, 
    GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
> /sbin/lspci -nnk | grep VGA -A2
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF110 [GeForce GTX 570 Rev. 2] [10de:1086] (rev a1)
    Subsystem: eVga.com. Corp. Device [3842:1573]
    Kernel driver in use: nvidia

Here’s the output of glxinfo: http://susepaste.org/85132431

Can anybody give me any ideas what the problem might be?

I only have a copy of swrast_dri here
/usr/lib64/dri

There is an update directory but it only has a readme file

Maybe put a link to the main file in the update directory.

Don’t know why the program is looking in the update and not the regular location maybe you are missing some package

I’ll give that a try.

It does seem weird that it’s looking in the wrong place. I would think it would use the video drivers without having to worry about where they are loaded, but I’m no programmer. I’d also think that this package, since it was made for OpenSUSE, would be looking in the right place. I’ll let you know how it works, but it will be a couple of days since I’ll be out of town.

It does not look in the wrong place.
It looks in /usr/lib64/dri/updates/ first, then it looks in /usr/lib64/dri/ where it finds it. (/usr/lib64/dri/updates/ exists so that you can install updated versions without overwriting the system’s ones, which will be overwritten again when you install updates)
That’s just debug output, no real error.

Anyway, it shouldn’t use swrast at all, but rather the nvidia driver. swrast doesn’t even work with the nvidia driver installed, as the nvidia driver breaks Mesa’s GLX by replacing some of its libraries with its own incompatible versions (libglx and libGL).
You do run xbmc as your user inside your graphical user session?

You apparently have the driver version 331.49 installed. That’s outdated. Try to upgrade to the latest version.
There have been problems with xbmc and certain nvidia driver versions.

That’s kinda what I thought. swrast (software rasterizer, I had assumed) should be used since the card has hardware acceleration.

Yes. Running as user through GNOME.

I’ll look around for updated drivers and get them installed in a couple of days. Thanks for the advice. I’ll update when I’ve got the new drivers installed.

I updated my drivers to 331.79, but it behaves exactly the same. Any other suggestions?

Hm, I re-read your original post again.

So your actual problem (apart from those messages) is the missing text?
Sounds like this then:
http://forums.opensuse.org/showthread.php/498218-XBMC-13-Gotham-update-menu-text-missing

According to that thread the cause is really the nvidia driver, but to fix it you would have to upgrade to the latest BETA version, i.e. 337.19.
But I see that meanwhile 337.25 has been released (short-lived branch version), I suppose that would do as well and actually be the better choice.
This of course is not available in any repo, so you would have to install it “the hard way”:
https://en.opensuse.org/SDB:NVIDIA_the_hard_way

If you installed the driver via the packages from the repo, you should uninstall them completely first.
And please note that you will have to reinstall the driver after every kernel update, and updates to xorg-x11-server and Mesa-libGL1.

I think the missing text is a symptom of what’s causing the error messages, but yeah, that’s the problem.

Ah ****. I guess I’ll wait on the packaged release of those drivers. I don’t really need XBMC. I was hoping it worked a bit better than MythTV. I’ll keep using MythTV until those new drivers get packaged. At least it appears that the newer versions of the driver do fix it.

Thanks for your help.

I have the exact same problem as the OP.

Have xbmc (openelec 4.2.1) running on my Raspberry PI and all is fine there.
That made me curious about xbmc on my opensuse boxes, but: No text in menus and error messages like in post #1
I will not jump through loops for this xbmc test either, but does anyone here know, if the newer, working Nvidia driver will be part of the upcoming opensuse 13.2?

The nvidia driver is not part of openSUSE at all.

Ok, so I may have not formulated precisely enough:

The Nvidia driver was installable via community repo or some other easily accessible and maintainable way during my installation of 13.1.
Is it known whether the working Nvidia driver will be installable in a similar way (not “the hard way” that forces me to manually fix every kernel/x11 update) when 13.2 is released?

BR

Sorry, I do not know which nvidia driver versions work and which don’t. I use neither nvidia nor xbmc.

But, the repo does contain a much newer version (340.46, which is the latest available version by nvidia) now than mentioned in the original post or anywhere in this thread.
But that’s totally unrelated to 13.2 (the driver in the repo is only available for 12.3 and 13.1 at the moment anyway, but it is always the same version for all supported openSUSE releases), and I cannot tell you whether this one will work for you in combination with xbmc. But as it is the latest version as mentioned, this is not specific to the repo then.

Or is your question actually whether the repo will be available for 13.2?
Of course it will be, but not necessarily at the day of release.

I was stuck to G02 version which is only v304.

“Was stuck” because my 7000er card went south recently. Obviously I forgot to adapt the nvidia driver to G03 avter replacing the card with a newer model. Going to do that now. Just post before that, in case I am without X soon… :smiley:

Thanks for the hint, that made me check…

Well, the G02 driver has been updated since then as well I think.
But that one is rather unmaintained by nvidia by now.

Obviously I forgot to adapt the nvidia driver to G03 avter replacing the card with a newer model. Going to do that now. Just post before that, in case I am without X soon… :smiley:

Well, you should always be able to boot to “Recovery Mode” (“Advanced Options” in the boot menu). Unless you use GNOME of course… :wink:

Anyway, be sure to check that you do not end up with both G02 and G03 installed. This can happen under certain circumstances (not in 13.2 any more though).
The safest way is to remove the G02 driver first, then enter YaST again and install the G03 driver.
Also be sure that all 5 packages are installed and match your kernel flavor:
nvidia-gfxG03-kernel-desktop (or -default), nvidia-uvm-gfxG03-kernel-desktop (or -default), x11-video-nvidiaG03, nvidia-computeG03, nvidia-glG03

Back with running X :slight_smile:
And also back to square 1 regarding xbmc :frowning:

Installed G03 drivers, uninstalled G02 drivers, force-reinstalled G03 (just in case removing G02 deleted something stupid…) and rebooted.

Now I have

sudo zypper se nvidia | grep ‘^i’
i | nvidia-computeG03 | NVIDIA driver for computing with GPGPU | Paketi | nvidia-gfxG03-kmp-desktop | NVIDIA graphics driver kernel module for GeForce 8xxx and newer GPUs | Paket
i | nvidia-glG03 | NVIDIA GL libraries for OpenGL acceleration | Paket
i | nvidia-uvm-gfxG03-kmp-desktop | NVIDIA Unified Memory kernel module | Paket
i | x11-video-nvidiaG03 | NVIDIA graphics driver for GeForce 8xxx and newer GPUs | Paket

and

glxinfo | egrep -i ‘versio|nvidia’
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
GLX version: 1.4
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.3.0 NVIDIA 340.46
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL version string: 4.4.0 NVIDIA 340.46
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler

Desktop 3d effects and minecraft, that requires 3d are working.

So I guess I have the newest version running and configured correctly.

But still no text in xbmc. Still same messages as in post #1

Yes, the driver is working correctly.

But still no text in xbmc. Still same messages as in post #1

Well, the OP never reported back whether a newer nvidia driver eventually fixed his problem or not.

I only suggested a newer driver version here as that was the recommended (and obviously working) fix in the other thread.
But somebody wrote there:

So you might try that, although it doesn’t sound quite right to me either.

Same here. No idea why, but this wants to remove packages like gcc48-java or xf86-video-intel. Won’t do that…

See for yourself:

sudo zypper rm Mesa-libGL1
root’s password:
Daten des Repositories laden …
Installierte Pakete lesen …
Paketabhängigkeiten auflösen …

The following 13 packages are going to be REMOVED:
cairo-devel gcc48-java gcc-java glamor gtk2-devel java-1_5_0-gcj-compat-devel libgcj48-devel libgcj-devel Mesa-libGL1
Mesa-libGL-devel pango-devel xf86-video-intel xorg-x11-devel

13 zu entfernende Pakete.
Nach dem Vorgang werden 57,4 MiB freigegeben.
Fortfahren? [j/n/? zeigt alle Optionen] (j): n

I browsed xbmc forums with no success. There are posts that indicate xbmc in general runs on opensuse. So it seems it is some specific problem I am not willing to track down atm. Maybe I’ll retry with 13.2…

Thanks again. At least I now use the latest Nvidia driver :slight_smile:

Ok, those packages directly or indirectly depend on Mesa-libGL1. He did write that he had to uninstall some other packages as well… :wink:
For xf86-video-intel (the Mesa-based intel video driver) and glamor that’s obvious. They won’t work with the nvidia driver installed anyway.
Mesa-linGL-devel is clear as well, and removing that forces the removal of cairo-devel and xorg-x11-devel, on which all the others depend.

Most of those packages are development packages anyway, which you probably don’t even need.

Anyway, you could just uninstall Mesa-libGL1 with ignoring all dependencies. This won’t change anything on your system, as the nvidia driver overrides Mesa’s libGL1 anyway.

sudo rpm -e --nodeps Mesa-libGL1

And you can always reinstall again.

I browsed xbmc forums with no success. There are posts that indicate xbmc in general runs on opensuse.

Yes it does.
I tried it some time last year (during those discussions about problems), and it worked absolutely fine here (no graphical glitches) with the radeon driver.

I am so nosy, I couldnt help it. I compiled latest xbmc from git. Same problem!

In a final check with strace I saw /usr/lib64/libGL.so.1 is loaded by kodi (which is the new name for xbmc).
This really belongs to Mesa-libGL1.
So I bit the bullet and uninstalled with your nodeps suggestion.

What can I say? It worked :slight_smile:

Found an even better solution with LD_LIBRARY_PATH (if you remove Mesa-libGL1 you can no longer compile xbmc aka kodi!)

Posted it here: http://forum.xbmc.org/showthread.php?tid=206976