การเปิดใช้งานการเร่งด้วยฮาร์ดแวร์และ Xinerama สำหรับหลายจอภาพ / multi-GPU ใน Linux


10

การตั้งค่าปัจจุบันของฉันคือการเชื่อมต่อกับจอภาพสามจอดังนี้ (จอภาพจากซ้ายไปขวา):

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

ทำงานได้อย่างมีเสน่ห์ใน Windows 7 ไม่มากใน Linux ฉันดูเหมือนจะมีเพียงสามตัวเลือกจริง:

  1. เรียกใช้จอภาพทั้งสามเป็นหน้าจอแยกฉันได้รับการเร่งด้วยฮาร์ดแวร์ แต่เนื่องจากเป็นเซสชัน X อิสระทั้งหมดฉันไม่สามารถย้ายหน้าต่างระหว่างพวกเขาและสามารถเปิด firefox ได้เพียงครั้งเดียวในเวลาใดก็ตาม
  2. ทำงานทั้งสองบน GPU0 ในโหมด TwinView และมี GPU1 เป็นหน้าจอแยกต่างหาก ข้อ จำกัด เช่นเดียวกับ 1 แต่อย่างน้อยสองจอภาพทำงานร่วมกันตกลง ฉันมีปัญหาที่บางครั้ง Linux เห็นจอภาพทั้งสองบน GPU0 เป็นจอภาพขนาดใหญ่เพียงจอเดียว
  3. เปิดใช้งาน Xinerama และทำงานทุกอย่างตามที่ฉันต้องการ แต่การเร่งฮาร์ดแวร์หายไปและการแสดงผลเป็นสไตล์ Windows 95 ที่เปลี่ยนแปลงเร็ว

ทางออกที่ดีที่สุดของฉันคือการทำให้หน้าจอทั้งหมดทำงานได้เหมือนอยู่ภายใต้ Xinerama โดยไม่ จำกัด การปิดใช้งานการเร่งด้วยฮาร์ดแวร์ ฉันไม่สนใจเลยว่านั่นหมายถึงการแสดงผลทั้งสามบน GPU0 และอย่างใดอย่างหนึ่งการเพาะปลูกการแสดงผลของจอภาพที่สามเพื่อ GPU1 สิ่งที่ทำงาน

คำถามของฉันคือ: มีวิธีใดบ้างที่จะทำให้สำเร็จ ฉันไม่รู้สึกว่ากรณีการใช้งานของฉันอยู่ที่นั่นอย่างน้อยก็ไม่ควรมีรูปแบบการสนับสนุนบางอย่าง (นอกเหนือจากตัวเลือกที่ จำกัด สามตัวที่แสดงด้านบน) หรือเป็นตัวเลือกที่ดีที่สุดของฉันที่จะดูดมันและเลือก อัพการ์ดที่ดีกว่าเพื่อแทนที่ทั้งสองอย่างที่สามารถจัดการกับสามเอาต์พุตด้วยตัวเอง?


1
ไม่นี้ตอบคำถามของคุณ?
Naftuli Kay

คำตอบ:


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 ไม่ได้รับการสนับสนุนที่เหมาะสมสำหรับ GPU หลายตัว

สนับสนุน GPU หลายตัวสำหรับ Linux ได้รับการแนะนำเป็นโครงการสำหรับ Google Summer of Code แต่นั่นไม่น่าจะพร้อมสำหรับช่วงเวลาสำคัญได้ในไม่ช้าหากคุณถามฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.