Gebruik van hybride grafische kaart INTEL-AMD op Arch Linux
In deze tutorial laat ik je zien hoe je twee grafische kaarten – Intel en Amd – op de meeste laptops configureert met behulp van eigen en open source stuurprogramma's, en hoe je tussen deze kunt schakelen.
Overzicht
De meeste huidige laptops bevatten twee grafische kaarten met verschillende mogelijkheden en energieverbruik, ook wel bekend als hybride grafische kaart.
De eerste – IDG – geïntegreerde afbeelding – maakt energiebesparing mogelijk om onze batterij te sparen en low-end 3D-weergave. Vaak wordt het gebruikt voor dagelijks werk.
De tweede – DDG – heeft een hoog grafisch stroomverbruik met hoge 3D-renderingprestaties, meestal geschikt voor het spelen van games, 3D-graphics, rendering enz.
Dit model geeft de gebruiker de mogelijkheid om de grafische kaart te kiezen die hij nodig heeft. ….doplnit
In dit artikel laat ik u zien hoe u met succes de eigen en open-source stuurprogramma's van INTEL/ATI installeert.
Open source-stuurprogramma's
De beste en gemakkelijkste manier is om open-source stuurprogramma's te gebruiken. Er is geen enkele uitvinding voor nodig. Alleen als je bepaalde apparaatgegevens wilt opgeven.
Dus installeer ati- en intel-stuurprogramma's en je bent klaar
pacman -Sy xf86-video-ati xf86-video-intelZonder enig xorg.conf-bestand start het systeem standaard met het Intel-stuurprogramma. Om de radeon-kaart te gebruiken, heeft u twee mogelijkheden:
1. Conf-bestand gebruiken
Als u handmatige configuratie wilt, maakt u een bestand aan
/etc/X11/xorg.conf.d/20-radeon.conf
en voeg het volgende toe:
Section "Device"
Identifier "Radeon"
Driver "radeon"
EndSection
Bij dit bestand kun je uiteraard nog meer opties opgeven.
2. PRIME gebruiken
PRIME is een van de methoden om te schakelen tussen IDG en DDG. Voor mij werkt het prima, dus dit is mijn keuze.
Eerst moeten we onze grafische kaart vinden:
xrandr --listprovidersje kunt twee grafische kaarten zien
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:radeonHet bevel
xrandr --setprovideroffloadsink provider sinkkan worden gebruikt om een render-offload-provider zijn uitvoer naar de sink-provider te laten sturen (de provider waarop een beeldscherm is aangesloten). De provider- en sink-ID's kunnen numeriek zijn (0x7d, 0x56) of een hoofdlettergevoelige naam (Intel, radeon).
xrandr --setprovideroutputsource radeon Intel
orxrandr --setprovideroutputsource 0x7d 0x56Nu kunt u uw discrete kaart kiezen voor de toepassingen die deze het meest nodig hebben (3D-modelbouwers, games …) door de
DRI_PRIME=1omgevingsvariabele:
DRI_PRIME=1 your_progamBijvoorbeeld:
DRI_PRIME=1 glxinfo | grep "OpenGL renderer"geeft de uitvoer:
OpenGL renderer string: Gallium 0.4 on AMD TURKS
vergelijken met
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) Haswell MobileIk veronderstel dat het triviaal is om xrandr –setprovideroutputsource radeon Intel
te draaien tijdens het starten van DE – KDE, GNOME, XFCE4 ….
Eigen chauffeurs
Deze methode is moeilijker en vereist meer gebruikersuitvindingen. De katalysatordrivers bevinden zich vanwege hun trage ontwikkeling niet in de officiële opslagplaats, we moeten deze vanuit AUR bouwen.
De beste manier is om het catalysator-totaalpakket te installeren, dat het stuurprogramma, de kernelhulpprogramma's en de 32-bits kernelhulpprogramma's bevat.
yaourt -S catalyst-totalHet tweede probleem dat we moeten oplossen – katalysatorstuurprogramma's hebben xorg nodig tot versie 1.17, dus we moeten de xorg-server downgraden.
Het gebruik van de repository van Vi0L0 is eenvoudig. Voeg de repository boven alle andere repository's toe
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
Upgrade het systeem, wees niet bang om alle conflictpakketten te verwijderen
pacman -SyuuHierna is het noodzakelijk om Xorg te configureren – maak het bestand /etc/X11/xorg.conf aan. Hiervoor kunnen we aticonfig gebruiken:
aticonfig --initialWe kunnen het configuratiebestand controleren en corrigeren. Bijvoorbeeld:
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.
EndSectionOm te schakelen tussen grafische kaarten kunnen we PowerXpress-ondersteuning.
gebruiken PowerXpress-technologie maakt het mogelijk om notebooks met dubbele grafische mogelijkheden over te schakelen van geïntegreerde grafische kaart (IGP) naar discrete grafische kaart, om de levensduur van de batterij te verlengen of om betere 3D-weergavemogelijkheden te bereiken.
De eenvoudigste manier is om te gebruiken
pxp_switch_catalystschakelscript dat enkele aanvullende nuttige bewerkingen zal uitvoeren:
-
Schakelen
xorg.conf– de naam wordt gewijzigd
xorg.confnaar binnen
xorg.conf.cat(als er fglrx in zit) of
xorg.conf.oth(als er informatie in zit) en dan zal er een symbolische link naar worden gemaakt
xorg.conf, afhankelijk van wat je hebt gekozen.
Rennen
aticonfig --px-XgpuRennen
switchlibGLToevoegen/verwijderen
fglrxin/van
/etc/modules-load.d/catalyst.conf
Gebruik:
pxp_switch_catalyst amd
pxp_switch_catalyst intelen start de X-server opnieuw op
Een andere mogelijkheid is om één X-server te laten draaien met IDG (Intel) en meer verbruikbare programma's te laten draaien op de tweede X-server. Start uw DE op met ATI-configuratie en hernoem vervolgens xorg.conf
mv /etc/X11/xorg.xonf /etc/X11/xorg.conf.atien start de X-server opnieuw op. Tt gebruikt standaard het Intel-stuurprogramma in plaats van fglrx. Om de tweede X-server met fglrx (ATI)-stuurprogramma te starten:
methode – Om de tweede X-server te starten met behulp van fglrx, verplaatst u eenvoudigweg
xorg.confterug naar de juiste plaats (
/etc/X11/xorg.conf) voordat u de tweede X-sessie start.
mv /etc/X11/xorg.xonf.ati /etc/X11/xorg.confMet deze methode kunt u zelfs schakelen tussen actieve X-sessies. Wanneer u klaar bent met het gebruik van fglrx, verplaatst u
xorg.confopnieuw.
- methode – gebruik xrun xcript
deze methode is bijna hetzelfde als de eerste, maar in plaats van xorg.conf terug naar de juiste plaats te kopiëren, is het mogelijk om een script uit te voeren en daarin de locatie van het xorg.conf-bestand op te geven
– maak een uitvoerbaar script – bijvoorbeeld 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 5Maak het uitvoerbaar
chmod +x /usr/bin/xrunVoor de tweede X-sessie gebruik ik een apart configuratiebestand –xorg1.conf omdat ik problemen had met toetsenbord en muis op het tweede scherm:
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"
EndSectionHet gebruik hiervan is vrij eenvoudig: als je een programma wilt uitvoeren met een krachtige grafische kaart (fglrx), voer het dan gewoon op het tweede scherm uit met xrun
xrun glxgearsHybride grafische kaart INTEL-AMD gebruiken op Arch Linux – xrun
Het enige nadeel van deze twee methoden is dat er geen 3D-versnelling is met behulp van het Intel-stuurprogramma. 2D-versnelling is echter volledig functioneel.
Conclusie
In deze tutorial heb ik je mogelijke manieren laten zien hoe je een hybride grafische kaart in je laptop kunt gebruiken. Ik heb beide methoden gebruikt. Tegenwoordig gebruik ik eigen stuurprogramma's vanwege betere spelprestaties, dus alles is getest en werkt prima.
Referenties
AMD – katalysator op Arch Wiki
https://wiki.archlinux.org/index.php/AMD_Catalyst
AMD – open source-stuurprogramma's – Arch Wiki
https://wiki.archlinux.org/index.php/ATI
Hybride grafische kaart – Arch wiki
https://wiki.archlinux.org/index.php/hybrid_graphics
Grafische kaart van Intel – Arch Wiki
https://wiki.archlinux.org/index.php/Intel_graphics
