Habilitando 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 forma (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 encanto no Windows 7, não tanto no Linux. Parece que só tenho 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 independentes do X, não consigo mover janelas entre elas e só posso ter o firefox aberto em uma a qualquer momento.
  2. Execute os dois na GPU0 no modo TwinView e tenha a GPU1 como uma tela X separada. Mesma limitação que 1, mas pelo menos dois monitores trabalham juntos, ok. Eu tive um problema em que ocasionalmente o Linux via ambos os monitores na GPU0 como um único monitor grande.
  3. Habilite o Xinerama e faça com que tudo funcione como eu quero, mas a aceleração do hardware se foi e a tela é instável no estilo 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 na GPU0 e, de alguma forma, expandir a exibição do terceiro monitor para a GPU1, o que funcionar.

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

mynameiscoffey
fonte
1
Será que isso responde sua pergunta?
Naftuli Kay

Respostas:

1

Este é um script que eu criei no Linux Mint com XFCE para o mesmo tipo de configuração. Não está usando o Xinerama. Minha configuração foi o primeiro monitor em retrato, o segundo e o terceiro em paisagem. Funcionou como um encanto. A pausa de 5 segundos no início foi porque foi configurada para iniciar com a sessão e, se foi executada muito cedo, não estava funcionando corretamente.

Observe também que no meu exemplo específico, tive que alinhar as telas na parte inferior, pois uma era mais alta que as outras. Alinhar no topo não estava dando o comportamento esperado.

No final, usar xrandr foi a única maneira de fazê-lo funcionar da maneira 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

Fiz um artigo no meu blog, no entanto, em francês: https://akim.sissaoui.com/linux-attitude/un-bureau-etendu-sur-trois-ecrans-avec-deux-cartes-graphiques/

Akim Sissaoui
fonte
0

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

O suporte a várias GPU para Linux foi sugerido como um projeto para o Google Summer of Code. Mas é pouco provável que esteja pronto para o horário nobre em breve, se você me perguntar.

runas
fonte