“--scale 2x2” em xrandr faz com que o monitor não exiba nada

8

Eu tenho um monitor principal externo de 4k e estou tentando conectar um monitor externo de 1680x1050 à esquerda dele.

Eu tentei usar:

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

que parece que deve funcionar, e quando eu olho para o que o computador pensa que está acontecendo na nvidia-settings ele exibe corretamente um monitor de 3200x2160 à esquerda do meu 4k um.

No entanto, no meu monitor externo apenas mostra preto com uma linha piscando no topo da mesma.

A única maneira de corrigir isso é redefinir o dimensionamento de volta para 1x1, no ponto em que a imagem retorna (mantendo o tamanho do servidor X. Isso significa que há apenas espaço morto em que preciso rolar entre os meus monitores) .

Então eu acho que o problema é especificamente relacionado ao escalonamento 2x2 no xrandr. Não tenho certeza do que fazer?

O computador está funcionando 14.04 e tem uma nvidia GTX960 nele com o driver recomendado (352.63)

Aqui está minha saída 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  
    
por ashgetstazered 01.12.2015 / 07:42

3 respostas

2

Só queria acrescentar que isso é algo com que venho lutando há muito tempo e cada vez que desisti - até que decidi descobrir de uma vez por todas. A solução abaixo funciona para mim, espero que faça por você também.

tl; dr: Configurar ForceFullCompositionPipeline=On

Antecedentes

Algumas delas também estão na expectativa de fornecer mais palavras-chave caso alguém com um problema semelhante acabe procurando a solução.

Minha configuração é:

  • ThinkPad P50 com um visor 4K integrado em 3840 × 2160 (principal)
  • Um monitor externo como monitor secundário - Dell U2412M - 1920 × 1200

Eu uso o Ubuntu Gnome 16.04 LTS.

Quando eu conecto o monitor através de um cabo HDMI + um conversor HDMI-para-DVI (como o monitor não tem uma entrada HDMI), tudo era muito grande. Vários artigos on-line sugeriram usar xrandr para configurar --scale 2x2 nessa exibição, o que resultou em quase preto, com apenas uma linha fina visível na parte superior.

Eu esbarrei nessa questão e enquanto a solução de 2x2.001 permitia que o monitor realmente exibisse coisas, ele também adicionava um pixel extra abaixo da tela X, o que resultava em uma leve rolagem para cima / baixo quando os cursores alcançavam a parte superior / inferior. da tela.

Depois de muito pesquisando, muito do que resultou em problemas e sem soluções, me deparei com isso: link

Então, para testá-lo, configurei isso usando os seguintes comandos - suponha que xrandr ainda não tenha sido configurado com o dimensionamento.

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

Isso exibe o valor de CurrentMetaMode e é onde eu adicionei a opção ForceFullCompositionPipeline=On a ambas as exibições. Observe que DPY-4 é meu monitor de laptop integrado, enquanto DPY-1 é o monitor externo.

A string real que precisa ser configurada é a que está após :: na saída desse comando.

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

Depois disso, eu corri:

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

Por fim, a resolução do monitor externo ficou boa sem problemas de rolagem ou outros problemas.

Observe que, depois de executar esses comandos, o CurrentMetaMode é um pouco diferente do que foi atribuído, provavelmente devido à aplicação do dimensionamento:

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

Espero que isso resolva o problema para outra pessoa também!

    
por Milos Levacic 23.11.2017 / 17:02
5

Eu tive exatamente o mesmo problema. Eu resolvi com --scale 2x2.001 . Por incrível que pareça, --scale 2x1.999 ou 2x2.0001 não funcionaram, então tente vários números em torno de 2.

    
por igogo 01.01.2017 / 21:10
2

Obrigado Milos pela sua excelente solução, que funcionou bem para mim!

Eu tenho uma pequena adição. Além de usar a linha de comando, você também pode definir confortavelmente o ForceFullCompositionPipeline na interface do usuário da Nvidia-Settings. Para isso, você tem que ir em "Configuração de Display do Servidor X", clicar em "Avançado" e ativar a opção "Force Full Composition Pipeline". Por favor, veja link para um exemplo.

PS: Estou usando uma configuração de cabeça tripla com dois monitores externos (1920x1080; 1680x1050) e um monitor interno de 3k (3840x2160). Para que isso funcione eu aplico o seguinte xrandr-config:

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
    
por Nicolaj Kirchhof 26.11.2017 / 23:19