[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor:Einen Editor benutzen] [:sudo: Root-Rechte] [:chmod:Zugriffsrechte einer Datei ändern] }}} [[Inhaltsverzeichnis()]] Dave Airlies "PRIME" bezeichnet die in [:RandR:] 1.4, Kernel und X-Stack eingeflossenen Erweiterungen, die es auf Systemen mit mehreren [wikipedia:Grafikprozessor: GPU]s erlauben auszuwählen, welche GPU die Grafik berechnet und welche GPU die Grafik darstellt. Hierbei schreibt bei Bedarf (grafikintensive Anwendungen auf der leistungsstärkeren GPU) die berechnende GPU in den Bildspeicher der darstellenden GPU. Somit lässt sich bei Notebooks mit Hybridgrafikkarten auch eine GPU nutzen, die nicht direkt mit einem Bildschirm "verdrahtet" ist. Auf Desktopsystemen mit einer in die CPU integrierten GPU und einer zusätzlichen Grafikkarte lassen sich beide GPUs und deren Treiber parallel an einem XServer nutzen. Aufgrund lizenzrechtlicher Probleme mit der Kernelschnittstelle ließ sich PRIME anfänglich nur mit den freien Grafiktreibern ([:Grafikkarten/Nvidia/nouveau:nouveau], [:Grafikkarten/AMD/radeon:radeon], [:Grafikkarten/Intel:Intel]) nutzen, bis Nvidia eine eigene Schnittstelle in den Kernel implementierte: [#Proprietaerer-Treiber-nvidia-prime nvidia-prime]. Diese wird genutzt, um ein Zusammenspiel des proprietären Nvidia-Treibers mit dem Intel-Treiber zu ermöglichen. = Verwendung der freien Grafiktreiber = Anwendungen auf der Nvidia-/AMD-GPU können durch das Präfix `DRI_PRIME=1` gestartet werden. So lautet z.B. der Befehl [1] für das Spiel [:Spiele/OpenArena:OpenArena]: {{{#!vorlage Befehl DRI_PRIME=1 openarena }}} Als weiteres Beispiel glxinfo: {{{#!vorlage Befehl DRI_PRIME=1 glxinfo | grep OpenGL }}} was den freien Treiber zeigen sollte. Beispielausgabe (hier [:Grafikkarten/Nvidia/nouveau:nouveau] auf der Nvidia-GPU NVC1): {{{ OpenGL vendor string: nouveau OpenGL renderer string: Gallium 0.4 on NVC1 OpenGL version string: 3.0 Mesa 9.0 OpenGL shading language version string: 1.30 }}} Zum Vergleich den [:Grafikkarten/Intel:Intel]-Treiber auf der integrierten GPU (hier Ironlake M): {{{#!vorlage Befehl glxinfo | grep OpenGL }}} {{{ OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile OpenGL version string: 2.1 Mesa 9.0 OpenGL shading language version string: 1.20 }}} == Voraussetzungen == ## Evtl. noch einen Satz zur Situation Ruhezustand (STR/STD) und Compositing ergänzen. * Sollte eine 3D-Anwendung mit [:Grafikkarten/Nvidia/nouveau:nouveau] oder [:Grafikkarten/AMD/radeon:radeon] als Provider nur ein schwarzes oder gestörtes Fenster anzeigen, kann es helfen, das Fenster zu vergrößern oder zu verkleinern oder die Anwendung zuerst auf der Intel GPU zu starten, um eine andere Auflösung oder Vollbild zu wählen und diese zu speichern. = Proprietärer Treiber nvidia-prime = [[Bild(./nvidia-prime-profiles-1.jpg, 500, align=right, title="Ubuntu 12.04.4: zwischen Stromspar- und voller Grafikleistung wählen, danach An- und Abmelden")]] Zur Zeit ist es nicht wie mit den freien Treibern möglich, den Desktop von der stromsparenden integrierten GPU berechnen zu lassen und nur bei Bedarf anwendungsgesteuert die leistungsstärkere dedizierten GPU zu starten. Allerdings kann man den gesamten Desktop von der dedizierten GPU berechnen lassen, die dann die integrierte zur Darstellung nutzt. Hierbei hat man die bestmögliche Grafikleistung, allerdings sinkt die Akkulaufzeit dementsprechend. Als Einschränkung ist ein [wikipedia:Tearing:] zu erwähnen, was z.B. beim Scrollen, Verschieben von Fenstern und schnellen Ego-Shootern auffallen kann. Es ist sowohl die Nutzung von [:LightDM:] als auch [:GDM:] möglich. Voreingestellt ist bei Ubuntu (Unity) lediglich LightDM. Architekturbedingt muss beim Einsatz von KDM/GDM im Anmeldebildschirm der Neustart vom X-Server getätigt werden, damit die Umschaltfunktion greift. == Installation == Das Paket '''nvidia-prime''' wird auf [wikipedia:Nvidia_Optimus:]-Laptops automatisch installiert, wenn man im [:restricted-manager:restricted-driver-manager] einen Nvidia-Treiber auswählt und installiert. === Neustart === Nach einem Systemneustart greift die Änderung. Der gesamte Desktop wird dann von der Nvidia-GPU gerendert, was der Befehl {{{#!vorlage Befehl glxinfo | grep renderer }}} zeigt. == Umschalten zwischen den Grafikchips == Das Paket '''nvidia-prime''' bringt einen Umschaltbefehl mit, der auch über einen Eintrag in Nvidia-Settings zu finden ist (siehe Abbildung oben) oder im Terminal Verwendung finden kann. Nach dem Wechsel ist es erforderlich, sich neu anzumelden. Der einfachste Befehl ist: {{{#!vorlage Befehl prime-select query }}} Dieser gibt aus, welche Grafiklösung zur Zeit aktiv ist. Das Umschalten funktioniert ähnlich: {{{#!vorlage Befehl sudo prime-select intel }}} beziehungsweise {{{#!vorlage Befehl sudo prime-select nvidia }}} Damit lässt sich das Umschalten inklusive Abmelden in ein Script verpacken, welches einfach vom Desktop per Doppelklick ausgeführt werden kann. Zuerst ist etwas Vorarbeit nötig. Um kein Passwort eingeben zu müssen, legt man eine Konfigurationsdatei '''/etc/sudoers.d/50-prime-select''' mit folgendem Inhalt an: {{{ %sudo ALL= NOPASSWD: /usr/bin/prime-select ## Leerzeile nicht vergessen! }}} Damit können Benutzer in der Gruppe `sudo` zwischen den Grafikchips wechseln, ohne ein Passwort eingeben zu müssen. Es ist natürlich möglich, auch eine andere Gruppe dafür zu erstellen, zum Beispiel um Kindern diese Möglichkeit zu bieten, ohne gleich komplette Administratorrechte zu verteilen. Mehr Hintergrundinformationen gibt es im Artikel zu [:sudo:]. Nun kann man sich ein Skript anlegen, beispielsweise '''/usr/local/bin/prime-gpu-switcher''', welches die GPU umschaltet und anhand der Desktopsession das passende Abmeldeverfahren aufruft: {{{#!code bash #!/bin/bash gpu=$(prime-select query) alternative=nvidia if [ $gpu == $alternative ]; then alternative=intel fi titel="Prime GPU Switcher" info="Aktuell aktive GPU: $gpu" ask="Auf $alternative umschalten anschließend abmelden?" f_logout() { # Anhand der DESKTOP_SESSION das System und damit Abmeldeverfahren ermitteln. # Wenn das nicht klappt, dann einfach selbst prüfen was korrekt wäre und dies eintragen. case "$DESKTOP_SESSION" in # Lubuntu mag es CamelCase und bietet keinen direkten Logout (immer mit prompt) Lubuntu) lxsession-logout ;; mate) mate-session-save --logout # mate-session-save --logout-dialog ;; # diese Systeme haben das selbe Abmeldeverfahren, wobei gilt: ubuntu=unity gnome|ubuntu) gnome-session-quit --logout --no-prompt ;; xubuntu) xfce4-session-logout --logout ;; # KDE/Kubuntu ist mal wieder anders als alle anderen... /usr/share/xsessions/plasma) qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 0 0 ;; *) msg="Unbekannte Sessionart $DESKTOP_SESSION\n\nBitte Abmeldung selbst vornehmen!" zenity --title="$titel" --warning --text "$msg" ;; esac } if zenity --title="$titel" --question --text "$info \n\n$ask"; then sudo prime-select $alternative f_logout fi }}} Damit das Skript funktioniert müssen diese Pakete installiert sein: {{{#!vorlage Paketinstallation zenity qt5-default, für KDE qdbus-qt5, für KDE }}} Außerdem muss das Skript noch ausführbar gemacht werden: {{{#!vorlage Befehl sudo chmod +x /usr/local/bin/prime-gpu-switcher }}} Für das Skript kann dann nach Gusto eine Verknüpfungen / Starter verwendet werden. Mehr Details finden sich im Artikel [:.desktop-Dateien:]. = Links = * [ikhaya:2012/11/02/prime-grundlage-fuer-hybridgrafik-in-12-10-mit-freien-treibern-gelegt:Ikhaya, 11/2012]: PRIME - Grundlage für Hybridgrafik in 12.10 mit freien Treibern gelegt * [https://us.download.nvidia.com/XFree86/Linux-x86/325.15/README/randr14.html Systemvoraussetzungen] {en} - Nvidia * [https://www.phoronix.com/scan.php?page=news_item&px=MTI0NDY NVIDIA Publishes PRIME Helper Patches] {en} - Phoronix, 12/2013 * [:Hybridgrafikkarten:] {Übersicht} Übersichtsseite ## * [:Archiv/Hybrid-Grafikkarten/Bumblebee:] #tag: Grafikkarten, Hardware, System, Übersicht, Energieverwaltung