Включение аппаратного ускорения и Xinerama для нескольких мониторов / нескольких графических процессоров в Linux

10

Моя текущая настройка состоит из трех мониторов, подключенных следующим образом (мониторы перечислены слева направо):

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

Работает как шарм в Windows 7, не так много в Linux. Кажется, у меня есть только три реальных варианта:

  1. Запустив все три монитора как отдельный экран X, я получаю аппаратное ускорение, но, поскольку они все являются независимыми сеансами X, я не могу перемещать окна между ними и могу открыть только Firefox на одном из них в любой момент времени.
  2. Запустите их на GPU0 в режиме TwinView и установите GPU1 в качестве отдельного экрана X. То же ограничение, что и 1, но по крайней мере два монитора работают вместе, хорошо. У меня действительно была проблема, когда иногда Linux видел оба монитора на GPU0 как один большой монитор.
  3. Включите Xinerama, и все будет работать так, как я хочу, но аппаратное ускорение пропало, а дисплей нестабилен в стиле Windows 95.

Моим идеальным решением было бы, чтобы все экраны работали так же, как в Xinerama, без ограничения аппаратного ускорения. Меня даже не волнует, означает ли это рендеринг всех трех на GPU0 и как-то выводить отображение третьего монитора на GPU1, что бы ни работало.

У меня такой вопрос: есть ли способ сделать это? Я не чувствую, что мой сценарий использования настолько велик, что не должно быть какой-либо формы поддержки (помимо трех ограниченных вариантов, представленных выше), или мой лучший вариант - просто взять его и выбрать лучшую карту, чтобы заменить обе, которые могут обрабатывать три выхода самостоятельно?

mynameiscoffey
источник
1
Имеет ли это ответ на ваш вопрос?
Нафтули Кей

Ответы:

1

Это скрипт, который я сделал на Linux Mint с XFCE для такой же установки. Не используя Xinerama. Моя установка была 1-й монитор портрет, 2-й и 3-й, альбомная. Работал как шарм. 5-секундная пауза при запуске была вызвана тем, что он был установлен для начала сеанса, и если он был запущен слишком рано, он работал неправильно.

Также обратите внимание, что в моем конкретном примере мне приходилось выравнивать экраны снизу, так как один был выше остальных. Выравнивание сверху не давало ожидаемого поведения.

В конце концов, использование xrandr было единственным способом, который заставил меня работать так, как я хотел.

Попробуйте с вашими собственными настройками

#!/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

Я сделал статью в своем блоге, однако это на французском языке: https://akim.sissaoui.com/linux-attitude/un-bureau-etendu-sur-trois-ecrans-avec-deux-cartes-graphiques/

Аким Сиссауи
источник
0

Вы в основном ответили сами. В настоящее время это невозможно в Linux, поскольку в Linux нет надлежащей поддержки нескольких графических процессоров.

Поддержка нескольких графических процессоров для Linux была предложена в качестве проекта для Google Summer of Code. Но это очень маловероятно, чтобы быть готовым к прайм-тайм в ближайшее время, если вы спросите меня.

runeks
источник