„--Scale 2x2” w xrandr powoduje, że monitor nic nie wyświetla

11

Mam zewnętrzny monitor główny 4k i próbuję podłączyć zewnętrzny monitor 1680x1050 po jego lewej stronie.

Próbowałem użyć:

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

co wydaje się, że powinno działać, a kiedy patrzę na to, co komputer myśli w ustawieniach nvidii, poprawnie wyświetla monitor o rozdzielczości 3200 x 2160 po lewej stronie mojego 4k.

Jednak na moim monitorze zewnętrznym widać tylko czerń z migoczącą linią u góry.

Jedynym sposobem, w jaki mogę to naprawić, jest zresetowanie skalowania z powrotem do 1x1, w którym to momencie obraz powraca (przy zachowaniu rozmiaru serwera X. Oznacza to, że jest tylko martwa przestrzeń, którą muszę przewinąć, aby przejść między moimi monitorami).

Myślę więc, że problem dotyczy w szczególności skalowania 2x2 w xrandr. Nie jestem pewien co robić?

Na komputerze działa 14.04 i jest w nim nvidia GTX960 z zalecanym sterownikiem (352.63)

Oto mój wynik 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  
m4p85r
źródło
Mam ten sam problem. Wygląda na to, że działa w skali 1,71x1,71. Wszystko większe powoduje, że mniejsze wyświetlacze stają się puste
Maciej Woźniak
Niestety nigdy nie udało mi się tego naprawić. Próbowałem uruchomić dwa monitory, jeden ze skalowaniem, a drugi bez. Jeśli próbujesz uruchomić skalowanie 2x, z Cinammon jest to bardzo łatwe. Wierzę, że jest sposób, aby skłonić Unity do zrobienia tego.
m4p85r

Odpowiedzi:

5

Chciałem tylko dodać, że z tym walczyłem od dłuższego czasu i za każdym razem po prostu się poddawałem - dopóki nie zdecydowałem się na to raz na zawsze. Poniższe rozwiązanie działa dla mnie, mam nadzieję, że również dla ciebie.

tl; dr: Konfiguruj ForceFullCompositionPipeline=On

tło

Niektóre z nich mają również nadzieję na podanie większej liczby słów kluczowych na wypadek, gdyby ktoś z podobnym problemem znalazł rozwiązanie.

Moja konfiguracja to:

  • ThinkPad P50 z wbudowanym wyświetlaczem 4K o rozdzielczości 3840 × 2160 (podstawowa)
  • Zewnętrzny monitor jako dodatkowy wyświetlacz - Dell U2412M - 1920 × 1200

Używam Ubuntu Gnome 16.04 LTS.

Kiedy podłączam monitor za pomocą kabla HDMI + konwertera HDMI-na-DVI (ponieważ monitor nie ma wejścia HDMI), wszystko jest za duże. Różne artykuły online sugerowały użycie xrandrdo konfiguracji --scale 2x2na tym ekranie, co spowodowało, że był prawie całkowicie czarny, a na górze widoczna była tylko cienka linia.

Natknąłem się na to pytanie i chociaż 2x2.001rozwiązanie skalowania umożliwiło monitorowi wyświetlanie rzeczy, dodało także dodatkowy piksel pod ekranem X, co spowodowało lekkie przewijanie w górę / w dół, gdy kursory osiągną górę / dół ekranu.

Po wielu Googlingach, z których wiele przyniosło problemy i nie było rozwiązań, natknąłem się na to: https://devtalk.nvidia.com/default/topic/891207/-355-11-358-09-viewportin-on-2nd -monitor-results-in-garbled-display-for-values-over-3211x1800

Aby to przetestować, skonfigurowałem to za pomocą następujących poleceń - zakładam, xrandrże nie zostało jeszcze skonfigurowane skalowanie.

$ 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}

Wyświetla CurrentMetaModewartość i tutaj dodałem ForceFullCompositionPipeline=Onopcję do obu wyświetlaczy. Zauważ, że DPY-4to mój wbudowany wyświetlacz laptopa, podczas DPY-1gdy monitor zewnętrzny.

Rzeczywisty ciąg, który należy skonfigurować, to ten, który znajduje się ::w danych wyjściowych tego polecenia.

$ 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}"

Następnie uruchomiłem:

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

Wreszcie rozdzielczość zewnętrznego wyświetlacza była w porządku, bez przewijania i innych problemów.

Zauważ, że po uruchomieniu tych poleceń CurrentMetaModejest nieco inny niż przypisany, prawdopodobnie ze względu na zastosowanie skalowania:

$ 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}

Mam nadzieję, że to rozwiązuje problem także dla kogoś innego!

Milos Levacic
źródło
4

Miałem dokładnie ten sam problem. Mam rozwiązanie --scale 2x2.001. Dziwne --scale 2x1.999lub 2x2.0001nie działało, więc wypróbuj kilka liczb wokół 2.

igogo
źródło
też miałem ten problem ... brutalna siła wypracowana dla pana
juggernauthk108
Jaka była brutalna siła? Wartości 2?
m4p85r
I jak dziwnie! Dzięki za post. Po prostu się poddałem. Właściwie mam teraz drugi komputer podłączony poprzez synergię. Działa całkiem dobrze, gdy od czasu do czasu potrzebuję aplikacji systemu Windows (drugi komputer wygrywa)
m4p85r
1
To faktycznie działa. Ktoś powinien to zgłosić ... w każdym razie wielkie dzięki!
Columbo,
2

Dziękuję Milosowi za twoje doskonałe rozwiązanie, które dla mnie zadziałało!

Mam mały dodatek. Oprócz korzystania z wiersza poleceń można również wygodnie ustawić ForceFullCompositionPipelinew interfejsie użytkownika ustawień Nvidia. W tym celu musisz przejść do „X Display Display Configuration”, kliknąć „Advanced” i aktywować opcję „Force Full Composition Pipeline”. Proszę zobaczyć https://imgur.com/a/3jE78 dla przykładu.


PS: Używam potrójnej konfiguracji z dwoma zewnętrznymi monitorami (1920x1080; 1680x1050) i wewnętrznym monitorem 3k (3840x2160). Aby to zadziałało, stosuję następującą konfigurację xrandr:

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
Nicolaj Kirchhof
źródło