64bitový Linux, opensource ATI a Google Earth

Kvě
07
2007

Tenhle článek se možná netýká jen 64bitového Linuxu – Google Earth se s opensource drivery pro ATI chová leckdy poměrně bizarně i ve 32bitovém. Nicméně s problémy, popisovanými v druhé části, se snad už ve 32bitovém Linuxu nesetkáte – zato ale pravděpodobně nemusejí nastat pouze s opensource ATI drivery.

Tips in this article may not be limited to 64bit Linux only – If you’re using Google Earth with opensource ATI drivers, it does bizarre things sometimes. However, I hope that things mentioned in the second part are not needed in any 32bit distro nowadays, but they may be relevant to other graphics drivers as well, not only to opensource ATI. See further down for English, as usual.

O prvotním problému Google Earth a opensource driverů ke kartám ATI jsem tu už psal. Zmíním tedy jen tolik, že pro to, aby s nimi GE vůbec nějak fungovala, je třeba v souboru ~/.drirc nastavit disable_lowimpact_fallback na „true“. To je první krok.
Bohužel, jak jsem později zjistil, není to jediný problém. Ačkoliv poté přestane GE při startu spolehlivě vytuhávat celý systém, přesto nastávají situace, kdy k tomu dojde (což je velice nepříjemné, pochopitelně). Ve 32bitových distribucích, které jsem zkoušel, se tak dělo v jediném případě – pokud bylo při spuštění okno GE maximalizováno. V takovém případě ho stačilo při startu rychle trochu zmenšit a GE normálně nastartovala. Poté ho bylo už možné bez problémů maximalizovat. Podivné, nicméně je to tak.
V 64bitových distribucích jsem se ale v poslední době setkal s ještě bizarnějším chováním – to, že nebylo okno maximalizované, nezabíralo, systém se stejně při startu GE zasekl. Nicméně, jak jsem zjistil, i to se dá obejít. Stačí okno GE při startu MINIMALIZOVAT! Je třeba to udělat co nejrychleji, proto je ideální nastavit si ve window manageru nějakým způsobem spouštění GE rovnou minimalizované. Pak je třeba chvíli počkat, než proběhne inicializace programu – v momentě, kdy zmizí „Loading overlays“ a začne se přibližovat samotná zeměkoule, je už dle mých zkušeností bezpečné okno obnovit či maximalizovat. Opět, jak říkám, bizarní chování a řešení, nicméně lepší něco než nic.
Druhá část je pak ona čistě 64bitová. Pokud totiž neprovozujete GE pod chrootem, může se vám stát, že program sice spustíte, ale běží zoufale pomalu. V takovém případě totiž došlo k tomu, že vykresluje prostřednictvím softwarové OpenGL emulace (aniž by to ovšem sám poznal a zahlásil). Problém je tu v cestě k DRI modulům pro 32bitové aplikace, které nemohou používat 64bitové moduly. Většina 64bitových distribucí tyto moduly obsahuje nebo je možné je do nich doinstalovat. V Arch64 se po instalaci balíčku lib32-libgl-dri (v případě ATI opensource driverů) z repozitáře community nacházejí v /opt/lib32/usr/lib/xorg/modules/dri. V jiných distribucích se pravděpodobně budou nalézat na jiných místech (v Ubuntu Feisty je to /usr/lib32/dri) a budou se do systému instalovat jiným způsobem. Hledejte na disku například soubor r300_dri.so – pokud máte v distribuci 32bitové moduly instalované, měli byste ho najít na dvou místech, přičem to, které hledáte, bude mít někde v cestě velice pravděpodobně něco jako ‚lib32‘ nebo ‚ia32‘.
Pak už je to velice jednoduché. Stačí před spuštěním GE z terminálu zadat v případě Arch64 příkaz

export LIBGL_DRIVERS_PATH=/opt/lib32/usr/lib/xorg/modules/dri/

a poté z téhož terminálu spustit výše popsaným způsobem Google Earth a po chvilce byste měli mít k dispozici plně akcelerovanou a funkční GE. V případě jiné distribuce je samozřejmě třeba správně upravit cestu ke 32bitovým modulům. A úplně nejlepší je vytvořit si na spouštění GE vlastní skript, který proměnnou LIBGL_DRIVERS_PATH nastaví za vás.
A mimochodem, stejné problémy s nefunkční 3D akcelerací se mohou objevit při používání kteréhokoliv programu prostřednictvím 32bitového Wine – toto řešení je tedy platné i pro ně.

I’ve already mentioned (sorry, Czech only) one big problem with Google Earth and opensource ATI drivers. So let’s just repeat that to get GE to work at all, you’ve got to set disable_lowimpact_fallback to „true“ in ~/.drirc. That’s the first step.
Sadly, as I’ve discovered, it’s not the only problem. Although running GE doesn’t necessarily mean guaranteed system freeze anymore, it’s still possible (which is quite bad, of course). In 32bit ditstros I’ve tried, this happened in one case – if the GE windows was maximized during the program’s startup. All you had to do was make the window smaller quickly and GE succesfully started. Then you could maximize the window again without problems. Strange, but true.
In 64bit environment I’ve discovered yet more bizzare behavior – not maximizing GE window during it’s startup was no longer working, it forze the whole system anyway (and I mean WHOLE system, non recoverably). However, as I’ve found out, there’s a workaround too. All you have to do is MINIMIZE GE’s window while it’s starting. It needs to be done fast, so it’s better to set your window manager to run GE minimized by default. When you run it, you have to wait until its initialized – when the „Loading overlays“ disappears and the globe starts to zoom in, it’s safe to restore Google Earth’s window, or maximize it. Again, it’s bizzare behaviour and bizzare solution, but it’s better than nothing, I guess.
This next part is the aforementioned 64bit only. If you do not run GE using 32bit chroot, you may succeed starting it, but then you find out it runs very slowly. In this case, it’s using software OpenGL to do the drawing (although it doesn’t detect and warn you about it as it normally should). The trouble here is that 32bit apps can’t find appropriate DRI modules, as it can’t use 64bit ones. Most of the 64bit distributions does contain them, though, or it’s possible to add them. In Arch64, if you install lib32-libgl-dri package (when using opensource ATI drivers), they’re located in /opt/lib32/usr/lib/xorg/modules/dri. In other distributions their location may differ (in Ubuntu Feisty it’s /usr/lib32/dri) and there will be different ways to install them. Try to locate the r300_dri.so file – if you have 32bit modules installed, you should find it in two locations, one of which should contain something like ‚lib32‘ or ‚ia32‘ in the path.
After this it’s easy. All you have to do is before you run GE from the terminal, run this command

export LIBGL_DRIVERS_PATH=/opt/lib32/usr/lib/xorg/modules/dri/

and then start (from the same terminal) Google Earth, as described above. After a short while, you should be looking at fully accelerated and working GE. If you’re using other distro than Arch64, you have to change the path to the one your system is using, of course. And the best way is to make a script for running GE, so it does set the LIBGL_DRIVERS_PATH variable for you every time you run GE.
And, by the way, this very same solution applies if you have problems with 3D acceleration in any other program started using 32bit Wine – you have to set the path to 32bit modules too, then.

Buďte první, komu se článek líbí.

Napsal(a) dne 7. 5. 2007 v 02:01
Kategorie: HW, SW a podobná verbež

Žádné komentáře »

RSS komentářů k tomuto příspěvku. Zpětné URL


Napište komentář

Používá systém WordPress | Styl: Aeros 2.0 z TheBuckmaker.com