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

У меня есть настроенное мультиместо, и мой 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
10
задан 21 November 2012 в 22:12

6 ответов

В 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
ответ дан 21 November 2012 в 22:12

Таким образом, я провел немного исследования и обнаружил, что существует много различных путей, которыми можно достигнуть Мультиместа (Многостанционная сеть, многотерминальная и т.д.) конфигурации.

1) Метод, который я рекомендовал бы, поскольку это использует Ваш стандартный Xorg и встроенный драйвер ядра, использует evdev. Вот руководство по тому, как установить 4 GPU и 4 конфигурации мультиместа монитора с помощью evdev. Руководство предназначено для Сержанта Debian и SiS GPU, но я думаю, что можно вывести большую очень полезную информацию от этого руководства: https://en.wikibooks.org/wiki/Multiterminal_with_evdev

2) Другой метод использует Xypher, другой сервер X-окон на основе KDrive. Я не уверен, что это - маршрут, Вы хотите пойти, однако вот то, что руководство так или иначе: https://en.wikibooks.org/wiki/en:Multiterminal_with_Xephyr

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

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

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

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

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

Хотелось бы надеяться, это помогает разбудить Вас и выполнение, удачи!

1
ответ дан 21 November 2012 в 22:12

Хорошо, так что нашли решение, но есть ошибка , мешающая аппаратному ускорению работать на графических процессорах Intel в 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 для использования двух xorg.conf файлов. В Intel один я вручную установил ModulePath, исключая каталог nVidia. Это привело к загрузке соответствующего модуля 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
0
ответ дан 21 November 2012 в 22:12

Я использую 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 [[ "$@" == *"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 и сбросьте 2 отредактированных файла - это все, что вам нужно сделать, чтобы снова удалить этот хак.

0
ответ дан 21 November 2012 в 22:12

В 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-сервер ([ 116]):

#!/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 , который содержит более подробную информацию и содержит полные файлы конфигурации и сценарии.

0
ответ дан 21 November 2012 в 22:12

С моей стороны, в Ubuntu 14.04 пути разные, и проприетарный драйвер Nvidia переопределяет libglx.so в /usr/lib/xorg/modules/extensions/libglx.so.

Чтобы решить эту проблему, я дублирую /usr/lib/xorg/modules в /usr/lib/xorg/modules-nvidia, а затем переустанавливаю дружественный Intel 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 , который указывает мне правильный путь.

0
ответ дан 21 November 2012 в 22:12

Другие вопросы по тегам:

Похожие вопросы: