ATI Catalyst / fglrx: direct rendering not working in Lucid (10.04) / Maverick(10.10)

Dieser Fehler hab mich schon ein wenig genervt, weil er nicht so offensichtlich war. Nachdem ich aber einem Fehler in XBMC, einer sehr netten Mediacenter-App, nachgegangen bin, konnte ich schnell die Spur zu der eigentlichen Ursache verfolgen. Das Problem scheint, aufjedenfall mit propritären fglrx ATI-Treibern zusammen zu hängen.

Die Symptome

  • OpenGL scheint auf dem Ubuntu Desktop eigentlich ohne Probleme benutzbar zu sein. Das bedeutet Desktop Effekt und compositing funktionieren ohne Probleme. Auch können Applikationen wie VLC oder Mplayer Videos Hardware-beschleunigt durch OpenGL und Libva wiedergeben.
  • Gelegentlich tritt ein Flackern auf trotz des im ATI Control-Center aktiviertem Vsync ! Das nervt zwar an einigen Stellen etwas ist aber kein vollständiges K.O. Kriterium
  • Andere Leute reporten das einige Spiele unter Wine nicht funktionieren und OpenGL-Fehler melden. Kann ich persönlich nicht testen da ich nur wenig Wine benutze und so gut wie gar keine Spiele
  • XMBC verweigert ab Version 9.04 schlichtweg mit der Fehlermeldung, es sei kein ordentlicher OpenGL-fähiger Grafiktreiber installiert den Dienst.

XMBC needs hardware accelerated OpenGL rendering

Debugging und Beseitigung

Nachdem ich in einem XBMC-Forum den Tip bekommen habe, mal die OGL-Fähigkeiten meines Systems zu überprüfen, bin ich schnell auf eine neue Spur gekommen.

/> glxinfo | grep 'direct rendering'
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)

Praktischerweise gibts bei der obigen Ausgabe gleich den Tip mal die Libgl zu einer geschwätzigeren Ausgabe zu überreden.

/> setenv LIBGL_DEBUG verbose

daraufhin offenbart sich das eigentliche Problem sobald man eine App startet die OpenGL benutzt.

/> glxgears
 libGL: OpenDriver: trying /usr/lib/fglrx/dri/tls/swrast_dri.so
 libGL: OpenDriver: trying /usr/lib/fglrx/dri/swrast_dri.so
 libGL error: dlopen /usr/lib/fglrx/dri/swrast_dri.so failed (/usr/lib/fglrx/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
 libGL: OpenDriver: trying /usr/lib32/fglrx/dri/tls/swrast_dri.so
 libGL: OpenDriver: trying /usr/lib32/fglrx/dri/swrast_dri.so
 libGL error: dlopen /usr/lib32/fglrx/dri/swrast_dri.so failed (/usr/lib32/fglrx/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
 libGL error: unable to load driver: swrast_dri.so
 libGL: OpenDriver: trying /usr/lib/fglrx/dri/tls/swrastg_dri.so
 libGL: OpenDriver: trying /usr/lib/fglrx/dri/swrastg_dri.so
 libGL error: dlopen /usr/lib/fglrx/dri/swrastg_dri.so failed (/usr/lib/fglrx/dri/swrastg_dri.so: cannot open shared object file: No such file or directory)
 libGL: OpenDriver: trying /usr/lib32/fglrx/dri/tls/swrastg_dri.so
 libGL: OpenDriver: trying /usr/lib32/fglrx/dri/swrastg_dri.so
 libGL error: dlopen /usr/lib32/fglrx/dri/swrastg_dri.so failed (/usr/lib32/fglrx/dri/swrastg_dri.so: cannot open shared object file: No such file or directory)
 libGL error: unable to load driver: swrastg_dri.so
 libGL error: reverting to indirect rendering

Die abhanden gekommen Fähigkeit Direct Rendering zu benutzen, ist also weniger ein Konfigurationsfehler sondern vielmehr die fehlende Bibliothek swrastg_dri. In einem Ubuntu-Forum bekommt man hierzu schnell den Tip mal eine bestimmte Mesa-Lib zu installieren. Vermutlich hat hier jemand bei ATI vergessen diese als Abhängigkeit bei den fglrx-Paketen zu definieren.

sudo apt-get install libgl1-mesa-swrast

und siehe da, plötzlich geht XBMC wieder ohne Probleme und andere OGL-Apps zeichnen Videos und 3D-Daten wieder glatt wie ein Baby-Popo auf den Desktop ohne ruckeln und flickern.

 

Quellen

http://ubuntuforums.org/showthread.php?t=1449620

1 Kommentare.

  1. Genau die gleichen Symptome aber „sudo apt-get install libgl1-mesa-swrast“ installiert libgl1-mesa-swrx11 und „glxinfo | grep ‚direct rendering'“ gibt immer kein direkt rendering.

    Idee ?

    Danke,

    Nicolas