Zoeken op website

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-intel

Zonder 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 --listproviders

je 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:radeon

Het bevel

xrandr --setprovideroffloadsink provider sink

kan 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
or
xrandr --setprovideroutputsource 0x7d 0x56

Nu kunt u uw discrete kaart kiezen voor de toepassingen die deze het meest nodig hebben (3D-modelbouwers, games …) door de

DRI_PRIME=1

omgevingsvariabele:

DRI_PRIME=1 your_progam

Bijvoorbeeld:

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 Mobile

Ik 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-total

Het 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 -Syuu

Hierna is het noodzakelijk om Xorg te configureren – maak het bestand /etc/X11/xorg.conf aan. Hiervoor kunnen we aticonfig gebruiken:

aticonfig --initial

We 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.
EndSection

Om 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_catalyst

schakelscript dat enkele aanvullende nuttige bewerkingen zal uitvoeren:

  • Schakelen

    xorg.conf

    – de naam wordt gewijzigd

    xorg.conf

    naar 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-Xgpu
  • Rennen

    switchlibGL
  • Toevoegen/verwijderen

    fglrx

    in/van

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

Gebruik:

pxp_switch_catalyst amd
pxp_switch_catalyst intel

en 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.ati

en 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:

  1. methode – Om de tweede X-server te starten met behulp van fglrx, verplaatst u eenvoudigweg

    xorg.conf

    terug naar de juiste plaats (

    /etc/X11/xorg.conf

    ) voordat u de tweede X-sessie start.

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

    Met deze methode kunt u zelfs schakelen tussen actieve X-sessies. Wanneer u klaar bent met het gebruik van fglrx, verplaatst u

    xorg.conf

    opnieuw.

  2. 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 5

Maak het uitvoerbaar

chmod +x /usr/bin/xrun

Voor 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" 
EndSection

Het 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 glxgears

Hybride 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

Gerelateerde artikelen: