Использование гибридной графической карты 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):
метод – Чтобы запустить второй X-сервер с помощью fglrx, просто переместите
xorg.conf
вернулся на свое место(
/etc/X11/xorg.conf
) перед началом второго сеанса X.
mv /etc/X11/xorg.xonf.ati /etc/X11/xorg.conf
Этот метод даже позволяет переключаться между запущенными X-сессиями. Когда вы закончите использовать fglrx, переместите
xorg.conf
снова.
- метод – использование 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