18 March 2009

Открытая замена ati-drivers

Configuring Linux
Новость «AMD прекращает поддержку R300-R500 чипов» и политика ati-drivers заставили меня задуматься о переходе к свободному драйверу.
Поэтому я хочу рассказать как я это сделал в gentoo, поскольку на gentoo-wiki не нашел подобных how-to, а в разделе docs на gentoo.org, информация требует серьезных поправок.
После некоторых усилий, мне удалось получить рабочую систему на xf86-video-ati с 3D и композитингом.

Итак, что меня не устраивало?
1) fglrx заставляет отключить RCU preemption в ядре. А я хочу это использовать, поскольку RCU положительно сказывается на производительности и масштабируемости системы.
2) fglrx конфликтует с виртуализацией идущей с ядром, а я бы хотел поиграться с kvm.
3) fglrx закрыт, как следствие «runtime text relocations» в его библиотеках; а и вообще, на мой взгляд, он как-то выбивается из идеологии linux, потому что драйвер диктует какие-то свои условия.
4) также стоит отметить что fglrx «дружит» далеко не со всеми ядрами, например, он часто «отстает» от последних версий.

Что имеем?
Девайс: Radeon X850 PRO (R480) (PCIE)
Gentoo Linux ~amd64

Просто «в лоб» поменять поменять в xorg.conf fglrx на ati, дособрать необходимые модули и сделать eselect opengl set xorg-x11 не увенчались успехом. Нужны более тонкие настройки иксов + как оказалось, свежие версии библиотек x11.

Что нужно сделать, чтобы все заработало?
1) /etc/make.conf
USE="... dri xcomposite ... "
VIDEO_CARDS="radeon"

В ядре собираем (встроенно или модульно) agpgart и DRM -> Radeon (например)

2) далее через layman (если не установлен, то emerge layman) подлючаем x11 overlay:
layman -a x11

и демаскируем пакеты:
ln -s /usr/portage/layman/x11/profiles/package.mask /etc/portage/package.unmask/x11

после чего делаем:
emerge -uDN world

Однако, стоит отметить, что еbuild'ы из этого оверлея не совсем идеальны.
У меня, к примеру, не захотел собираться пакет pixman.
Поэтому такие некритичные пакеты можно исключить из
/etc/portage/package.unmask/x11
Хотя с помощью костыля я поставил именно pixman-9999 (кому интересно могу рассказать как, но вообще это не существенно, ибо все работает и со старой версией pixman).
Это, пожалуй, единственный негативный момент, который мне встретился, и я думаю,
это временные проблемы с ебилдами, которые будут устранены в ближайщем будущем.
Итак, система собрана, пора поднастроить xorg.

3) xorg.conf
Section "ServerFlags"
Option "AllowMouseOpenFail" "true"
Option "IgnoreABI" "on"
Option "AIGLX" "true"
EndSection

Section "Module"
Load "glx"
Load "extmod"
Load "dbe"
Load "freetype"
Load "dri"
Load "drm"
Load "ddc"
Load "vbe"
EndSection

Section "Device"
BoardName "Radeon X850 PRO (R480) (PCIE)"
Driver "ati"
Identifier "Device[0]"
Screen 0
VendorName "ATI"
Option "XAANoOffscreenPixmaps" "true"
Option "ColorTiling" "on"
Option "AccelMethod" "EXA"
Option "DMAForXv" "true"
Option "EnablePageFlip" "on"
#Option "AGPFastWrite" "yes"
Option "DynamicClocks" "on"
EndSection

Section "DRI"
Mode 0666
EndSection

Section "Extensions"
Option "Composite" "true"
Option "DAMAGE" "true"
Option "RENDER" "true"
EndSection


Если вы еще не удалили ati-drivers, то делаем
eselect opengl set xorg-x11


Запускаем иксы и наслаждаемся рабочим драйвером! :)
glxinfo:
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes

/var/log/Xorg.0.log:
(**) AIGLX enabled
(II) AIGLX: enabled GLX_MESA_copy_sub_buffer
(II) AIGLX: enabled GLX_SGI_make_current_read
(II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
(II) AIGLX: enabled GLX_texture_from_pixmap with driver support
(II) AIGLX: Loaded and initialized /usr/lib64/dri/r300_dri.so
...
(II) Loading extension XFree86-DRI
(II) Loading extension DRI2
(II) RADEON(0): [dri] Found DRI library version 1.3.0 and kernel module version1.29.0
(II) RADEON(0): [DRI] installation complete

glxgears:
23590 frames in 5.0 seconds = 4717.968 FPS

В заключение отмечу, что да, количество fps немного хуже, чем в драйверах от amd, но с теми задачами, которые мне нужны, эта карточка + открытый драйвер справляются весьма неплохо.
Да, и xf86-video-ati будет развиваться дальше, а поддержка моей карты с ati-drivers прекращается.
Так что свой выбор в сторону полностью открытого ПО я уже сделал.
Tags:linuxgentooatiradeon
Hubs: Configuring Linux
+34
7.4k 21
Comments 49
Top of the last 24 hours