воскресенье, 18 октября 2009 г.

Видеокарта ATI и семь кругов ада

Как-то в воскресный день моя видеокарта GeForce 7600GT 256bit служившая мне верой и правдой не один год приказала долго жить. Встал вопрос о покупке новой. Игрульками я уже давно не увлекаюсь поэтому взор упал на бюджетные модели. Промозглая погода сделала свое дело и желания ехать куда-то за самой дешевой картой или прошвырнуться по комиссионкам не возникло. В ближайшем магазине менеджер на мою просьбу выписать самую дешевую видюху на PCI-E предложил мне RadeonHD 4650 и какую-то NVIDIA. Секундное колебанея в сторону NVIDIA угасло за мыслью что 2D на открытых дровах ATI работает нормально.

Втыкаю я этот Radeon в комп и первая мысль - а кто успокоит этого карлсона? Привычка к видюхе с пассивным охлаждение засела в подкорку. Ладно думаю, пока настрою. Всяких баек о глючных дровах ATI я не боюсь как истинный джентушник. Завел драйвера Catalyst-9.9 на linux-2.6.31.4, карлсон поутих, хоть и не завывает теперь, но все равно неприятно шумит. В xorg.conf пришлось создавать секцию Monitor, ибо само оно подефолту хотело 8bps цвет, а он еще и дровами не поддерживается. Стыдно товарищи ATI. Так glxgears показал 6600 fps, слабовато на фоне старенького geforce (9800 fps), ладно четр с этим 3D да и не бенчмарк это. В 2D все нормально,хотя иногда создается впечатление дискомфорта(проскакивают артефакты), с этим можно смириться. Видео в mplayer воспроизводится нормально без эффектов рассинхронизации кадров в динамических сценах. В общем драйвер для этой видюхи пригоден к употреблению.

Переходим на открытые дрова. Берем xf86-video-ati-6.12.4 и xf86-video-radeonhd-1.3.0. В 2D с обоими все замечательно, а вот видео нормально воспроизводит лишь radeonhd в режиме "xv - textuted video", драйвер же ati в зависимости от режима либо тормозит безбожно на полном экране (1680x1050) либо на динамических сценах присутствует эффект рассинхронизации. 3D на обоих софтовое. Получается что открытый драйвер для этой видюхи малопригоден.
Все ATI'шники ждут счастья с выходом ядра 2.6.32, в которое добавлены DRM модели из ветки x11-drm(которая в свою очередь объявлена законченной). Берем linux-2.6.32_rc5, текущий срез xf86-video-ati и mesa-7.6. В ядре включаем по-умолчанию "Kernel Mode Settings". Загружаем, фреймбуффер на родном разрешении производит впечатление, переключение между Xorg и консолью просто реактивное. Смотрим, появилось аппаратное 3D (по крайней мере так говорит glxinfo), glxgears выдал 2700 fps. Видео сели подобрать правильный модуль вывода работает нормально. 2D чисто по тестам работает нормально, а вот в реальной работе тормоза даже при переключении окон, перетаскивании и ресайзе. Если взять полноэкранный терминал на основе VTE, поставить ему истории много тысяч строк, сделать вывод dmesg, то таща быстро мышкой скролл, последний очень сильно за ней не будет поспевать. работать почти не возможно с таким 2D. Пробуем radeonhd и тут сюрприз - не хочет он заводиться с KMS (просто черный экран, хотя комп нормально выключается по ACPI-event). Перегружаем отключая KMS, radeonhd заводится, 3D есть, glxgears рапортует 2200 fps, однако в видео на динамических сценах в зависимости от модуля вывода становится заметен с той или иной степенью эффект вертикальной рассинхронизации; с 2D все в порядке. Запускаем драйвер ati без KMS - 3d есть, glxgears выдает 1600 fps но зато с 2D и видео все в порядке.

Однако главной проблемой текущих дров (а может БИОС данной карты) является неспособность усмирить карлсона, чтобы он хотя бы не выл так противно. Если драйвера научатся нормально управлять энергосбережением то комбинацию kernel-2.6.32-noKMS/ati-next_verison/mesa-7.6/xorg-1.6.5 можно считать более предпочтительной проприетарному драйверу для карт r600/r700(не беря во внимание игры и многомониторные конфигурации) а пока и Catalyst-9.9/linux-2.6.31.4 есть не просят.