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!