Autore Topic: Come compilare e testare mesa e driver video open (x utenti avanzati)  (Letto 1113 volte)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Premetto che questa guida nasce con lo scopo di tener traccia del lavoro svolto e spero qualche altro matto la possa trovare utile/interessante.

Per cercare di capire l'origine di un fastidioso blocco della scheda video durante le mie partitelle a urbanterror (giunto con il rilascio di mesa 9), mi sono imbattuto nella richiesta di un dev dei driver open: effettuare il "bisect" con git dei sorgenti di mesa per capire dove è stato introdotto l'errore.

Che significa???

Andiamo con ordine:

1- il codice sorgente di mesa e dri (insieme delle librerie e driver open per il 3D) sta su git. Per scaricarlo posizionarsi in una directory di preferenza (magari la home) e dare:
Codice: [Seleziona]
git clone git://anongit.freedesktop.org/git/mesa/mesaA questo punto è stata creata una sottodirectory mesa con alcuni file nascosti che contengono tutte le versioni del codice di sviluppo di mesa.
Per generare l'albero dei file relativo ad un preciso rilascio (identificato dai tag) basta dare:
Codice: [Seleziona]
git checkout nome-tagL'elenco dei tag dei rilasci è disponibile qui: http://cgit.freedesktop.org/mesa/mesa/refs/tags

Ora abbiamo tutti i sorgenti della versione di mesa che vogliamo testare/provare/debuggare

2- ci tocca compilare! Preso paro paro dal PKGBUILD di chakra:
Codice: [Seleziona]
   make clean
./autogen.sh
 ./configure --prefix=/usr \
    --with-dri-driverdir=/usr/lib/xorg/modules/dri \
    --with-gallium-drivers=r300,r600,nouveau,svga,swrast \
    --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \
    --enable-gallium-llvm \
    --enable-gallium-egl \
    --with-egl-platforms=x11,drm \
    --enable-shared-glapi \
    --enable-gbm \
    --enable-glx-tls \
    --enable-dri \
    --enable-glx \
    --enable-osmesa \
    --enable-gles1 \
    --enable-gles2 \
    --enable-egl \
    --enable-texture-float \
    --enable-xa \
    --enable-vdpau
  make

Controllare l'esito di ogni comando per verificare che sia andato tutto bene.

3- testiamo la versione scaricata!
Per far vedere ad un programma (ad esempio il mio urbanterror) le librerie di mesa appena compilate basta valorizzare alcune variabili di ambiente:
Codice: [Seleziona]
LD_LIBRARY_PATH="/path/sorgenti/mesa/lib" LIBGL_DRIVERS_PATH="/path/sorgenti/mesa/lib/gallium" LD_PRELOAD="/path/sorgenti/mesa/lib/libGL.so.1"  urbanterror
Se prima volete fare una verifica lanciate in questo modo glxinfo. Se ci fossero problemi vi avviserà.

4- come si "biseca"? il bisect è un comando specifico di git ideato per la ricerca della versione in cui è stato introdotto un bug.
Dobbiamo intanto conoscere due tag uno dove il bug c'è (bad) e una dove non c'è (good). Poi dare:
Codice: [Seleziona]
git bisect start
git bisect bad tag1
git bisect good tag2

A questo punto git aggiorna il codice ad una versione intermedia. Si ricompila come indicato al punto 2.
Se il bug permane si da
Codice: [Seleziona]
git bisect badaltrimenti
Codice: [Seleziona]
git bisect good
In entrambi i casi verrà scaricata una versione intermedia fra quella buona e quella cattiva. Il processo va avanti fino a che non ci sono versioni intermedie.

A questo punto si comunicano ai dev (https://bugs.freedesktop.org/) le due versioni bad e good contigue per procedere al bug hunting.

Buon divertimento!
« Ultima modifica: 25 Aprile 2013 ore 12:35 da dinolib »

Offline paolomi

  • *
  • Post: 287
  • Reputazione: 21
  • Akabei... con spacchettamento a destra
    • Mostra profilo
Re:Come compilare e testare mesa e driver video open (x utenti avanzati)
« Risposta #1 il: 25 Aprile 2013 ore 08:49 »
Grazie! Grazie! Grazie!  :)
Questo è uno degli argomenti che non ho mai avuto tempo di approfondire, ma grazie a questa guida sarà tutto molto più semplice. Grazie!  :beer:
+1
Usare Chakra senza PulseAudio

«L'anno prossimo passerò a pulseaudio» (frase detta da me alcuni anni fa… e ancora valida!)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Re:Come compilare e testare mesa e driver video open (x utenti avanzati)
« Risposta #2 il: 25 Aprile 2013 ore 12:39 »
Ho corretto il comando per configurare make. Usavo autoreconf come su arch, ma poi con mesa 9.1 mi chiede llvm compilato con un parametro speciale...

Usando invece autogen.sh riesco a compilare anche mesa-9.1.1.

ah, una buona notizia: con mesa-9.1.1 UrT non si blocca più!

Attendo quindi con ansia il nuovo rilascio del team Chakra. Nel frattempo uso la versione che mi sono compilato  ;D

PS: per chi è impaziente, mesa 9.2 offrirà molte migliorie di performance. Quindi appena sarà rilasciato perchè non provarlo? :-)
Ah: si può anche impostare mesa ricompilato a livello di sistema (KDE). Ma non voglio incasinare tutto  :P

 

Template by Homey | Sito ufficiale | Disclaimer