Mengaktifkan akselerasi perangkat keras dan Xinerama untuk multi-monitor / multi-GPU di Linux


10

Pengaturan saya saat ini adalah tiga monitor yang terhubung sebagai berikut (monitor terdaftar dari kiri ke kanan):

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

Bekerja seperti pesona di Windows 7, tidak begitu banyak di Linux. Saya sepertinya hanya memiliki tiga opsi nyata:

  1. Jalankan ketiga monitor sebagai layar X terpisah, saya mendapatkan akselerasi perangkat keras tetapi karena semuanya adalah sesi X independen, saya tidak dapat memindahkan jendela di antara mereka dan hanya dapat membuka firefox pada satu layar pada waktu tertentu.
  2. Jalankan keduanya di GPU0 dalam mode TwinView dan miliki GPU1 sebagai layar X terpisah. Keterbatasan yang sama dengan 1 tetapi setidaknya dua monitor bekerja bersama ok. Saya memang memiliki masalah di mana kadang-kadang Linux melihat kedua monitor pada GPU0 sebagai monitor tunggal yang besar.
  3. Aktifkan Xinerama dan semuanya berfungsi seperti yang saya inginkan, tetapi akselerasi perangkat keras hilang dan tampilannya berombak gaya Windows 95.

Solusi ideal saya adalah membuat semua layar berfungsi seperti yang dilakukan di bawah Xinerama tanpa batasan menonaktifkan akselerasi perangkat keras. Saya bahkan tidak peduli apakah itu berarti menjadikan ketiganya pada GPU0 dan entah bagaimana mengubah tampilan monitor ketiga ke GPU1, apa pun yang bekerja.

Pertanyaan saya adalah ini: apakah ada cara untuk mencapai ini? Saya tidak merasa kasus penggunaan saya begitu di luar sana sehingga seharusnya tidak ada setidaknya beberapa bentuk dukungan (di luar tiga opsi terbatas yang disajikan di atas), atau apakah pilihan terbaik saya adalah hanya menyedotnya dan memilih kartu yang lebih baik untuk menggantikan keduanya yang dapat menangani tiga output dengan sendirinya?


1
Apakah ini menjawab pertanyaan Anda?
Naftuli Kay

Jawaban:


1

Ini adalah skrip yang saya buat di Linux Mint dengan XFCE untuk jenis pengaturan yang sama. Tidak menggunakan Xinerama. Pengaturan saya adalah potret monitor 1, 2 dan 3, lansekap. Bekerja seperti pesona. Jeda 5 detik saat mulai adalah karena diset untuk memulai dengan sesi, dan jika dijalankan terlalu dini, itu tidak berfungsi dengan benar.

Perhatikan juga bahwa dalam contoh spesifik saya, saya harus menyelaraskan layar di bagian bawah karena yang satu lebih tinggi dari yang lain. Menyelaraskan di atas tidak memberikan perilaku yang diharapkan.

Pada akhirnya, menggunakan xrandr adalah satu-satunya cara saya membuatnya bekerja seperti yang saya inginkan.

Cobalah dengan pengaturan Anda sendiri

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

Saya membuat artikel di blog saya, namun ini dalam bahasa Prancis: https://akim.sissaoui.com/linux-attitude/un-bureau-etendu-sur-trois-ecrans-avec-deux-cartes-graphiques/


0

Anda pada dasarnya menjawab sendiri. Ini tidak mungkin saat ini di Linux karena Linux tidak memiliki dukungan yang tepat untuk banyak GPU.

Beberapa dukungan GPU untuk Linux telah disarankan sebagai proyek untuk Google Summer of Code. Tapi itu sangat tidak mungkin siap untuk prime-time dalam waktu dekat, jika Anda bertanya kepada saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.