Xgl felsökning

Hoppa till: navigering, sök

Xgl är fortfarande experimentell kod som endast har testats på ett fåtal hårdvarukonfigurationer. Beroende på drivrutin kan det göra din dator obrukbar. Denna kod är alltså för den experimentlystne. Trots detta fungerar den oerhört bra på många plattformar.

För mer generell information om Xgl, läs Xgl översikt. För information om att använda Xgl på SUSE Linux läs sidan Använda Xgl på SUSE Linux

Besök #Xglirc.freenode.org för mer information och support.

Vanliga konfigurationsfel

  • Xgl behöver inte Composite extension aktiverad i xorg.conf - det är snarast motverkande eftersom NVIDIA-drivern deaktiverar OpenGL per automatik när "Composite" är aktiverat. Composite extension erhållas istället av Xgl själv, utan att något behöver konfigureras.

Om du får ett felmeddelande om utebliven Composite extension när du startar compiz, provade du antagligen att starta den från basen av Xorg servern (som inte skall användas av något program förutom för att starta själva Xgl) och inte på Xgl-servern. Ställ in din DISPLAY-variabel på rätt sätt.

Mjukvarurelaterade problem

  • En bugg i SDL gör att SDL-applicationer blir transparenta.

Innan start av SDL sätt in kommandoraden 'export XLIB_SKIP_ARGB_VISUALS=1' för att ta bort transparensen. Detta är en temporär fix.

Generella hårdvaruberoende problem

  • XVideo kommer vara mycket långsamt om hårdvaruacceleration (pixel shaders) inte är påkopplat. Om du använder composite manager, kommer den endast vara snabb om FBO eller pBuffers är tillgängliga och aktiverade.
  • Program som använder oaccellererad OpenGL (det är grafisk hårdvara som antingen inte stöder pBuffers eller FBOs eller så har Xgl startats utan -accel glx) som kan ge fel eller att Xgl krashar. Detta är ändrat i CVS och kommande openSUSE paket.
  • Med vissa drivrutiner fungerar inte skärmuppdatering.
    Skärmen verkar endast uppdateras när man aktivt kallar på xrefresh eller genom att skicka "expose events" till Xgl genom att lura Xgl-fönstret med ett annat fönster. Detta undersöks just nu. Typiskt är ett enda anrop av xrefresh nog för hela sessionen.

ATI/Open source drivrutin "radeon"

  • Drivrutinen accellererar inte "blits" från "back buffer" till "front buffer" som gör den mycket långsam och skärmen kan flimmra. Drivrutinen kommer snart att uppdateras och skall då fungera tillfredställande.
  • Drivrutinen har varken pBuffer eller FBO-stöd. När man använder composite manager kommer alla fönster skapas mjukvarumässigt och endast "compositing" är hårdvaruaccellererat. Förvånande nog är detta tillräckligt i de flesta fall.

ATI/Properitär drivrutin "fglrx"

De properitära drivrutiner som ATI-kort har medför omfattande problem idag.

  • Att starta Xgl med de vanliga DISPLAYMANAGER_XSERVER fungerar inte med aktuella drivrutiner pga 'DISPLAY=:93 Xgl :0' felaktigt försöker använda 'XOpenDisplay (:0.0)' beroende på en QueryVersion samt att porten för Xgl's server redan är öppen. Detta gör att den låser sig. ATI har undersökt detta och det finns en väntande fix (se openSUSE bugzilla ärende #129999.
    Om du använder gdm, kan problemet åtgärdas genom att ändra raden
 0=Standard till 1=Standard i /etc/opt/gnome/gdm/gdm.conf. 

Du kan även starta Xgl manuellt. Logga på systemet med en enkel fönsterhanterare såsom twm, öppna en xterm och starta
     

Xgl -fullscreen :1 & sleep 2 && DISPLAY=:1 kde

Ersätt

kde med gnome eller fvwm2 

eller till det favoritskrivbord du önskar starta.

  • Enligt flera rapporter fungerar inte Xgl med de senaste drivrutinerna förutom om Xgl startas manuellt.
  • Det verkar som om system med ATI-kort felaktigt startar xorg istället för Xgl på grund av en sybolisk länk som sätts fel. För att ordna detta gå till /usr/X11R6/bin och kör följande kommando som root:
  1. ln -sf Xgl XFree86

init 3 and init 5 and Xgl should be running. Verified on two laptops with ATI cards.

  • Den version av ATI fglrx driver som fungerar är 8.23.7-1
  • Kort: Radeon Mobility 9700 och Radeon Mobility 24

Intel / open source drivrutin "i810"

  • Drivrutinen accellererar inte "blits" från "back buffer" till "front buffer" som gör den mycket långsam och skärmuppdateringar gör att skärmen flimmrar mycket. Drivrutinen kommer förhoppningsvis snart uppdateras och borde då fungera OK.
  • Drivrutinen har inte pBuffer eller FBO-stöd. När man använder en composite manager, skapas alla fönster med mjukvaran och endast compositing är hårdvaruaccellererat. Förvånande nog fungerar detta tillräckligt bra i de flesta fall. FBO-stöd väntas adderas till drivern inom en snar framtid.
  • XVideo YV12 ytor (surfaces) är hårdvaruaccellererade (när composite manager inte används), men pga en bug i drivern, saknas en av färgkanalerna, vilket ger felaktiga grönaktia/lila färger. Detta måste undersökas vidare.

NVIDIA / open source driver "nv"

  • Stöder inte alls 3D-acceleration. Xgl fungerar inte bra med mjukvaruemulering. Undvik därför denna kombination.

NVIDIA / proprietär driver "nvidia"

  • OpenGL-accelleration fungerar inte bra när Composite är aktiverat. Denna option i /etc/X11/xorg.conf bör avaktiveras om den aktiverats tidigare. Notering: Xgl stöder Composite ändå, även om det är avaktiverat i xorg.conf. FBO kan användas med denna driver istället för pbuffers för XVideo acceleration. Aktivera detta genom att ändra
     DISPLAYMANAGER_XGL_OPTS="-accel glx:pbuffer -accel xv:pbuffer" till
     DISPLAYMANAGER_XGL_OPTS="-accel glx:pbuffer -accel xv:fbo" i /etc/sysconfig/displaymanager.

Ordlista

Composite Extension
Denna extension till X skapar hela sub-trädet av fönsterhierarkin som skall skapas till en off-screen buffer. Applikationer kan därmed använda innehållet i denna buffer för vidare arbete. Off-screen buffern kan automatiskt läggas samman med ett huvudfönster (parent window) eller slås samman av externa program, kallade compositing managers.
FBO
Frame Buffer Object (FBO) är en OpenGL-extension som definerar ett enkelt gränssnitt för att rita målmiljöer annat än de buffrar tillhandahållna av GL via fönstersystemet.
Pbuffer
Pixel buffers (kort för Pbuffers) är osynliga tillägg för rendereringsbuffers för en OpenGL-skapare.