web-dev-qa-db-fra.com

"--scale 2x2" dans xrandr empêche le moniteur de tout afficher

J'ai un moniteur principal externe 4k et j'essaie de connecter un moniteur externe 1680x1050 à sa gauche.

J'ai essayé d'utiliser:

 xrandr --output HDMI-0 --scale 2x2 --pos 0x0 --fb 7200x2160 --output DP-4 --pos 3360x0

ce qui semble fonctionner, et lorsque je regarde ce que l'ordinateur pense se passe dans nvidia-settings, il affiche correctement un moniteur 3200x2160 à gauche de mon moniteur 4k.

Cependant, sur mon moniteur externe, le noir apparaît avec une ligne clignotante en haut.

La seule façon de corriger cela est de réinitialiser la réduction à 1x1, puis l'image revient (tout en conservant la taille du serveur X. Cela signifie que je dois simplement faire défiler les zones mortes pour accéder à mes écrans).

Donc, je pense que le problème est spécifiquement lié à la mise à l'échelle 2x2 dans xrandr. Je ne sais pas quoi faire?

L'ordinateur fonctionne sous 14.04 et contient un pilote nvidia GTX960 avec le pilote recommandé (352.63).

Voici ma sortie xrandr:

  Screen 0: minimum 8 x 8, current 7200 x 2160, maximum 16384 x 16384
  DVI-I-0 disconnected (normal left inverted right x axis y axis)
  DVI-I-1 disconnected (normal left inverted right x axis y axis)
  DP-0 disconnected (normal left inverted right x axis y axis)
  DP-1 disconnected (normal left inverted right x axis y axis)
  DP-2 disconnected (normal left inverted right x axis y axis)
  DP-3 disconnected (normal left inverted right x axis y axis)
  HDMI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
     1680x1050      59.9*+   60.0  
     1280x1024      75.0     60.0  
     1280x960       60.0  
     1152x864       75.0  
     1024x768       75.0     70.1     60.0  
     800x600        75.0     72.2     60.3     56.2  
     640x480        75.0     72.8     59.9  
  DP-4 connected primary 3840x2160+3360+0 (normal left inverted right x axis y axis) 527mm x 296mm
     3840x2160      60.0*+   30.0  
     2560x1440      60.0  
     2048x1280      60.0  
     1920x1200      59.9  
     1920x1080      60.0     60.0     59.9     50.0     24.0     60.0     50.0  
     1600x1200      60.0  
     1600x900       60.0  
     1280x1024      75.0     60.0  
     1280x720       60.0     59.9     50.0  
     1152x864       75.0  
     1024x768       75.0     60.0  
     800x600        75.0     60.3  
     720x576        50.0     50.1  
     720x480        59.9     60.1  
     640x480        75.0     59.9     59.9  
10
m4p85r

Je voulais juste ajouter que c’est quelque chose avec lequel je me bats depuis longtemps, et à chaque fois que j’abandonnais - jusqu’à ce que je décide de le résoudre une fois pour toutes. La solution ci-dessous fonctionne pour moi, j'espère qu'elle le fera aussi pour vous.

tl; dr: Configurez ForceFullCompositionPipeline=On

Contexte

Une partie de ceci est également dans l'espoir de fournir plus de mots-clés au cas où quelqu'un avec un problème similaire finirait par chercher la solution.

Ma configuration est:

  • ThinkPad P50 avec écran 4K intégré à 3840 × 2160 (primaire)
  • Un moniteur externe comme écran secondaire - Dell U2412M - 1920 × 1200

J'utilise Ubuntu Gnome 16.04 LTS.

Lorsque je connecte le moniteur via un câble HDMI + un convertisseur HDMI-à-DVI (car le moniteur ne dispose pas d'entrée HDMI), tout était trop volumineux. Divers articles en ligne ont suggéré d'utiliser xrandr pour configurer --scale 2x2 sur cet affichage, ce qui l'a rendu presque complètement noir, avec seulement une mince ligne visible en haut.

Je suis tombé sur cette question et alors que la solution de mise à l'échelle 2x2.001 permettait au moniteur d'afficher des éléments, elle ajoutait également un pixel supplémentaire sous l'écran X, ce qui entraînait un léger défilement haut/bas lorsque les curseurs atteignaient le haut/bas de l'écran. l'écran.

Après beaucoup de recherches sur Google, dont beaucoup ont donné lieu à des problèmes et à aucune solution, je suis tombé sur ceci: https://devtalk.nvidia.com/default/topic/891207/-355-11-358-09-viewportin -sur-2nd-moniteur-résultats-en-brouillé-affichage-pour-valeurs-sur-3211x18

Donc, pour le tester, j'ai configuré cela en utilisant les commandes suivantes - supposons que xrandr n'ait pas encore été configuré avec la mise à l'échelle.

$ nvidia-settings -q CurrentMetaMode

  Attribute 'CurrentMetaMode' (lilicorp:1.0): id=50, switchable=no, source=RandR :: DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0}, DPY-1: nvidia-auto-select @1920x1200 +3840+0 {ViewPortIn=1920x1200, ViewPortOut=1920x1200+0+0}

Cela affiche la valeur CurrentMetaMode et c’est là que j’ai ajouté l’option ForceFullCompositionPipeline=On aux deux écrans. Notez que DPY-4 est mon écran d'ordinateur portable intégré, alors que DPY-1 est le moniteur externe.

La chaîne à configurer est celle qui suit :: dans le résultat de cette commande.

$ nvidia-settings --assign CurrentMetaMode="DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0, ForceFullCompositionPipeline=On}, DPY-1: nvidia-auto-select @1920x1200 +3840+0 {ViewPortIn=1920x1200, ViewPortOut=1920x1200+0+0, ForceFullCompositionPipeline=On}"

Après cela, j'ai couru:

$ xrandr --output DP-1 --scale=2x2

Enfin, la résolution de l'affichage externe était correcte, sans défilement ni aucun autre problème.

Notez qu'après l'exécution de ces commandes, le CurrentMetaMode est un peu différent de ce qui a été attribué, probablement en raison de la mise à l'échelle appliquée:

$ nvidia-settings -q CurrentMetaMode

  Attribute 'CurrentMetaMode' (lilicorp:1.0): id=50, switchable=no, source=RandR :: DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, DPY-1: nvidia-auto-select @3840x2400 +3840+0 {Transform=(2.000000,0.000000,0.000000,0.000000,2.000000,0.000000,0.000000,0.000000,1.000000), ViewPortIn=3840x2400, ViewPortOut=1920x1200+0+0, ResamplingMethod=Bilinear, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}

J'espère que cela résoudra le problème pour quelqu'un d'autre aussi!

5
Milos Levacic

J'ai eu exactement le même problème. Je l'ai résolu avec --scale 2x2.001. Curieusement, --scale 2x1.999 ou 2x2.0001 ne fonctionnait pas, assurez-vous donc d'essayer plusieurs nombres autour de 2.

4
igogo

Merci Milos pour votre excellente solution, qui a bien fonctionné pour moi!

J'ai un petit ajout. Outre l'utilisation de la ligne de commande, vous pouvez également configurer aisément le ForceFullCompositionPipeline dans l'interface utilisateur de Nvidia-Settings. Pour cela, vous devez aller dans "Configuration du serveur X", cliquez sur "Avancé" et activez simplement l'option "Forcer le pipeline de composition complet". Veuillez consulter https://imgur.com/a/3jE78 pour un exemple.


PS: J'utilise une configuration à trois têtes avec deux moniteurs externes (1920x1080; 1680x1050) et un moniteur interne 3k (3840x2160). Pour que cela fonctionne, j'applique le xrandr-config suivant:

xrandr --output eDP-1-1 --auto --output HDMI-0 --auto --scale 2x2 --above eDP-1-1 --output DP-1 --auto --scale 2x2 --rotate left --right-of eDP-1-1
2
Nicolaj Kirchhof