web-dev-qa-db-fra.com

X.org peut-il charger deux pilotes différents? (Configuration à trois têtes avec cartes Intel et NVidia)

Nous voulons configurer 3 écrans avec un adaptateur graphique Intel intégré et une carte nvidia.

Les deux cartes sont reconnues dans lspci

 01: 00.0 Contrôleur compatible VGA: NVIDIA Corporation GT218 [GeForce 210] (rév. A2) 
 00: 02.0 Contrôleur d’écran: Contrôleur graphique intégré de la famille de processeurs Core de deuxième génération de Intel Corporation 

Et fonctionne fondamentalement: si je bascule vers la console, je vois la sortie sur la carte Intel, X ne fonctionne que sur la carte Nvidia.

Mais quand je tape xrandr | grep conn je n’obtiens qu’un seul port connecté:

 DVI-I-0 déconnecté (axe y normal inversé gauche à droite) 
 VGA-0 déconnecté (axe y normal inversé à droite gauche) 
 DVI-I-1 connecté en 1920x1200 + 0 + 0 (axe y normal inversé gauche à droite) 518mm x 324mm 
 HDMI-0 déconnecté (axe y normal inversé à droite gauche) 

Je suis sur Ubuntu 12.10 (et XFCE) et ai installé le pilote propriétaire nvidia.

Je supposais que X avait peut-être un problème pour détecter automatiquement les deux cartes, alors je pensais que le xorg.conf suivant pourrait aider:

 Section "ServerLayout" 
 Identifiant "Layout0" 
 Écran 0 "Screen0" 
 Écran 1 "Screen1" 
 InputDevice "Keyboard0" "CoreKeyboard" 
 InputDevice "Mouse0" "CorePointer" 
 EndSection 
 
 Section "Fichiers" 
 EndSection 
 
 Section " InputDevice "
 # Généré à partir de la valeur par défaut 
 Identifiant" Souris0 "
 Pilote" souris "
 Option" Protocole "" auto "
 Option" Périphérique ". "/dev/psaux"[____.] Option" Emulate3Buttons "" non "
 Option" ZAxisMapping "" 4 5 "
 EndSection 
 
 Section" InputDevice "
 # généré par défaut 
 Identificateur" Keyboard0 "
 Pilote" kbd "
 EndSection 
 
 Section" Moniteur "
 Identifiant "Moniteur0" 
 Nom du vendeur "Inconnu" 
 Nom du modèle "Inconnu" 
 HorizSync 28.0 - 33.0 [._ ___.] VertRefresh 43.0 - 72.0 
 Option "DPMS" 
 EndSection 
 
 Section "Appareil" 
 Identificateur "Appareil0" 
. Pilote "nvidia" 
 VendorName "NVIDIA Corporation" 
 Nom du conseil "GeForce 210" 
 EndSection 
 
 Section "Écran" 
 Identificateur "Screen0" 
 Device "Device0" 
 Moniteur "Monitor0" 
 Par défaut Profondeur 24 
 Sous-section "Affichage" 
 Profondeur 24 
 EndSubSection 
 EndSection 
 
 
 Section "Monitor" 
 Identificateur "Monitor1" 
 VendorName "Unknown" 
 ModelName " Inconnu "
 HorizSync 28.0 - 33.0 
 VertRefresh 43.0 - 72.0 
 Option" DPMS "
 EndSection 
 
 Section" Appareil "
 Identifiant "Device1" 
 Pilote "intel" 
 Nom du vendeur "Intel" 
 BoardName "Internal Intel Graphics" 
 EndSection 
 
 Section "Screen" 
 Identificateur "Screen1" 
 Périphérique "Device1" 
 Moniteur "Monitor1" 
 DefaultDepth 24 
 Sous-section "Affichage" 
 Profondeur 24 
 EndSubSection 
 EndSection 

Mais cela ne fonctionne toujours pas.

  • Est-il généralement possible d’utiliser deux pilotes différents sous X?
  • Est-il nécessaire de créer un xorg.conf manuellement alors? (parce que Ubuntu 12.10 fonctionne normalement sans le xorg.conf)
  • Y at-il des erreurs dans mon xorg.conf?
5
Alex

Oui, X peut utiliser plusieurs pilotes. Le vôtre est une configuration très similaire à celle que j'ai. J'ai un NVIDIA 9800 GT avec deux moniteurs connectés et une carte Intel de deuxième génération avec un seul moniteur.

Je ne vois aucun problème avec votre xorg.conf. Je soupçonne que vous devrez créer un xorg.conf si seulement vous devez indiquer à X d’utiliser les pilotes nvidia et intel. Mon xorg.conf ressemble beaucoup au tien; J'ai trois sections moniteur et écran car la carte nvidia en a deux, mais je suis à peu près sûr que X ignore ces sections.

Tout d'abord, vous voulez vous assurer que xinerama est désactivé dans xorg.conf (peut-être pas nécessaire).

xorg.conf:

Section "ServerFlags"
    Option  "xinerama"  "off"
EndSection

Lorsque vous faites un xrandr --listproviders, vous devriez voir les deux cartes.

cody@IRIS> xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x290 cap: 0x1, Source Output crtcs: 2 outputs: 5 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x48 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 6 associated providers: 1 name:Intel

Si vous ne voyez pas les deux cartes, il vous manque probablement un pilote. (Mais OP dit que la console utilise l'un et X utilise l'autre, alors ils fonctionnent probablement tous les deux)

Vous devriez pouvoir utiliser xrandr --setprovideroutputsource pour ajouter les ports Intel à la liste indiquée par votre xrandr | grep conn. Dans mon cas, j'utilise les noms donnés par --listproviders:

xrandr --setprovideroutputsource Intel NVIDIA-0

Si cela n’ajoute pas les ports Intel, il est peut-être déjà connecté d’une manière que vous ne pouvez pas le voir. Déconnectez-le avec:

xrandr --setprovideroutputsource Intel 0x0

Puis essayez de vous connecter à nouveau:

xrandr --setprovideroutputsource Intel NVIDIA-0

Tous les ports de sortie devraient être affichés maintenant. Et vous devriez pouvoir ajouter un affichage avec les paramètres d'affichage de gnome ou avec xrandr.

Ainsi, lorsque mon écran intel a enfin fonctionné, les écrans nvidia ont décidé qu'ils devaient effectuer un panoramique lorsque j'essayais de déplacer la souris vers le troisième écran. Il afficherait maintenant le contenu du troisième moniteur à la fois sur le troisième et le deuxième moniteur. Et le contenu original de la seconde a glissé sur le premier moniteur avec le contenu de la première hors écran. Cela reviendrait à la normale si j'essayais de déplacer le curseur sur le premier moniteur à nouveau.

J'ai finalement résolu ça avec un autre appel xrandr:

xrandr --output DVI-I-2 --panning 3840x1200+1680+0/1920x1200+1680+0/0/0/0/0

Cet appel nécessite une connaissance de la géométrie de l'écran physique et de la présentation logique. J'ai un moniteur 1680x1050, un 1920x1200 et un 1920x1080. Ils sont dans cet ordre de gauche à droite. Le plus à droite est connecté à la carte intel.

Cet appel définit la région panoramique sur le moniteur central. --output DVI-I-2 se trouve être le port connecté à mon moniteur central.

Les quatre premiers chiffres définissent la zone de panoramique sur le total des écrans central et droit. 3840x1200 en largeur et hauteur et + 1680 + 0 pour décaler la région à commencer en haut à gauche sur le moniteur central. (Apparemment, [0,0] est en haut à gauche du moniteur gauche)

Les 4 prochains chiffres sont la région de suivi du curseur. Je règle ceci pour ne suivre que le curseur sur l'écran central. Ainsi, lorsque le curseur quitte cet écran, il n'essaie pas de décaler l'image pour suivre le curseur.

Les 4 derniers chiffres définissent une bordure autour de la région panoramique. J'utilise simplement les valeurs par défaut ici.

Versions de logiciels connexes que j'utilisais:

xorg-server-1.17.4
gnome-3.18.0
xrandr-1.4.3
7
Cody Creager