Драйвери ATI та openSUSE

Зображення користувача campana.

З драйверами для відеокарт в openSUSE бувають проблеми. Приміром, я волію використовувати пропрієтарні драйвери від виробника, оскільки вони досі більш функціональні, ніж відповідні вільні. Однак, політика випуску драйверів у виробників, всупереч уявленням, поширеним у бізнес-середовищі, суттєво більш мінлива, ніж політика випуску відкритих драйверів співтовариством розробників FOSS. Через це під час оновлення улюбленого дистрибутива Лінукса до більш нової версії можна отримати проблеми з відеодрайвером на рівному місці.

В openSUSE такі проблеми з’являються регулярно, тому пере оновленням слід вигуглювати і читати матеріали на opensuse.org, присвячені драйверам відеокарт.

У мене чергові проблеми виникли при переході до openSUSE 12.1. Перш за все, зникла можливість брати драйвер прямо з ati.com; тепер доводиться додавати репозиторій з адресою geeko.ioda.net (подробиці). По-друге, хоча драйвер нормально поставився, і я міг налаштовувати свою відеокарту в графічному AMD Catalyst Control Center, пропало прискорення 3D. А це означає, що перестали працювати всі 3D-ігри. Наявність чи відсутність прискорення 3D завжди можна перевірити, ввівши в командному рядку команду

glxinfo

і пошукавши на початку отриманого виводу рядок «direct rendering». Якщо шукати зовсім ліньки, можна одразу ввести команду

glxinfo | grep render

У мене вона показала «direct rendering: No» і трохи нижче попередження: «WARNING: Direct Rendering is NOT enabled».

Деякий час гугління нічого не давало, аж ось, нарешті, розв’язання знайшлося. Виявляється, проблема в тому, що система попри поставлений драйвер fglrx від AMD/ATI продовжує використовувати бібліотеку libGL.so, належну не збірці з цим драйвером, а пакунку відеодрайверів Mesa. Виправити це просто: слід просто замінити джерела деяких символьних посилань, щоб вони вели до правильної версії бібліотеки. А саме, слід

  1. Переконатися, що каталог /usr/lib64/dri має ось таке посилання на себе: /usr/X11R6/lib64/modules/dri (у мене таке посилання вже було).
  2. З бібліотеки /usr/X11R6/lib64/fglrx/fglrx-libGL.so.1.2 зробити лінки (посилання)
    • /usr/X11R6/lib64/libGL.so
    • /usr/X11R6/lib64/libGL.so.1
    • /usr/X11R6/lib64/libGL.so.1.2

    Оскільки ці три файли вже напевне існують, слід просто виправити в них адресу, на яку вони посилаються. Зробити це можна в Midnight Commander.

  3. З перелічених вище лінків зробити вторинні лінки у
    • /usr/lib64/libGL.so
    • /usr/lib64/libGL.so.1
    • /usr/lib64/libGL.so.1.2

    а якщо вони вже існують, то виправити в них адреси.

Це і все. Можна запускати ігри. Не треба перезавантажувати ні систему, ні сервер X, адже все, що ми зробили — це вказали правильну версію вже встановленої бібліотеки. Можемо перевірити наявність прискорення тривимірної графіки в консолі. У мене, приміром, вона показує:

~> glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: ATI Radeon HD 4250

Є тільки одна біда. Оновлення деяких програм можуть перезаписати якийсь із виправлених вручну лінків. Тоді виправляти доведеться знову. Але, в будь-якому разі, якщо ігри знову не запускатимуться, буде зрозуміло, що саме слід виправити.

Теґи: