Nadchodzi chwila szczególna, która nie przejdzie obok mnie obojętnie. Mam konkretnie na myśli bliski termin ukończenia jądra 2.6.33 oraz mojego ulubionego środowiska graficznego KDE 4.4. Postanowiłem więc zrobić zobie mały podkład pod nowy system, opierając się na jedynej słusznej dystrybucji Slackware-Current.
Jak niektórzy z Was pamiętają, posiadam w swoim placku mobilnego RadeonaHD 3450, który swojego czasu sprawiał mi ogromne problemy na pseudo-sterowniku ATi. Korzystając więc z okazji, przygotowałem dla Was małe How-to jak zmusić tą kartę do poprawnej pracy z otwartymi sterownikami oraz z hitem ostatniego czasu - obsługą KMS.
Kernel 2.6.33-rc7
Na chwilę obecną przygotujmy sobie nowe jajo 2.6.33-rc7. Nie będę rozpisywał się na temat samej konfiguracji jądra, gdyż należy to do indywidualnych upodobań. A że mam świra na punkcie monolitycznego jądra, bez żadnych modułow, wskażę tylko miejsca dotyczące naszego dzisiejszego tematu.
Przedewszystkim będziemy potrzebować obsługi DRM/DRI dla Radeona
Device Drivers ---> Graphics support ---> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<*> ATI Radeon
[*] Enable modesetting on radeon by default
Bardzo ważna sprawa. Nie kompilujemy żadnego framebuffora. Darujmy sobie zatem wybory VESA FB czy RadeonFB ( Support for frame buffer devices ). Dlaczego? Ano dlatego, że KMS posiada własny, mogą wystąpić konflikty, a w najlepszym wypadku w/w wymienione moduły i tak będą wyładowywane.
Teraz będzie knif :) Do działania 3D będziemy wymagali firmware naszej karty. Niestety jeszcze nie został on dodany do źródeł jądra, stąd też musimy się w niego zaopatrzyć sami. Konkretnie trzeba nam plików R600_rlc.bin oraz R700_rlc.bin, które znajdziemu tutaj : http://people.freedesktop.org/~agd5f/radeon_ucode/
Możemy teraz rozegrać sprawę na dwa sposoby. W przypadku gdy kompilujemy drm jako moduł, wystarczy skopiować te pliki do katalogu /lib/firmware/radeon, którę będą ładowały się wraz ze startem systemu. Sprawa komplikuje się gdy zechcemy mieć wszystko w jądrze. W tym wypadku jajko będzie chciało załadować je jako wbudowane built-in, pozostawiając je niezauważonymi. Dodatkowo zostaniemy poczęstowani 60-sekundowym postojem i brakiem przyzwoitej akceleracji 3D. W takim przypadku postępujemy następująco :
Firmare wgrywamy do żródeł jądra, konkretnie do katalagu firmware/radeon... W moim przypadku do /usr/src/linux/firmware/radeon. Na dopięcie guzika dopisujemy je w konfiguracji jądra :
Device Drivers ---> Generic Driver Options --->
-*- Userspace firmware loading support
[*] Include in-kernel firmware blobs in kernel binary
(radeon/R600_rlc.bin radeon/R700_rlc.bin) External firmware blobs to build into the kernel binary
(firmware) Firmware blobs root directory
Wuala - możemy przystąpić do kompilacji :) Po udanym restarcie idziemy dalej.
Biblioteka libdrm
Pobieramy sobie najnowsze libdrm z http://dri.freedesktop.org/libdrm/ i kompilujemy.
- ./configure --prefix=/usr --enable-radeon-experimental-api
- make
- make install
Kiedy mamy już świeże biblioteki zabieramy się za Mesę i sterowniki ATI
MESA i sterowniki ATI
- git clone git://anongit.freedesktop.org/mesa/mesa
- cd mesa
- ./autogen.sh --prefix=/usr --with-dri-drivers=swrast,r600,r700 --libdir=/usr/lib --includedir=/usr/include --with-dri-driverdir=/usr/lib/xorg/modules/dri --disable-gallium --enable-debug
- make
- make install
- git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-ati
- cd xf86-video-ati
- ./autogen.sh --prefix=/usr --libdir=/usr/lib --includedir=/usr/include
- make
- make install
Jak one się kręcą
DMESG
[ 0.738635] [drm] Initialized drm 1.1.0 20060810
[ 0.738765] [drm] radeon defaulting to kernel modesetting.
[ 0.738857] [drm] radeon kernel modesetting enabled
[ 0.738985] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.739120] radeon 0000:01:00.0: setting latency timer to 64
[ 0.740531] [drm] radeon: Initializing kernel modesetting.
[ 0.740702] [drm] register mmio base: 0xD6300000
[ 0.740793] [drm] register mmio size: 65536
[ 0.740993] ATOM BIOS: TOS_POTOMAC_DDR2
[ 0.741104] [drm] Clocks initialized !
[ 0.741926] [drm] Detected VRAM RAM=256M, BAR=256M
[ 0.742056] [drm] RAM width 64bits DDR
[ 0.742203] [TTM] Zone kernel: Available graphics memory: 436718 kiB.
[ 0.742308] [TTM] Zone highmem: Available graphics memory: 1554082 kiB.
[ 0.742416] [drm] radeon: 256M of VRAM memory ready
[ 0.742507] [drm] radeon: 512M of GTT memory ready.
[ 0.742654] alloc irq_desc for 28 on node -1
[ 0.742660] alloc kstat_irqs on node -1
[ 0.742673] radeon 0000:01:00.0: irq 28 for MSI/MSI-X
[ 0.742681] [drm] radeon: using MSI.
[ 0.742804] [drm] radeon: irq initialized.
[ 0.742896] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 0.743301] [drm] Loading RV620 Microcode
[ 0.743395] platform radeon_cp.0: firmware: radeon/RV620_pfp.bin
[ 0.743525] platform radeon_cp.0: firmware: radeon/RV620_me.bin
[ 0.743654] platform radeon_cp.0: firmware: radeon/R600_rlc.bin
[ 0.776656] [drm] ring test succeeded in 0 usecs
[ 0.776884] [drm] radeon: ib pool ready.
[ 0.777044] [drm] ib test succeeded in 0 usecs
[ 0.777136] [drm] Enabling audio support
[ 0.917038] [drm] fb mappable at 0xC0141000
[ 0.917129] [drm] vram apper at 0xC0000000
[ 0.917219] [drm] size 4096000
[ 0.917316] [drm] fb depth is 24
[ 0.917405] [drm] pitch is 5120
[ 1.836815] Console: switching to colour frame buffer device 160x50
[ 1.840464] fb0: radeondrmfb frame buffer device
[ 1.840466] registered panic notifier
[ 1.840470] [drm] Initialized radeon 2.0.0 20080528 for 0000:01:00.0 on minor 0









Einstein / 9 luty 2010 - 11:49
Witam!
To fakt że sterowniki otwarte oferują powoli bardzo przyzwoitą wydajność jednakże jak ma się zarządzanie energii w ich najnowszej wersji? Jestem posiadaczem laptopa z tą kartą (dokładnie HD3470) i ma to dla mnie całkiem spore znaczenie. A akceleracja? Kiedykolwiek będę mógł na niej pograć sobie np. w sauerbraten?
Pozdrawiam!
94.42.62.* / Linux x86_64 / Mozilla 1.9.2