Je suis conscient de certaines des autres discussions sur ce problème, mais j'ai essayé les options trouvées dans celles sans succès:
Sudo su
cat /sys/kernel/debug/vgaswitcheroo/switch
donne
cat: /sys/kernel/debug/vgaswitcheroo/switch: No such file or directory
Cela pourrait-il être dû au fait que mon xorg.conf
configure uniquement le périphérique intel?
Le /sys/kernel/debug
semble être monté et je n'ai aucune option de démarrage bizarre:
cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.11.0-15-generic.efi.signed root=UUID=8a15962e-
ad4d-4eb0-96af-37d167313e92 ro quiet splash vt.handoff=7
Pour modeset j'ai:
cat /sys/module/i915/parameters/modeset
-1
Pas tout à fait sûr si c'est un problème ou pas? Mais j'ai aussi essayé de démarrer avec les options i915.modeset=1 radeon.modeset=1
et vérifié que le jeu de modes est bien à 1. J'ai aussi vérifié que mount | grep /sys/kernel/debug
a montré
none on /sys/kernel/debug type debugfs (rw)
donc ceci est monté correctement.
lshw -C display
montre:
*-display
description: VGA compatible controller
product: Haswell-ULT Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:60 memory:f0000000-f03fffff memory:e0000000-efffffff ioport:5000(size=64)
*-display
description: Display controller
product: Sun XT [Radeon HD 8670A/8670M/8690M]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:06:00.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list rom
configuration: driver=radeon latency=0
resources: irq:65 memory:d0000000-dfffffff memory:f0400000-f043ffff ioport:3000(size=256) memory:f0440000-f045ffff
Mon noyau semble être compilé avec les options appropriées:
grep -i switcheroo /boot/config-*
/boot/config-3.11.0-12-generic:CONFIG_VGA_SWITCHEROO=y
/boot/config-3.11.0-15-generic:CONFIG_VGA_SWITCHEROO=y
Alors pourquoi vgaswitcheroo
serait-il manquant?
J'ai trouvé this
There are two versions of hybrd graphics: MUXed and MUX-less. MUXed have a
display MUX to switch the displays between the discrete and integrated cards.
MUXed systems can be switched using vgaswitcheroo. MUX-less do not have a
display MUX and the displays are only connected to the integrated card. On
MUX-less systems, the discrete card is solely for rendering, not display. X
Server 1.14 is required to support rendering and display from different cards.
Most new laptops (2011+) are MUX-less.
Donc, je pense qu'il est très probable que mon système (étant un ordinateur portable très récent) soit MUX-less
(c'est-à-dire que seule la carte Intel est actuellement connectée à l'écran), et bien que je puisse "passer" par le AMD Catalyst Control Centre
(devrais-je être assez courageux/idiot pour installer fglrx
) cela revient en réalité à: "Haute performance" -> sous-traiter les calculs graphiques durs à dGPU, puis les rediriger vers le moniteur pour les afficher, "Basse performance/bonne batterie "-> calcule sur iGPU, puis envoie directement à l’affichage. Je n'ai pas non plus la possibilité de changer de GPU dans le BIOS, ce qui suggère également MUX-less
.
Ainsi, je ne pourrai probablement jamais utiliser VGA switcheroo.
Une autre considération est que le pilote radeon
ne supporte pas encore officiellement ma carte (nom de code 8670M Mars XT série du système solaire, à ne pas confondre avec OLAND). Ainsi, lorsque je démarre avec des pilotes open source, je reçois des messages tels que No screens found
pour le radeon. Étant donné que switcheroo
a besoin de radeon et d’intelligence, cela pourrait échouer car le pilote de radeon ne prend pas en charge ma carte.
Si cela est vrai, cela pose la question de savoir comment basculer entre les cartes ATI/Intel (sans fglrx
) dans un système MUX-less
.
Selon this
SYSTÈMES MUXLESS
La première chose à faire est d’allumer votre GPU si ce n’est pas déjà fait:
# echo ON > /sys/kernel/debug/vgaswitcheroo/switch
Vérifiez que cela a fonctionné en relançant cette commande:
# cat /sys/kernel/debug/vgaswitcheroo/switch
Maintenant, nous devons connaître les identifiants que xrandr a attribués à vos cartes. Faites-le à nouveau en tant qu'utilisateur régulier, pas en tant que root:
$ xrandr --listproviders
Providers: number : 3
Provider 0: id: 108 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 2 name:Intel
Provider 1: id: 69 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 0 associated providers: 2 name:radeon
Provider 2: id: 69 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 0 associated providers: 2 name:radeon
Dans mon cas, 3 cartes sont listées. Notez que les deux fournissent 1 et 2 ont le même identifiant. Dans ce cas, ma carte discrète a l’ID 69 et ma carte intégrée a l’ID 108.
La dernière chose dont nous avons besoin pour dire à X d’utiliser votre GPU discret pour le rendu:
$ xrandr --setprovideroffloadsink 69 108
Où le premier numéro est votre carte discrète et le second est votre carte intégrée. Pour vérifier cela a fonctionné:
$ DRI_PRIME=1 glxinfo | grep renderer
OpenGL renderer string: Gallium 0.4 on AMD TURKS
Vous devriez obtenir Gallium 0.4 comme moteur de rendu. A partir de maintenant, toutes vos applications 3D seront rendues sur votre carte ATI, inutile de redémarrer X.
Travaillé dans mon Lenovo U400 avec Kubuntu 13.10.