LINUX.ORG.RU

xorg, 2 видеокарты и 2 экрана, показать один в другом

 ,


0

1

Собственно кейс:

1) 2 видеокарты: radeon rx560 и nvidia gtx1060 без видеовыходов (mining версия). rx560 основная, к ней подключен монитор.

2) xorg настроен на 2 экрана: Screen0 (rx560) и Screen1 (gtx1060).

3) Нужно в окне или в full на Screen0 показать Screen1.

Через x11vnc работает, но это явный оверхед fb через сетевой протокол гонять.

Кроме x11vnc есть еще варианты? Или его как-то хитро настроить можно, чтобы как можно меньше оверхеда давал?

Section "Monitor"
   # HorizSync source: edid, VertRefresh source: edid
   Identifier     "Monitor0"
   VendorName     "Unknown"
   ModelName      "BenQ GW2320"
   HorizSync       30.0 - 83.0
   VertRefresh     50.0 - 76.0
   Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "amdgpu"
    VendorName     "AMD"
    BoardName      "Radeon RX 560"
    BusID          "PCI:1:0:0"
    Option         "AccelMethod" "glamor"
    Option         "DRI" "3" 
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "P106-100"
    BusID          "PCI:38@0:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    DefaultDepth    24
    Option	   "UseDisplayDevice" "none"
    SubSection     "Display"
    	Virtual	    1920 1080
        Depth       24
    EndSubSection
EndSection


Section "ServerLayout"
   Identifier     "Layout0"
   Screen      0  "Screen0" 0 0 
   Screen      1  "Screen1" 1921 0
   InputDevice    "Keyboard0" "CoreKeyboard"
   InputDevice    "Mouse0" "CorePointer"
   Option         "Xinerama" "0"
EndSection


Простого способа передать содержимое одно Screen в другой, насколько мне известно, нет. Но ты лучше объясни, зачем тебе это нужно. Вот выше gpu offload советуют, как на ноутбуках.

Khnazile ★★★★★ ()
Ответ на: комментарий от Elyas

xrandr видит только 1 провайдера :(

xrandr --listproviders Providers: number : 1 Provider 0: id: 0x94 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 1 outputs: 1 associated providers: 0 name:Radeon RX 560 Series @ pci:0000:01:00.0

xio4 ()
Ответ на: комментарий от Khnazile

Странно конечно, что нет, по идее это не такая сложная штука. В принципе x11vnc нормально справляется, видео и игры отлично идут, но не видно курсора. rx560 переезжает в другой системник и на место ее либо брать затычку + gtx1060, либо опять 500 радик.

xio4 ()
Ответ на: комментарий от xio4

Я не уверен, что твоя конфигурация с несколькими Screen подходит для offload. Попробуй загрузиться с автоматической конфигурацией, без xorg.conf. Еще, вроде бы нужно, чтобы у тебя был установлен libglvnd, и все драйверы его поддерживали.

Но это все в теории, gpu offload по-нормальному не поддерживается драйвером nvidia даже на ноутбуках, а у тебя десктоп. Возможно потребуются костыли вроде primusrun и т.п.

Khnazile ★★★★★ ()

Решено

В общем все работает. Делал как тут для uvm https://wiki.gentoo.org/wiki/NVIDIA/Bumblebee Поставил virtualgl, primus, bumblebee из seden, собирал с включенным abi_x86_32. bumblebeed демон не стартует, ругается bbswitch на ACPI. Но это не мешает запускать через primusrun/optirun софт, даже игры в вайне gtx1060 подхватили. По ощущениям фпс заметно выше, чем у rx560. Но если фпс и так был запредельный, например в xonotic у 560 под 240, то gtx1060 дает меньше 150. В тяжелых же задачах держится около 100. Для замеров запускал с vblank_mode=0.

Конфиг почти тот же, что в топике, но в Section «ServerLayout» Screen1 удален, добавлен Inactive «Device1». В /etc/bumblebee/xorg.conf.nvidia прописал BusID видеокарты и поменял layout на Layout2. В /etc/bumblebee/bumblebee.conf включен XorgBinary=Xorg.

xio4 ()