Eu tenho driver nvidia 340.98
com GT218M [NVS 3100M], Xubuntu 16.04, quaisquer resultados abaixo são deste ambiente se eu não mencionar o contrário. Aqui está minhas informações do ambiente de teste , a saída de:
sudo apt-get install pastebinit; \
sudo sh -c "lsb_release -sd; \
dmidecode -s system-product-name; echo ==; \
lshw -c display; echo ==; \
xrandr --verbose; echo ==; \
cat /etx/X11/xorg.conf" \
| tee ~/Desktop/ubuntu-graphic-info.txt \
| pastebinit
Pilha estranha e complexa para depurar especialmente usando drivers proprietários. Na maioria das vezes, recebo comportamentos inesperados, pode ser devido à falta de conhecimento sobre a configuração atual da pilha gráfica do Linux.
- Eu escrevi esta resposta antes, o que pode introduzir algumas ferramentas de depuração como
xtrace
- Evite executar vários comandos
xrandr
sequenciais, somente após a reinicialização do servidor X. O mesmo comando pode ter resultado diferente dependendo dos comandos anteriores. Tenho notado que, com--scale
(veja o caso de teste da minha resposta, vinculado acima)--transform
& amp; %código%. Ainda não conheço uma maneira fácil apenas por logout / login. Então, sempre faça o logout / login antes de fazer outra avaliação. - As capturas de tela tiram apenas imagens em tamanho de pixel do FB, então adicionarei fotos da câmera para mostrar os resultados reais.
Método 1: --fb
ou xrandr --output .. --scale HCoefxVCoef
Nota, funciona bem para mim. --scale-from WxH
é um atalho para --scale
, consulte method3
(VGA-0 abaixo do DP-3)
xrandr \
--output DP-3 --mode 1280x800 --scale 1x1 --pos 0x0 --fb 2880x2600 \
--output VGA-0 --mode 1440x900 --scale 2x2 --pos 0x800
ou:
xrandr \
--output DP-3 --mode 1280x800 --pos 0x0 --fb 2880x2600 \
--output VGA-0 --mode 1440x900 --scale-from 2880x1800 --pos 0x800
Cálculo do tamanho do FrameBuffer:
width = max(1280,1440*2) = 2880
height = 800+900*2 = 2600
Resultados:
Método 2: --transform
Ver entrada / saída de porta
Nota: não funciona bem. nvidia-settings
não altera o buffer de quadros para o tamanho requerido como no comando nvidia-settings
. Parece que um bug (tipo, xrandr
tem seu próprio FB), precisa de mais pesquisas.
Tentou replicar nvidia
setup diretamente usando xrandr
(usei xrandr do method1, marquei nvidia, redefino as configurações e usei nvidia-settings diretamente):
-
nvidia-settings
→ Configuração de exibição do X Server - Selecionar monitor externo → avançado ...
- Crie ViewPortIn & amp; Panning duplo de ViewPortOut (que é o mesmo que a resolução original)
- Deixar o monitor interno inalterado e, em seguida, Aplicar
Exemplo:
-
Configurações internas da nvidia do monitor
Position: +0+0 ViewPortIn: 1280x800 ViewPortOut: 1280x800+0+0 Panning: 1280x800
-
Configurações de nvidia do monitor externo
Position: +1280+0 (rightof) or +0+800 (below) ViewPortIn: 2880x1800 ViewPortOut: 1440x900+0+0 Panning: 2880x1800
Resultados: Observe o ponteiro do mouse, ele pode alcançar todas as bordas do segundo monitor, mesmo que ele apenas desenhe o quadrante superior esquerdo.
Atualização: Bem, finalmente consegui um truque de solução. Adicione 1 px à largura ou altura do panning ( gksu nvidia-settings
)
Panning: 2881x1800 or 2880x1801
Novos Resultados: Eu não posso explicar isso, apenas o fundo está corrompido se eu uso abaixo, caso contrário, tudo parece ok.
-
nvidia-settings viewportin com captura de tela de truque
reduziu a qualidade de cor da imagem acima para reduzir o imgur em menos de 2 MB
-
nvidia - viewportin com panning trick photo
Método 3: Panning
Nota, funciona bem para mim, igual ao método1
(VGA-0 à direita do DP-3)
xrandr \
--output DP-3 -primary --mode 1280x800 --pos 0x0 --transform "1,0,0,0,1,0,0,0,1" --fb 4160x1800 \
--output VGA-0 --mode 1440x900 --transform "2,0,0,0,2,0,0,0,1" --right-of DP-3
Cálculo do tamanho do FrameBuffer:
width = 1280+1440*2 = 4160
height = max(800,900*2) = 1800
Resultados: