Нет GLX на карте Intel с мультисетом с дополнительной картой nVidia

8

У меня настроен мультисектор, и у моего Xorg есть 2 макета сервера. Один для карты nVidia, а другой - для карты Intel. Оба они работают, но сервер отображения, назначенный на карту Intel, не имеет аппаратного ускорения, поскольку используемый DRI и GLX-модуль - это драйвер nVidia.

Итак, мой вопрос: могу ли я каким-либо образом настроить макеты для использования правильных 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
    
задан MeanEYE 21.11.2012 в 19:12
источник

6 ответов

6

Хорошо, поэтому нашел решение, но есть ошибка предотвращение аппаратного ускорения от работы с Intel GPU на данный момент в Ubuntu 12.10 с новой библиотекой Mesa 9.0.1.

Короче говоря, проблема заключалась в загрузке 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. Поэтому я сконфигурировал LightDM для использования двух% файлов co_de%. В Intel один, я вручную установил xorg.conf , исключая каталог nVidia. Это привело к загрузке соответствующего модуля GLX.

Мой файл ModulePath выглядит следующим образом:

[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

Линии, добавленные к /etc/lightdm/lightdm.conf :

Section "Files"
    ModulePath     "/usr/lib/xorg/extra-modules"
    ModulePath     "/usr/lib/xorg/modules"
EndSection
    
ответ дан MeanEYE 25.11.2012 в 00:40
источник
1

Итак, я немного поработал и обнаружил, что существует множество способов, которыми вы можете достичь конфигурации Multiseat (Multi-station, multi-terminal и т. д.).

1) Метод, который я бы рекомендовал, поскольку он использует ваш стандартный Xorg и встроенный драйвер ядра, использует evdev . Ниже приведено руководство по настройке конфигурации 4-х GPU и 4-мя мониторов с использованием evdev. Руководство предназначено для графических процессоров Debian Sarge и SiS, но я думаю, вы можете сделать очень много полезной информации из этого руководства: Ссылка

2) Другой метод использует Xypher , другой сервер X Windows на базе KDrive. Я не уверен, что это маршрут, на который вы хотите отправиться, но в любом случае это руководство: Ссылка

3) Другим вариантом является использование инструмента под названием Диспетчер отображения Multiseat (MDM) , который обещает автоматизировать весь процесс установки для вас, однако он не кажется для обновления, поэтому я не рекомендую его. Однако вы можете легко найти его в Google в качестве крайней меры.

Я не знаю, что у вас есть или еще не сделал с вашей конфигурацией, поэтому лучше всего прочитать руководство evdev и попытаться определить шаги, которые вы еще не сделали , Самые большие различия, которые я вижу, это

A) В примере xorg.conf есть только 1 раздел Screen и ServerLayout. Дополнительные экраны и ServerLayout определены в отдельном conf все вместе: xorg.conf.probe

B) Кроме того, все устройства явно ссылаются на их идентификаторы BusID, которые были получены с использованием lspci и

C) Прерывания отключены на irq 10.

Надеюсь, это поможет вам в беге, удачи!

    
ответ дан michealPW 24.11.2012 в 17:52
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 , который указывает мне правильный путь.

    
ответ дан antoine 29.08.2014 в 00:39
0

В 18.04 поддержка glvnd позволяет пользователям легко устанавливать как Mesa, так и проприетарные драйверы Nvidia , без необходимости связываться с LD_PRELOAD! Все переменные среды и сценарии оболочки теперь не нужны.

Так как это не помечено определенной версией Ubuntu, и существующие ответы не полностью работали с моей системой (Ubuntu 15.10), я отправляю этот ответ, который использует logind .

В принципе, чтобы заставить GLX и libGL работать, вы должны настроить как сервер X , так и сеанс пользователя, чтобы использовать правильную реализацию libGL, в зависимости от места.

Поэтому вам нужен сценарий оболочки для LightDM для запуска X и скрипт Xsession для установки LD_LIBRARY_PATH , чтобы в сеансе использовался правильный libGL.

В /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 "[email protected]"

Наконец, вам нужно настроить 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

Подробнее см. my multiseat-mesa-nvidia repo , который имеет более подробную информацию и имеет полную конфигурацию файлов и скриптов.

    
ответ дан Léo Lam 13.02.2016 в 18:41
0

В Ubuntu 16.04 мне нужно было обновить обертку /usr/local/bin/X с помощью

exec /usr/bin/Xorg -modulepath '/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules' "[email protected]"

/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.

    
ответ дан guest 30.07.2017 в 23:28
-1

Я использую Arch linux, но это немного помогло мне получить как Intel, так и мои драйверы Nvidia, загруженные с gl/vaapi/vdpau .

Все, что вам нужно сделать (q & amp; d):

Установить собственный nvidia-utils .

Скопировать /usr/lib/xorg/modules в /usr/lib/xorg/modules_nvidia

Загрузите и распакуйте последние libva-intel-driver , mesa-vdpau , mesa , mesa-libgl и xorg-server в качестве пакетов, соответствующих вашей архитектуре в отдельном каталоге. Затем cp -r (как root / 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-обновлениях, конечно.

Я узнал, что это не работает при перезагрузке.

Намного лучше взломать:

Не создавайте файл ld.so.conf.d /. Вместо этого добавьте следующее в / usr / bin / X:

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

измените «vt7» на то, что использует ваш диспетчер дисплея, чтобы запустить ваш x-сервер intel (: 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

Таким образом, вам даже не нужно ничего перезаписывать. rm'ing каталог / usr / lib_intel и сброс 2 отредактированных файлов - это все, что вам нужно сделать, чтобы снова удалить этот взлом.

    
ответ дан arch4ever 21.09.2015 в 21:04