Wie stelle ich meinen Display-Controller von der integrierten Intel-Grafik auf Radeon um?

Wie stelle ich meinen Display-Controller von der integrierten Intel-Grafik auf Radeon um?

Verteilung:Pop OS 19.10
Laptop:HP Notebook 15-bs185tx

Grafikkarte:

  • AMD Radeon™ 520 Grafik (2 GB DDR3 dediziert)
  • Intel Corporation UHD-Grafik 620

Ich habe fast alle online verfügbaren Lösungen ausprobiert, aber nichts funktioniert. Sowohl VGA als auch Display Controller laufen auf meiner integrierten Intel-Grafik. Ich habe mehrere Befehle verwendet, darunter diesen, lspci -k | grep -EA3 'VGA|3D|Display'um meine aktiven Grafikadapter anzuzeigen. Bitte lassen Sie mich wissen, wenn Sie Fragen zu dem Problem haben.

Danke schön!

Antwort1

TL;DR (aber die Werte 1 0sind auf Ihrem System möglicherweise nicht korrekt):

$ xrandr --setprovideroffloadsink 1 0
$ export DRI_PRIME=1
$ glxinfo | grep "OpenGL renderer string"

Wenn diese Funktion auf Hardwareebene nicht vorhanden ist, ist das nicht möglich, aber es gibt eine Alternative.

Dies wird gezeigt in derVGA Switcheroo-Dokumentation:

vga_switcheroo ist das Linux-Subsystem für hybride Laptop-Grafiken. Es gibt zwei Varianten:

  • gemuxt: Dual-GPUs mit einem Multiplexer-Chip zum Umschalten der Ausgänge zwischen den GPUs.
  • muxless: Zwei GPUs, aber nur eine davon ist mit Ausgängen verbunden. Die andere wird nur zum Auslagern des Renderings verwendet., werden die Ergebnisse über PCIe in den Framebuffer kopiert. Unter Linux wird dies unterstützt mit DRI PRIME.

Hybridgrafiken tauchten erstmals in den späten 2000er-Jahren auf und waren anfangs komplett multiplexiert.Neuere Laptops sind aus Kostengründen auf eine muxless-Architektur umgestiegenEine bemerkenswerte Ausnahme ist das MacBook Pro, das weiterhin einen Mux verwendet.

Ich gehe also davon aus, dass Ihre Hardwaremuxlos, so was:

      ╔═══════════════╗
      ║               ║
      ║    display    ║
      ║               ║
      ╚═══════════════╝
       ╭───╯       X
       │           ┊
┌────────┐       ┌────────┐
│        │       │        │
│  iGPU  │───────│  dGPU  │
│        │       │        │
└────────┘       └────────┘

Es gibt zwar einige gute Dokumentationen (z. B. aufArchlinux), ich konnte keine findenoffizielldefinitive Dokumentation, die für die Verwendung von maßgebend ist DRI_PRIME. Die einzige vielleicht halboffizielle Dokumentation, die ich gefunden habe, war für ... Nvidias Nouveau-Treiber und das WortspielOptimus Prime:

Verwendung von Optimus/Prime

„PRIME GPU Offloading“ und „Reverse PRIME“ ist ein Versuch, muxless-Hybridgrafiken im Linux-Kernel zu unterstützen.

Obwohl der Name vermutlich aus der anfänglichen Nvidia-Unterstützung stammt, ist er natürlich allgemein und funktioniert mit AMD.

Die Abfrage und Änderung von Einstellungen erfolgt über diexrandrBefehl:

--listproviders
Melden Sie Informationen zu den verfügbaren Anbietern.

--setprovideroutputsource provider source
Legen Sie die Quelle als Quelle für die Anzeige von Ausgabebildern für den Anbieter fest. Dies ist nur möglich, wenn die Quelle und der Anbieter über die Funktionen „Quellenausgabe“ bzw. „Senkenausgabe“ verfügen. Wenn die Quelle 0x0 ist, wird der Anbieter von seiner aktuellen Ausgabequelle getrennt.

--setprovideroffloadsink provider sink
Legen Sie den Anbieter als Render-Offload-Gerät für Sink fest.Dies ist nur möglich, wenn Provider und Sink über die Fähigkeiten Source Offload bzw. Sink Offload verfügen.. Wenn Sink 0x0 ist, wird der Provider von seinem aktuellen Render-Offload-Sink getrennt.

Beispielsweise auch bei einem Laptop mit einer Intel iGPU und einer AMD dGPU:

$ xrandr --listproviders
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 0 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 0 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0

Beachten Sie, dass Anbieter 1 outputs: 0: keine Ausgabe möglich ist, unabhängig von den anderen EigenschaftenQuellausgabeUndSenkenausgabekönnte man sagen. Wenn Ihr Systemtutfür die Eigenschaft der dGPU einen Wert ungleich 0 anzeigen outputs:, dann stehen Ihnen möglicherweise weitere Möglichkeiten zur Verfügung (direkte Anzeige, ggf. auch in Verbindung mit Reverse PRIME mittels --setprovideroutputsource), die in dieser Antwort nicht behandelt werden.

Um die Verwendung für (3D-)GPU-Aufgaben vorzubereiten, die auf die dGPU ausgelagert wurden, kann mit dem vorherigen Beispiel Folgendes getan werden:

$ xrandr --setprovideroffloadsink 'AMD Radeon (TM) HD8530M @ pci:0000:04:00.0' Intel

Anstelle von Namen können auch IDs oder noch einfacher Indexe verwendet werden. Die beiden folgenden Befehle würden dasselbe tun. Man muss darauf achten, die Richtungen nicht zu vertauschen, sonst können schlimme Dinge passieren.

$ xrandr --setprovideroffloadsink 0x41 0x68
$ xrandr --setprovideroffloadsink 1 0

Und nun:

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 1 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0

die beiden Anbieter sind jetzt verknüpft und durch Exportieren der speziellen Variable (nach Mesa) DRI_PRIME=1wird die dGPU für das Rendern ausgewählt:

$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: AMD Radeon (TM) HD8530M (OLAND, DRM 3.36.0, 5.6.3-amd64, LLVM 6.0.0)

Um ein GPU-intensives 3D-Programm namens auszuführen myhungrygame, würden Sie wahrscheinlich Folgendes tun (wenn dGPU nach iGPU kommt):

$ xrandr --setprovideroffloadsink 1 0 # X11-wide setting
$ export DRI_PRIME=1
$ ./myhungrygame

Wenn Sie die ersten beiden Dinge erledigen, bevor die Desktop-Umgebung geladen wird, verwenden alle standardmäßig die dGPU zum 3D-Offloading, was bei einem Laptop wahrscheinlich keine gute Idee ist.

verwandte Informationen