LINUX.ORG.RU

Debian jessie 64, Xorg 1.16.0 & Intel graphics

 , ,


0

1

Собственно не работает ускорение на графике интел в этом дистрибе.

В логах пишет:

[ 53655.439] (EE) AIGLX error: dlopen of /usr/lib/x86_64-linux-gnu/dri/i965_dri.so failed (/usr/lib/x86_64-linux-gnu/dri/i965_dri.so: undefined symbol
: _glapi_tls_Dispatch)
[ 53655.439] (EE) AIGLX: reverting to software rendering
[ 53655.458] (EE) AIGLX error: dlopen of /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so failed (/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so: undefined sy
mbol: _glapi_tls_Dispatch)
[ 53655.458] (EE) GLX: could not load software renderer
[ 53655.458] (II) GLX: no usable GL providers found for screen 0

Установка драйверов intel с их сайта ничем не помогает. Да, знаю что дистрибутив еще на стадии тестирования, но пришлось поставить т.к. нужен нормальный свежий wine.


AIGLX error: dlopen of /usr/lib/x86_64-linux-gnu/dri/i965_dri.so failed

AIGLX error: dlopen of /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so failed

Пакеты libgl1-mesa-dri и libgl1-mesa-glx стоят?

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от redgremlin

Сейчас пересобрал со включенной опцией

--enable-glx-tls.

Ничего не изменилось :(.

в mc если открыть i965_dri.so по F3, то есть строчка

U _glapi_tls_Dispatch

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

в mc если открыть i965_dri.so по F3, то есть строчка

U _glapi_tls_Dispatch

U - Undefined, т.е. внешний к библиотеке символ. Он должен быть определён в libglapi.so:

$ nm -D libglapi.so.0.0.0
<cut>
0000000000000008 B _glapi_tls_Context
0000000000000000 D _glapi_tls_Dispatch

redgremlin ★★★★★ ()

По результатам опроса мне сейчас кажется, что у тебя какой-то конфликт библиотек. Скажи, у тебя в /usr/local/lib после самостоятельной сборки какие-то библиотеки упали? Вот если упали, то надо их удалить, потому что при загрузке они обычно (может быть именно так сконфигурирован ld.so.conf) имеют приоритет на теми, что в /usr/lib.

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

$ nm -D libglapi.so.0.0.0

0000000000000000 D _glapi_tls_Dispatch

Да, все упало в local, я продублировал в /usr/lib/x86_64-linux-gnu - там они должны быть изначально.

в /usr/lib/i386-linux-gnu/libglapi.so тоже как ни странно присутствует _glapi_tls_Dispatch. Хотя там стоит старая версия, которая идет вместе с дистрибом.

Demige ()
Последнее исправление: Demige (всего исправлений: 2)
Ответ на: комментарий от Demige

Да, все упало в local

Для начала надо все оттуда удалить и поставить все дистрибутивное.

я продублировал в /usr/lib/x86_64-linux-gnu - там они должны быть изначально.

А вот так делать не надо. Теперь надо точно вспомнить, что дублировал и сделать aptitude reinstall или apt-get install --reinstall тем пакетам, где эти библиотеки есть.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Старые версии заархивировал - восстановить можно. Зачем делать реинсталл, если на дистрибутивных тоже ничего не работало - я и начал ставить из исходников из-за этого.

В общем продвижки есть. Если делать так: LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGL.so startx, то всё запускается.

Вопрос - почему он автоматом не может подцепить libGL?

Demige ()
Последнее исправление: Demige (всего исправлений: 1)
Ответ на: комментарий от Demige

Старые версии заархивировал - восстановить можно. Зачем делать реинсталл, если на дистрибутивных тоже ничего не работало - я и начал ставить из исходников из-за этого.

Мне кажется, что ты делаешь что-то не то. Надо начисто все проверять, два раза убедиться, что переинсталлировал пакеты, что стоят те версии, которые в дистрибутиве, а не твои. Если проблема присутсвует, то надо идти в багзиллу дебиана и искать подобный баг, потому что интел стоит у всего мира. И то, что упало в /usr/local/lib выжечь напалмом (лучше переместить куда-нибудь, если жалко)

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGL.so

Еще раз: он у тебя пытается только ту, что из /usr/local/lib, находит ее, а эту не грузит. Потому что ты все делаешь неправильно вообще. Надо пакеты собирать нормальные и ставить их через dpkg или из локального реапозитория. А то, что ты делаешь - это вандализм и Слака.

UPD: если не помнишь, что менял и «подсовывал», то прогони по контрольным суммам пакеты debsums.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

Я помню что ставил, а вандализм начался когда из «нормальных» пакетов ничего не работало.

Разобрался. На самом деле я сам баран. Я не сказал что у меня multiseat и вторая видюха - nvidia, со своим набором библиотек (и libGL в том числе). Первой находилась именно nvidia версия библиотеки, поэтому ничего и не работало.

Добавление в /etc/ld.so.conf.d первой строчкой /usr/lib/x86_64-linux-gnu решило проблему.

Как ни странно nvidia свою библиотеку тоже по-прежнему находит, хотя она в списке теперь не первая.

Вру. Не находит. DRI в nvidia перестало работать.

Как же по-нормальному сделать чтобы один сеанс запускался с одной библиотекой, а другой с другой? Запускается всё через lightdm.

Demige ()
Последнее исправление: Demige (всего исправлений: 3)
Ответ на: комментарий от Demige

Добавление в /etc/ld.so.conf.d первой строчкой /usr/lib/x86_64-linux-gnu решило проблему.

При нормальной работе такие действия делать не надо. У тебя корень проблемы где-то в другом месте. У тебя неразбериха с тем, откуда грузятся библиотеки. Надо разобраться.

UPD. А что в /etc/ld.so.conf.d?

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Demige

Попробуй переставить (reinstall) пакеты libc6 и libc-bin. Именно они ставят все в /etc/ld.so.conf. И перемести все из /usr/local и восстанови все пакеты. А по результатам разбираться будем.

Как же по-нормальному сделать чтобы один сеанс запускался с одной библиотекой, а другой с другой? Запускается всё через lightdm.

А в чем разница между этими сеансами? А где у тебя лежат библиотеки для nvidia, а где для intel?

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

в /etc/ld.so.conf: include /etc/ld.so.conf.d/*.conf

Один сеанс - рабочий комп (nvidia), второй - xbmc на телек (intel).

Библиотеки nvidia лежат в /usr/lib/nvidia/lib и /usr/lib/nvidia32/lib

Для intel в стандартных путях.

В общем пока проблема решилась таким образом: добавил в /etc/profile строчки:

if [ `echo $DISPLAY |grep -c ":0"` -eq 1 ]; then
export LD_LIBRARY_PATH=/usr/lib/nvidia/lib
fi
Demige ()
Последнее исправление: Demige (всего исправлений: 1)
Ответ на: комментарий от Demige

в /etc/ld.so.conf: include /etc/ld.so.conf.d/*.conf

Я спрашивал про ld.so.conf.d. Там файлы какие и что в них?

/usr/lib/nvidia/lib и /usr/lib/nvidia32/lib

Должно находится. Не понимаю пока, в чем дело. В /ur/lib должен ходить.

А откуда ставил nvidia? Тоже с сайта или из репозитория?

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Demige

export LD_LIBRARY_PATH=/usr/lib/nvidia/lib

Надо разобраться. Потому что это костыли и так не должно быть. Потом забудешь про это и будешь удивляться. Если очень хочется, то создай файл в /etc/ld.so.conf.d/nvidia.conf какой-нибудь и там этот путь укажи. И кеш потом перегенери после экспериментов с библиотеками (man ldconfig). Всяко лучше.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

Так а в чем разбираться. Я так понимаю подгружается ПЕРВАЯ библиотека, которая есть в списке линкера ld. Он же их по имени ищет. Это либо nvidia libGL.so (да, с сайта nvidia) либо нативная mesa libGL.so.

Понимаю что костыли, но другого пути не вижу.

Demige ()
Последнее исправление: Demige (всего исправлений: 1)
Ответ на: комментарий от Demige

Ага, да. Вот раз с сайта, то, да. А nvidia из репозитория Debian что-то там вроде с ld.so.conf в postinst скрипте делает:

update-alternatives --force \
--install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-current/ld.so.conf 9700 \

То есть ставит симлинк на свой файл.

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

что за говно? update-alternatives --verbose --all

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

Ну да. Они просто подменяют всё под свои библиотеки. Вообще разработчикам nvidia надо руки за это оторвать. В процессе установки они еще удаляют нативные libGL и glx не спросив пользователя. Поэтому для двух разных видеокарт приходится измудряться.

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

В процессе установки они еще удаляют нативные libGL и glx не спросив пользователя.

В самом деле? У меня нет nvidia, но мне казалось, что они должны ставить все куда-то в свою директорию. Просто настолько недружественное действие, что я как-то даже сомневаюсь, что все именно так. А почему не было желания поставить из репозитория non-free? Там настолько старые дрова или их матм вообще нет?

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

Там дрова обычно сильно старые, но это ничего не меняет. Оригинальные библиотеки так же заменяются. Естественно где-то бэкап они делают. Кстати у radeon с fglrx такая же фигня.

Demige ()
Последнее исправление: Demige (всего исправлений: 1)
Ответ на: комментарий от Demige

ты небось, не из репозитория ставил блоб, а из *.sh?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.