nVidiaカードを追加したマルチシートのIntelカードにはGLXはありません


10

マルチシートを構成し、Xorgには2つのサーバーレイアウトがあります。1つはnVidiaカード用で、もう1つはIntelカード用です。どちらも機能しますが、使用されているDRIおよびGLXモジュールはnVidiaドライバーからのものであるため、Intelカードに割り当てられたディスプレイサーバーにはハードウェアアクセラレーションがありません。

だから私の質問は、各カードで正しいDRIとGLXを使用するようにレイアウトをどうにか構成できるかということです。

私のXorg.conf:

Section "ServerLayout"
    Identifier     "Default"
    Screen      0  "Screen0" 0 0
    Option         "Xinerama" "0"
EndSection

Section "ServerLayout"
    Identifier     "TV"
    Screen      0  "Screen1" 0 0
    Option         "Xinerama" "0"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL E198WFP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    Option         "DPMS"
EndSection

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

Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    BusID          "PCI:0:2:0"
    Option         "AccelMethod" "uxa"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "DFP-0: nvidia-auto-select +1440+0, DFP-1: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

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

Intelのログファイル:

[    18.239] 
X.Org X Server 1.13.0
Release Date: 2012-09-05
[    18.239] X Protocol Version 11, Revision 0
[    18.239] Build Operating System: Linux 2.6.24-32-xen x86_64 Ubuntu
[    18.239] Current Operating System: Linux bytewiper 3.5.0-18-generic #29-Ubuntu SMP Fri Oct 19 10:26:51 UTC 2012 x86_64
[    18.239] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.5.0-18-generic root=UUID=fc0616fd-f212-4846-9241-ba4a492f0513 ro quiet splash
[    18.239] Build Date: 20 September 2012  11:55:20AM
[    18.239] xorg-server 2:1.13.0+git20120920.70e57668-0ubuntu0ricotz (For technical support please see http://www.ubuntu.com/support) 
[    18.239] Current version of pixman: 0.26.0
[    18.239]    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
[    18.239] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    18.239] (==) Log file: "/var/log/Xorg.1.log", Time: Wed Nov 21 18:32:14 2012
[    18.239] (==) Using config file: "/etc/X11/xorg.conf"
[    18.239] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    18.239] (++) ServerLayout "TV"
[    18.239] (**) |-->Screen "Screen1" (0)
[    18.239] (**) |   |-->Monitor "Monitor1"
[    18.240] (**) |   |-->Device "Device1"
[    18.240] (**) Option "Xinerama" "0"
[    18.240] (==) Automatically adding devices
[    18.240] (==) Automatically enabling devices
[    18.240] (==) Automatically adding GPU devices
[    18.240] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    18.240]    Entry deleted from font path.
[    18.240] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[    18.240]    Entry deleted from font path.
[    18.240] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[    18.240]    Entry deleted from font path.
[    18.240] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[    18.240]    Entry deleted from font path.
[    18.240] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[    18.240]    Entry deleted from font path.
[    18.240] (WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
[    18.240]    Entry deleted from font path.
[    18.240] (==) FontPath set to:
    /usr/share/fonts/X11/misc,
    /usr/share/fonts/X11/Type1,
    built-ins
[    18.240] (==) ModulePath set to "/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
[    18.240] (II) The server relies on udev to provide the list of input devices.
    If no devices become available, reconfigure udev or disable AutoAddDevices.
[    18.240] (II) Loader magic: 0x7f6917944c40
[    18.240] (II) Module ABI versions:
[    18.240]    X.Org ANSI C Emulation: 0.4
[    18.240]    X.Org Video Driver: 13.0
[    18.240]    X.Org XInput driver : 18.0
[    18.240]    X.Org Server Extension : 7.0
[    18.240] (II) config/udev: Adding drm device (/dev/dri/card0)
[    18.241] (--) PCI: (0:0:2:0) 8086:0152:1043:84ca rev 9, Mem @ 0xf7400000/4194304, 0xd0000000/268435456, I/O @ 0x0000f000/64
[    18.241] (--) PCI:*(0:1:0:0) 10de:104a:1458:3546 rev 161, Mem @ 0xf6000000/16777216, 0xe0000000/134217728, 0xe8000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/524288
[    18.241] (II) Open ACPI successful (/var/run/acpid.socket)
[    18.241] Initializing built-in extension Generic Event Extension
[    18.241] Initializing built-in extension SHAPE
[    18.241] Initializing built-in extension MIT-SHM
[    18.241] Initializing built-in extension XInputExtension
[    18.241] Initializing built-in extension XTEST
[    18.241] Initializing built-in extension BIG-REQUESTS
[    18.241] Initializing built-in extension SYNC
[    18.241] Initializing built-in extension XKEYBOARD
[    18.241] Initializing built-in extension XC-MISC
[    18.241] Initializing built-in extension SECURITY
[    18.241] Initializing built-in extension XINERAMA
[    18.241] Initializing built-in extension XFIXES
[    18.241] Initializing built-in extension RENDER
[    18.241] Initializing built-in extension RANDR
[    18.241] Initializing built-in extension COMPOSITE
[    18.241] Initializing built-in extension DAMAGE
[    18.241] Initializing built-in extension MIT-SCREEN-SAVER
[    18.241] Initializing built-in extension DOUBLE-BUFFER
[    18.241] Initializing built-in extension RECORD
[    18.241] Initializing built-in extension DPMS
[    18.241] Initializing built-in extension X-Resource
[    18.241] Initializing built-in extension XVideo
[    18.241] Initializing built-in extension XVideo-MotionCompensation
[    18.241] Initializing built-in extension XFree86-VidModeExtension
[    18.241] Initializing built-in extension XFree86-DGA
[    18.241] Initializing built-in extension XFree86-DRI
[    18.241] Initializing built-in extension DRI2
[    18.241] (II) LoadModule: "glx"
[    18.241] (II) Loading /usr/lib/x86_64-linux-gnu/xorg/extra-modules/libglx.so
[    18.247] (II) Module glx: vendor="NVIDIA Corporation"
[    18.247]    compiled for 4.0.2, module version = 1.0.0
[    18.247]    Module class: X.Org Server Extension
[    18.247] (II) NVIDIA GLX Module  310.19  Thu Nov  8 01:12:43 PST 2012
[    18.247] Loading extension GLX
[    18.247] (II) LoadModule: "intel"
[    18.248] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
[    18.248] (II) Module intel: vendor="X.Org Foundation"
[    18.248]    compiled for 1.13.0, module version = 2.20.13
[    18.248]    Module class: X.Org Video Driver
[    18.248]    ABI class: X.Org Video Driver, version 13.0
[    18.248] (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
    i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G, 915G,
    E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM, Pineview G,
    965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33, GM45,
    4 Series, G45/G43, Q45/Q43, G41, B43, B43, Clarkdale, Arrandale,
    Sandybridge Desktop (GT1), Sandybridge Desktop (GT2),
    Sandybridge Desktop (GT2+), Sandybridge Mobile (GT1),
    Sandybridge Mobile (GT2), Sandybridge Mobile (GT2+),
    Sandybridge Server, Ivybridge Mobile (GT1), Ivybridge Mobile (GT2),
    Ivybridge Desktop (GT1), Ivybridge Desktop (GT2), Ivybridge Server,
    Ivybridge Server (GT2), Haswell Desktop (GT1), Haswell Desktop (GT2),
    Haswell Desktop (GT2+), Haswell Mobile (GT1), Haswell Mobile (GT2),
    Haswell Mobile (GT2+), Haswell Server (GT1), Haswell Server (GT2),
    Haswell Server (GT2+), Haswell SDV Desktop (GT1),
    Haswell SDV Desktop (GT2), Haswell SDV Desktop (GT2+),
    Haswell SDV Mobile (GT1), Haswell SDV Mobile (GT2),
    Haswell SDV Mobile (GT2+), Haswell SDV Server (GT1),
    Haswell SDV Server (GT2), Haswell SDV Server (GT2+),
    Haswell ULT Desktop (GT1), Haswell ULT Desktop (GT2),
    Haswell ULT Desktop (GT2+), Haswell ULT Mobile (GT1),
    Haswell ULT Mobile (GT2), Haswell ULT Mobile (GT2+),
    Haswell ULT Server (GT1), Haswell ULT Server (GT2),
    Haswell ULT Server (GT2+), Haswell CRW Desktop (GT1),
    Haswell CRW Desktop (GT2), Haswell CRW Desktop (GT2+),
    Haswell CRW Mobile (GT1), Haswell CRW Mobile (GT2),
    Haswell CRW Mobile (GT2+), Haswell CRW Server (GT1),
    Haswell CRW Server (GT2), Haswell CRW Server (GT2+),
    ValleyView PO board
[    18.248] (++) using VT number 8

[    18.593] (II) intel(0): using device path '/dev/dri/card0'
[    18.593] (**) intel(0): Depth 24, (--) framebuffer bpp 32
[    18.593] (==) intel(0): RGB weight 888
[    18.593] (==) intel(0): Default visual is TrueColor
[    18.593] (**) intel(0): Option "AccelMethod" "uxa"
[    18.593] (--) intel(0): Integrated Graphics Chipset: Intel(R) Ivybridge Desktop (GT1)
[    18.593] (**) intel(0): Relaxed fencing enabled
[    18.593] (**) intel(0): Wait on SwapBuffers? enabled
[    18.593] (**) intel(0): Triple buffering? enabled
[    18.593] (**) intel(0): Framebuffer tiled
[    18.593] (**) intel(0): Pixmaps tiled
[    18.593] (**) intel(0): 3D buffers tiled
[    18.593] (**) intel(0): SwapBuffers wait enabled

...

[    20.312] (II) Module fb: vendor="X.Org Foundation"
[    20.312]    compiled for 1.13.0, module version = 1.0.0
[    20.312]    ABI class: X.Org ANSI C Emulation, version 0.4
[    20.312] (II) Loading sub module "dri2"
[    20.312] (II) LoadModule: "dri2"
[    20.312] (II) Module "dri2" already built-in
[    20.312] (==) Depth 24 pixmap format is 32 bpp
[    20.312] (II) intel(0): [DRI2] Setup complete
[    20.312] (II) intel(0): [DRI2]   DRI driver: i965
[    20.312] (II) intel(0): Allocated new frame buffer 1920x1080 stride 7680, tiled
[    20.312] (II) UXA(0): Driver registered support for the following operations:
[    20.312] (II)         solid
[    20.312] (II)         copy
[    20.312] (II)         composite (RENDER acceleration)
[    20.312] (II)         put_image
[    20.312] (II)         get_image
[    20.312] (==) intel(0): Backing store disabled
[    20.312] (==) intel(0): Silken mouse enabled
[    20.312] (II) intel(0): Initializing HW Cursor
[    20.312] (II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[    20.313] (**) intel(0): DPMS enabled
[    20.313] (==) intel(0): Intel XvMC decoder enabled
[    20.313] (II) intel(0): Set up textured video
[    20.313] (II) intel(0): [XvMC] xvmc_vld driver initialized.
[    20.313] (II) intel(0): direct rendering: DRI2 Enabled
[    20.313] (==) intel(0): hotplug detection: "enabled"
[    20.332] (--) RandR disabled

[    20.335] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)

[    20.335] (II) intel(0): Setting screen physical size to 508 x 285
[    20.338] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[    20.340] (II) config/udev: Adding input device Power Button (/dev/input/event1)
[    20.340] (**) Power Button: Applying InputClass "evdev keyboard catchall"
[    20.340] (II) LoadModule: "evdev"
[    20.340] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so

1
18.04を使用している場合は、glvndのサポートにより、Just Work(TM)になっているはずです。古いバージョンでは、プログラムは、右libGLを使用するためにLD_PRELOAD環境変数を台無しに必要なが、これは今不要です:D
レオ・ラム

1
@LéoLamたった5年でした。私が思うよりも遅くなるほうがいい。
MeanEYE 2018

回答:


7

さて、それで解決策を見つけましたが、新しいMesa 9.0.1ライブラリを備えたUbuntu 12.10で、現時点でハードウェアアクセラレーションがIntel GPUで機能しないというバグあります。

つまり、GLXの読み込みに問題がありました。nVidiaは独自のGLXモジュールをプッシュし、Intelの足を踏み出します。

私はこの行に気づいて解決策を見つけました:

[    18.240] (==) ModulePath set to "/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"

つまり、にあるモジュール/usr/lib/x86_64-linux-gnu/xorg/extra-modulesはすべてnVidia固有のものです。そこで、2つのxorg.confファイルを使用するようにLightDMを構成しました。Intel 1では、ModulePathnVidiaディレクトリを除外するように手動で設定しています。これにより、適切なGLXモジュールがロードされました。

私の/etc/lightdm/lightdm.confファイルは次のようになります:

[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
allow-guest=false

[Seat:0]
xserver-layout=Default
xserver-config=xorg.conf.nvidia

[Seat:1]
xserver-layout=TV
xserver-config=xorg.conf.intel

に追加された行xorg.conf.intel

Section "Files"
    ModulePath     "/usr/lib/xorg/extra-modules"
    ModulePath     "/usr/lib/xorg/modules"
EndSection

1

私の側では、Ubuntu 14.04ではパスが異なり、Nvidia独自のドライバーがlibglx.soでオーバーライドされ/usr/lib/xorg/modules/extensions/libglx.soます。

この問題を解決するために、私は複製を作成/usr/lib/xorg/modulesして/usr/lib/xorg/modules-nvidia から、Intel Friendly libglx.soを再インストールします:

sudo apt-get install --reinstall xserver-xorg-core

これにより、元の状態に戻りlibglx.soます。でxorg.conf.nvidia、有効なモジュールへのパスを追加します。

Section "Files" ModulePath "/usr/lib/xorg/modules-nvidia" EndSection

また、セクションの下/etc/lightdm/lightdm.confに追加する必要があります:このヒントはここで見つかりましxserver-command=/usr/bin/X -sharevts[Seat:1]

MeanEYEが正しい方法で私を指摘してくれてありがとう。


1

そのため、少し調べてみたところ、マルチシート(マルチステーション、マルチターミナルなど)の構成を実現する方法はいくつかあることがわかりました。

1)標準のXorgと組み込みのカーネルドライバーを使用するため、私が推奨する方法はevdevを使用することです。これは、evdevを使用して4 GPUおよび4モニターのマルチシート構成をセットアップする方法に関するガイドです。このガイドはDebian SargeおよびSiS GPUを対象としていますが、このガイドから多くの非常に有用な情報を推測できると思います:https : //en.wikibooks.org/wiki/Multiterminal_with_evdev

2)別の方法は、KDriveに基づく別のX WindowsサーバーであるXypherを使用することです。これがあなたが行きたいルートかどうかはわかりませんが、とにかくそのガイドです:https : //en.wikibooks.org/wiki/en : Multiterminal_with_Xephyr

3)もう1つのオプションは、Multiseat Display Manager(MDM)と呼ばれるツールを使用することです。これは、セットアッププロセス全体を自動化することを約束しますが、更新されていないようですので、お勧めしません。ただし、Googleを使えば最後の手段として簡単に見つけることができます。

私はあなたがあなたの設定に対して何をしているか、まだ行っていないのか知りません。そのため、最善のevdevガイドを読んで、まだしていないステップを特定することです。私が見ている最大の違いは

A) xorg.confの例では、ScreenとServerLayoutセクションは1つしかありません。追加のScreensとServerLayoutは、xorg.conf.probeを一緒にした個別のconfで定義されます。

B)さらに、すべてのデバイスは、lspciを使用して取得されたBusIDによって明示的に参照され、

C) IRQ 10 では割り込みが無効になっています。

うまくいけば、これはあなたを立ち上げて実行するのに役立ちます、幸運を祈ります!


さて、これは非常に役立ちます。2つの異なるxorg.confファイルを試してみて、うまくいけばうまくいきます。
MeanEYE 2012年

これでも、Intelカードの場合にnVidia GLXがロードされるという私の問題は解決しません。
MeanEYE 2012年

0

Ubuntu 16.04では、/usr/local/bin/Xラッパーを次のように更新する必要がありました。

exec /usr/bin/Xorg -modulepath '/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules' "$@"

/etc/X11/Xsession.d/00ldlibrary$XDG_SEAT変数をテストしてexport LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa:/usr/lib/i386-linux-gnu/mesa/、Intelカードに対してのみ設定 できます。


0

18.04では、glvndのサポートにより、LD_PRELOADをいじる必要なく、Mesaと独自仕様のNvidiaドライバーの両方を非常に簡単インストールできます。環境変数とラッパースクリプトはすべて不要になりました。


これは特定のUbuntuバージョンでタグ付けされておらず、既存の回答が私のシステム(Ubuntu 15.10)で完全に機能しなかったため、を使用してこの回答を投稿していますlogind

基本的に、GLXとlibGLを機能させるには、シートに応じて正しいlibGL実装を使用するようにXサーバーユーザーセッションの両方を構成する必要があります。

したがって、LightDMがXを開始するためのラッパースクリプトLD_LIBRARY_PATHと、セッションが正しいlibGLを使用するように設定するXsessionスクリプトが必要です。


/etc/X11/Xsession.d/00ldlibrary

#!/bin/bash

if ps aux | grep "/usr/local/bin/X $DISPLAY" | grep -q seat1; then
    export LD_LIBRARY_PATH=/usr/lib/nvidia-352:/usr/lib32/nvidia-352
fi
if ps aux | grep "/usr/local/bin/X $DISPLAY" | grep -q seat0; then
    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa:/usr/lib/i386-linux-gnu/mesa/
fi

(seat1がnvidiaとseat0 mesaを使用すると仮定)


同様に、Xサーバー(/usr/local/bin/X)をラップする必要があります。

#!/bin/bash

if grep -q seat1 <<<$*; then
    export LD_LIBRARY_PATH=/usr/lib/nvidia-352
    echo "Detected seat1, using nvidia-352 libs"
fi
if grep -q seat0 <<<$*; then
    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa
    echo "Detected seat0, using mesa libs"
fi

exec /usr/bin/Xorg "$@"

最後に、これらをで使用するようにLightDMを構成する必要があります/etc/lightdm/lightdm.conf

[Seat:*]
# needed to use the correct libraries for mesa/nvidia,
# along with a Xsession.d script (00ldlibrary)
xserver-command=/usr/local/bin/X
session-setup-script=/etc/X11/Xsession.d/00ldlibrary

詳細については、私のmultiseat-mesa-nvidiaリポジトリを参照してください。このリポジトリには、詳細と完全な構成ファイルとスクリプトがあります。


-1

私はArch linuxを使用していますが、これにより、IntelとNvidia独自のドライバーの両方にgl/vaapi/vdpau機能を搭載することができました。

あなたがする必要があるすべて(q&d):

プロプライエタリをインストールしますnvidia-utils

コピー/usr/lib/xorg/modules/usr/lib/xorg/modules_nvidia

ダウンロードして最新のアンパックlibva-intel-drivermesa-vdpaumesamesa-libgl、とxorg-server別のディレクトリにあなたのアーキテクチャを当てはめるパッケージなど。その後cp -rの内容(ルート/ sudoのような)"separate directory"/usr/libのようなものに/usr/lib_intelし、"separate directory"/usr/lib/xorg/modules/*実際に/usr/lib/xorg/modulesディレクトリ(上書き)。

そして

echo "/usr/lib_intel" > /etc/ld.conf.d/intel_glx.conf
ldconfig

再起動X-Serversしてみてくださいglxinfo

これはもちろんnvidia-updatesで自己破壊します。

再起動時にこれが機能しないことがわかりました。

はるかに良いハック:

ld.so.conf.d / fileを作成しないでください。代わりに、次を/ usr / bin / Xに追加します。

PREV_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
if [[ "$@" == *"vt7"* ]]
then
export LD_LIBRARY_PATH=/usr/lib_intel;$PREV_LD_LIBRARY_PATH
export LD_PRELOAD=/usr/lib_intel/libGL.so
fi

"vt7"を、ディスプレイマネージャーがIntel x-serverを起動するために使用するものに変更します(:0、:2、vt7、vt8、isolatodevice = ...)

もちろん、/ usr / bin / Xを/ usr / bin / Xintelにコピーして編集することもできます。代わりに、wmがこのファイル(kdm 'ServerCmd')を指すようにします。

次に、新しいセッションファイル、つまり/ usr / bin / startkde(DISPLAY#のチェックなし)を編集または作成し、次を追加します。

export LD_LIBRARY_PATH=/usr/lib_intel;$PREV_LD_LIBRARY_PATH
export LD_PRELOAD=/usr/lib_intel/libGL.so

そうすれば、何も上書きする必要はありません。/ usr / lib_intelディレクトリをrmし、編集された2つのファイルをリセットすることは、このハックを再び削除するために必要なすべてです。


UbuntuはArch Linuxとはかなり異なるため、一般的な考え方は良好ですが(LD_LIBRARY_PATH)、Ubuntuシステムでは動作しません。
レオラム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.