Поиск по сайту:

Использование гибридной графической карты INTEL-AMD в Arch Linux


В этом уроке я собираюсь показать вам, как настроить две графические карты — Intel и Amd — на большинстве ноутбуков с использованием проприетарных и открытых драйверов и как переключаться между ними.

Обзор

Большинство современных ноутбуков оснащены двумя видеокартами с разными возможностями и энергопотреблением, что часто называют гибридной графикой
. Первый — IDG — встроенная графика — позволяет экономить электроэнергию, экономить заряд батареи и выполнять низкопроизводительный 3D-рендеринг. Часто его используют для повседневной работы.
Второй — DDG — выделенный графический процессор с большим энергопотреблением и высокой производительностью 3D-рендеринга, обычно подходит для игр, 3D-графики, рендеринга и т. д.
Данная модель предоставляет пользователю возможность выбора необходимой ему видеокарты. ….доплнит
В этой статье я покажу вам, как успешно установить INTEL/ATI проприетарные драйверы и драйверы с открытым исходным кодом.

Драйверы с открытым исходным кодом

Лучший и простой способ — использовать драйверы с открытым исходным кодом. Для этого не нужно никаких изобретений. Только если вы хотите указать некоторые сведения об устройстве.
Итак, установите драйверы ATI и Intel, и все готово.

pacman -Sy xf86-video-ati xf86-video-intel

По умолчанию без файла xorg.conf система запускается с драйвером Intel. Чтобы использовать карту Radeon, у вас есть две возможности:

1. Использование файла конфигурации

Если вы хотите настроить вручную, создайте

/etc/X11/xorg.conf.d/20-radeon.conf

и добавьте следующее:

Section "Device"
    Identifier "Radeon"
    Driver "radeon"
EndSection

Конечно, этому файлу вы можете указать дополнительные параметры.

2. Использование ПРАЙМ

PRIME — это один из способов переключения между IDG и DDG. Для меня это нормально, так что это мой выбор.
Сначала нам нужно найти нашу видеокарту:

xrandr --listproviders

вы можете увидеть две видеокарты

Providers: number : 2
Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:Intel
Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:radeon

Команда

xrandr --setprovideroffloadsink provider sink

может использоваться, чтобы заставить поставщика разгрузки рендеринга отправлять свои выходные данные поставщику приемника (поставщику, к которому подключен дисплей). Идентификаторы поставщика и приемника могут быть числовыми (0x7d, 0x56) или именами с учетом регистра (Intel, radeon).

xrandr --setprovideroutputsource radeon Intel
or
xrandr --setprovideroutputsource 0x7d 0x56

Теперь вы можете выбрать дискретную карту для приложений, которым она нужна больше всего (разработчики 3D-моделирования, игры…), добавив в начало

DRI_PRIME=1

переменная среды:

DRI_PRIME=1 your_progam

Например:

DRI_PRIME=1 glxinfo | grep "OpenGL renderer"

дает вывод:

OpenGL renderer string: Gallium 0.4 on AMD TURKS

сравнить с

glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile

Полагаю, запустить xrandr –setprovideroutputsource radeon Intel нетрудно
во время запуска DE – KDE, GNOME, XFCE4….

Собственные драйверы

Этот метод более сложен и требует большего количества изобретений пользователя. Драйверы катализатора из-за их медленной разработки отсутствуют в официальном репозитории, нам приходится собирать их из AUR.
Лучший способ — установить пакет Catalyst-Total, который включает в себя драйвер, утилиты ядра и 32-битные утилиты ядра.

yaourt -S catalyst-total

Вторая проблема, которую нам предстоит решить — драйверам катализатора требуется xorg до версии 1.17, поэтому нам придется понизить версию xorg сервера.
Используя репозиторий Vi0L0, это легко. Добавьте репозиторий над всеми остальными репозиториями в

pacman.conf
[xorg117]
Server = http://catalyst.wirephire.com/repo/xorg117/$arch
## Mirrors, if the primary server does not work or is too slow:
#Server = http://mirror.hactar.bz/Vi0L0/xorg117/$arch

Обновите систему, не бойтесь удалить все конфликтующие пакеты.

pacman -Syuu

После этого необходимо настроить Xorg – создайте файл /etc/X11/xorg.conf. Для этого мы можем использовать aticonfig:

aticonfig --initial

Мы можем проверить и исправить файл конфигурации. Например:

Section "ServerLayout"
    Identifier     "aticonfig Layout"
    Screen      0  "aticonfig-Screen[0]-0" 0 0
EndSection

Section "Module"
This loads the DRI/GLX modules
    Load  "glx"
    Load  "dri"
    Load  "dri3"
    Load  "GLcore"
    Load  "dbe"
    Load  "extmod"
EndSection

Section "ServerFlags"
#     Option "AutoAddDevices" "False"
    Option        "AllowEmptyInput" "no"
EndSection

Section "Monitor"
    Identifier   "aticonfig-Monitor[0]-0"
    Option        "VendorName" "ATI Proprietary Driver"
    Option        "ModelName" "Generic Autodetecting Monitor"
    Option        "DPMS" "true"
EndSection

Section "Device"
    Identifier  "aticonfig-Device[0]-0"
    Driver      "fglrx"
    Option        "TexturedXrender" "true"
    Option        "UseFastTLS" "0"
    Option        "OpenGLOverlay" "0"
    Option        "XaaNoOffscreenPixmaps" "false"
    BusID       "PCI:1:0:0"      // sometimes this parametr need to be corrected - try check with lspci

EndSection

Section "Screen"
    Identifier "aticonfig-Screen[0]-0"
    Device     "aticonfig-Device[0]-0"
    Monitor    "aticonfig-Monitor[0]-0"
    DefaultDepth     24
EndSection

Section "DRI"                                   
    Mode         0666    # May help enable direct rendering.
EndSection

Для переключения между графическими картами мы можем использовать поддержку PowerXpress.
Технология PowerXpress позволяет переключать ноутбуки с поддержкой двойной графики со встроенной графики (IGP) на дискретную графику либо для увеличения срока службы батареи, либо для достижения лучших возможностей 3D-рендеринга.

Самый простой способ — использовать

pxp_switch_catalyst

скрипт переключения, который выполнит некоторые дополнительные полезные операции:

  • Переключение

    xorg.conf

    - он переименует

    xorg.conf

    в

    xorg.conf.cat

    (если внутри есть fglrx) или

    xorg.conf.oth

    (если внутри есть информация), а затем создаст символическую ссылку на

    xorg.conf

    , в зависимости от того, что вы выбрали.

  • Бег

    aticonfig --px-Xgpu
  • Бег

    switchlibGL
  • Добавление/удаление

    fglrx

    в/из

    /etc/modules-load.d/catalyst.conf

Использование :

pxp_switch_catalyst amd
pxp_switch_catalyst intel

и перезапустите X-сервер

Другая возможность — запустить один X-сервер с IDG (Intel), а на втором X-сервере запускать больше расходных программ. Загрузите DE с конфигурацией ATI, затем переименуйте xorg.conf.

mv /etc/X11/xorg.xonf /etc/X11/xorg.conf.ati

и перезапустите X-сервер. По умолчанию Tt будет использовать драйвер Intel вместо fglrx. Чтобы запустить второй X-сервер с драйвером fglrx (ATI):

  1. метод – Чтобы запустить второй X-сервер с помощью fglrx, просто переместите

    xorg.conf

    вернулся на свое место(

    /etc/X11/xorg.conf

    ) перед началом второго сеанса X.

    mv /etc/X11/xorg.xonf.ati /etc/X11/xorg.conf

    Этот метод даже позволяет переключаться между запущенными X-сессиями. Когда вы закончите использовать fglrx, переместите

    xorg.conf

    снова.

  2. метод – использование xrun xcript
    этот метод почти такой же, как первый, но вместо копирования xorg.conf обратно в нужное место можно запустить скрипт и внутри него указать расположение файла xorg.conf.

– создать исполняемый скрипт – например xrun

nano /usr/bin/xrun
#!/bin/bash
calculate first available VT
LVT=`fgconsole --next-available`
calculate first usable display
XNUM="-1"
SOCK="something"
while [ ! -z "$SOCK" ]
do
XNUM=$(( $XNUM + 1 ))
SOCK=$(ls -A -1 /tmp/.X11-unix | grep "X$XNUM" )
done
NEWDISP=":$XNUM"
if [ ! -z "$*" ]
generate exec line if arguments are given
then
test if executable exists
 if [ ! -x "$(which $1 2> /dev/null)" ] 
then
echo "$1: No such executable!"
if running from X, display zenity dialog:
[ -z "$DISPLAY" ] || zenity --error --text="$1: No such executable!" 2> /dev/null
exit 127
fi
generate exec line
EXECL="$(which $1)"
shift 1
EXECL="$EXECL $*"
EXECPH=""
prepare to start new X sessions if no arguments passed
else
EXECL=""
EXECPH="New X session"
fi
if runing from X, display zenity dialog:
[ -z "$DISPLAY" ] || zenity --question --title "Launch?" --text="Will launch \"$EXECL$EXECPH\"
tty$LVT
X display $NEWDISP
Continue?" 2> /dev/null || exit 1
echo "Will launch \"$EXECL$EXECPH\" on tty$LVT, X display $NEWDISP..."
[ -z "$DISPLAY" ] && sleep 1s
This flag is used for indication of unaccessible or broken DRI.
It is set, for example, when using fglrx+compiz-manager.
Some games will refuse to start if it is set.
Unsetting it should not do any harm, and can be useful.
unset LIBGL_ALWAYS_INDIRECT
##########################################################
main execution
xinit $EXECL  -- $NEWDISP vt$LVT -config xorg1.conf -nolisten tcp -br &
##########################################################
set our new dislplay
DISPLAY=$NEWDISP
wait some time for X to load
sleep 4s
then we set useful parameters
disable non-linear mouse acceleration
xset m 1 0
disable hard-coded default 10m screensaver
xset s 0 0
while X is running, persistently do something useful
i.e. prevent apps from enabling mouse acceleration and screensaver
while xset -q > /dev/null
do 
xset m 1 0
xset s 0 0
sleep 3s
done
wait
sleep 5

Сделайте его исполняемым

chmod +x /usr/bin/xrun

Для второго сеанса X я использую отдельный файл конфигурации – xorg1.conf , потому что у меня были проблемы с клавиатурой и мышью на втором экране:

Section "ServerLayout"
    Identifier     "aticonfig Layout"
    Screen      0  "aticonfig-Screen[0]-0" 0 0
EndSection

Section "Module"

This loads the DRI/GLX modules
    Load  "glx"
    Load  "dri"
    Load  "dri3"
    Load  "GLcore"
    Load  "dbe"
    Load  "extmod"
EndSection

Section "Monitor"
    Identifier   "aticonfig-Monitor[0]-0"
    Option        "VendorName" "ATI Proprietary Driver"
    Option        "ModelName" "Generic Autodetecting Monitor"
    Option        "DPMS" "true"
EndSection

Section "Device"
    Identifier  "aticonfig-Device[0]-0"
    Driver      "fglrx"
    Option        "TexturedXrender" "true"
    Option        "UseFastTLS" "0"
    Option        "OpenGLOverlay" "0"
    Option        "XaaNoOffscreenPixmaps" "false"
    BusID       "PCI:1:0:0"
EndSection

Section "Screen"
    Identifier "aticonfig-Screen[0]-0"
    Device     "aticonfig-Device[0]-0"
    Monitor    "aticonfig-Monitor[0]-0"
    DefaultDepth     24
EndSection

Section "DRI"             # May help enable direct rendering.
    Mode         0666
EndSection

Section "ServerFlags"                # enable keyboard and mouse
    Option "AutoAddDevices" "False"
     Option "AllowEmptyInput" "no" 
EndSection

Использовать это довольно просто: если вы хотите запустить программу с использованием мощной видеокарты (fglrx), просто запустите ее на втором экране с помощью xrun.

xrun glxgears

Использование гибридной графической карты INTEL-AMD в Arch Linux – xrun

Единственным недостатком этих двух методов является отсутствие 3D-ускорения с помощью драйвера Intel. Однако 2D-ускорение полностью функционально.

Заключение

В этом уроке я показал вам возможные способы использования гибридной графической карты в вашем ноутбуке. Я использую оба метода. Сегодня я использую проприетарные драйверы из-за лучшей производительности игры, поэтому все проверено и работает нормально.

Рекомендации

AMD — катализатор на Arch Wiki
https://wiki.archlinux.org/index.php/AMD_Catalyst

AMD – драйверы с открытым исходным кодом – Arch Wiki
https://wiki.archlinux.org/index.php/ATI

Гибридная видеокарта – Arch wiki
https://wiki.archlinux.org/index.php/hybrid_graphics

Графическая карта Intel – Arch Wiki
https://wiki.archlinux.org/index.php/Intel_graphics

Статьи по данной тематике: