Ativando a aceleração de hardware e o Xinerama para multi-monitor / multi-GPU no Linux

10

Minha configuração atual é de três monitores conectados da seguinte maneira (monitores listados da esquerda para a direita):

GPU0 (nVidia GTX 280):
 - Dell 2405FPW (1920x1200)
 - Dell U2410 (1920x1200)
GPU1 (nVidia 210):
 - Dell 2405FPW (1920x1200)

Funciona como um charme no Windows 7, não tanto no Linux. Eu pareço ter apenas três opções reais:

  1. Execute todos os três monitores como uma tela X separada, recebo aceleração de hardware, mas como todas são sessões X independentes, não consigo mover janelas entre elas e só posso ter o Firefox aberto em uma a qualquer momento.
  2. Execute os dois no GPU0 no modo TwinView e tenha o GPU1 como uma tela X separada. Mesma limitação que 1, mas pelo menos dois monitores funcionam juntos ok. Eu tive um problema em que, ocasionalmente, o Linux via os dois monitores no GPU0 como um único monitor grande, no entanto.
  3. Ative o Xinerama e faça com que tudo funcione como eu quero, mas a aceleração de hardware desapareceu e a tela apresenta um estilo instável do Windows 95.

Minha solução ideal seria ter todas as telas funcionando como no Xinerama, sem a limitação de ter a aceleração de hardware desativada. Eu nem me importo se isso significa renderizar todos os três no GPU0 e de alguma forma extrair a exibição do terceiro monitor para o GPU1, o que quer que funcione.

Minha pergunta é: existe alguma maneira de conseguir isso? Eu não sinto que o meu caso de uso é tão lá que não deveria haver pelo menos alguma forma de suporte (além das três opções limitadas apresentadas acima), ou a minha melhor opção seria apenas sugá-lo e escolher um cartão melhor para substituir os dois que podem lidar com três saídas por si só?

    
por mynameiscoffey 26.01.2011 / 07:35

2 respostas

1

Este é um script que fiz no Linux Mint com XFCE para o mesmo tipo de configuração. Não usando o Xinerama. Minha configuração foi 1º retrato do monitor, 2ª e 3ª paisagem. Trabalhou como um encanto. A pausa de 5 segundos no início foi porque foi definida para iniciar com a sessão e, se foi executada muito cedo, não estava funcionando corretamente.

Note também que no meu exemplo específico, eu tive que alinhar as telas na parte inferior, uma vez que era mais alta do que as outras. Alinhar por cima não estava dando o comportamento esperado.

No final, usar o xrandr foi a única maneira de fazer com que ele funcionasse do jeito que eu queria.

Experimente com suas próprias configurações

#!/bin/bash
sleep 5
xrandr --size 5040x1920 --output HDMI-0 --mode 1920x1080 --pos 1200x840 --primary \
--output DVI-1-1 --mode 1920x1080 --pos 3120x840 \
--output DVI-0 --mode 1920x1200 --pos 0x0 --rotate left

Eu fiz um artigo no meu blog, no entanto, isso é em francês:

    
por 20.08.2015 / 20:23
0

Você basicamente respondeu a si mesmo. No momento, isso não é possível no Linux, já que o Linux não tem suporte adequado para várias GPUs.

O suporte a várias GPUs para Linux foi sugerido como um projeto para o Google Summer de código. Mas é muito improvável que esteja pronto para o horário nobre em breve, se você me perguntar.

    
por 28.03.2011 / 18:33