web-dev-qa-db-fra.com

Pas de vga / vgaswitcheroo dans / sys / kernel / debug (Ubuntu 13.10)

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?

3
fpghost

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.

4
fpghost

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.

1
Pablo R