O X.org pode carregar dois drivers diferentes? (Configuração de cabeça tripla com placa Intel e NVidia)

5

Queremos configurar três telas com um adaptador gráfico Intel integrado e uma placa nvidia.

Ambos os cartões são reconhecidos no lspci

01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
00:02.0 Display controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

E basicamente funciona: se eu mudar para o console, vejo a saída no cartão Intel, X está sendo executado apenas na placa Nvidia.

Mas quando digito xrandr | grep conn , obtenho apenas uma porta conectada:

DVI-I-0 disconnected (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
HDMI-0 disconnected (normal left inverted right x axis y axis)

Estou no Ubuntu 12.10 (e XFCE) e instalei o driver nvidia proprietário.

Eu estava assumindo que X talvez tivesse um problema para autodetectar ambas as placas, então achei que o seguinte xorg.conf poderia ajudar:

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

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 210"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    VendorName     "Intel"
    BoardName      "Internal Intel Graphics"
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Mas ainda não está funcionando.

  • Geralmente é possível usar dois drivers diferentes no X?
  • É necessário criar um xorg.conf manualmente? (porque o Ubuntu 12.10 normalmente funciona sem o xorg.conf )
  • Há algum erro no meu xorg.conf ?
por Alex 12.04.2013 / 13:36

1 resposta

7

Sim, o X pode usar vários drivers. A sua é uma configuração muito semelhante à que tenho. Eu tenho uma NVIDIA 9800 GT com dois monitores conectados e um cartão Intel de segunda geração com um único monitor.

Não vejo problemas com o seu xorg.conf . Eu suspeito que você precisará criar um xorg.conf para dizer ao X para usar os drivers nvidia e intel. Meu xorg.conf parece muito com o seu; Eu tenho três seções de monitor e tela, porque a placa nvidia tem dois monitores, mas tenho certeza que o X está ignorando essas seções.

Primeiro, você vai querer ter certeza de que o xinerama está desabilitado em xorg.conf (talvez não seja necessário).

xorg.conf :

Section "ServerFlags"
    Option  "xinerama"  "off"
EndSection

Quando você fizer um xrandr --listproviders , verá os dois cards.

cody@IRIS> xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x290 cap: 0x1, Source Output crtcs: 2 outputs: 5 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x48 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 6 associated providers: 1 name:Intel

Se você não vê os dois cartões, provavelmente está faltando um driver. (Mas o OP diz que o console está usando um e o X está usando o outro, então provavelmente ambos trabalham)

Você deve poder usar xrandr --setprovideroutputsource para adicionar as portas da Intel à lista mostrada por seu xrandr | grep conn No meu caso eu uso os nomes dados por --listproviders :

xrandr --setprovideroutputsource Intel NVIDIA-0

Se isso não adicionar as portas da Intel, talvez ele já esteja conectado de uma maneira que você não possa vê-lo. Desconecte-o com:

xrandr --setprovideroutputsource Intel 0x0

Em seguida, tente conectá-lo novamente:

xrandr --setprovideroutputsource Intel NVIDIA-0

Todas as portas de saída devem ser mostradas agora. E você deve poder adicionar um display com as configurações de exibição do gnome ou com xrandr .

Então, quando eu finalmente consegui que meu monitor de intel funcionasse, os monitores da nvidia decidiram que precisavam se mover quando tentei mover o mouse para o terceiro monitor. Agora mostraria o conteúdo do terceiro monitor, tanto no terceiro quanto no segundo monitor. E o conteúdo original do segundo deslizou para o primeiro monitor com o conteúdo da primeira fora da tela. Ele voltaria ao normal se eu tentasse mover o cursor para o primeiro monitor novamente.

Eu finalmente consertei isso com outra chamada xrandr :

xrandr --output DVI-I-2 --panning 3840x1200+1680+0/1920x1200+1680+0/0/0/0/0

Essa chamada exige conhecimento da geometria da tela física e do layout lógico. Eu tenho um monitor de 1680x1050, um 1920x1200 e um 1920x1080. Eles estão nessa ordem da esquerda para a direita. O mais certo está ligado ao cartão de intel.

Esta chamada está configurando a região de panoramização no monitor do meio. --output DVI-I-2 é a porta conectada ao meu monitor do meio.

Os primeiros quatro números definem a região de panorâmica como o total das telas do meio e da direita. 3840x1200 como largura e altura e + 1680 + 0 para compensar a região para iniciar no canto superior esquerdo do monitor do meio. (Aparentemente [0,0] está no canto superior esquerdo do monitor esquerdo)

Os próximos 4 números são a região de rastreamento do cursor. Eu configurei isso para acompanhar apenas o cursor na tela do meio. Dessa forma, quando o cursor sair dessa tela, ele não tentará deslocar a imagem para seguir o cursor.

Os últimos 4 números definem uma borda ao redor da região de panoramização. Estou usando apenas os valores padrão aqui.

Versões do software relacionado que eu estava usando:

xorg-server-1.17.4
gnome-3.18.0
xrandr-1.4.3
    
por Cody Creager 05.06.2016 / 10:13