2

Ну, я хотел попробовать WebGL в Firefox (v38.0.5 в Linux); и я понял, что в about:config , webgl.osmesalib был установлен /usr/lib/libOSMesa.so.6 , а about:support заявил:

Graphics
--------

Adapter Description: Tungsten Graphics, Inc -- Mesa DRI Intel(R) IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Device ID: Mesa DRI Intel(R) IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Driver Version: 1.4 Mesa 7.10.2
GPU Accelerated Windows: 0/1 Basic Blocked for your graphics card because of unresolved driver issues.
Vendor ID: Tungsten Graphics, Inc
WebGL Renderer: Blocked for your graphics card because of unresolved driver issues.
windowLayerManagerRemote: false
AzureCanvasBackend: cairo
AzureContentBackend: cairo
AzureFallbackCanvasBackend: none
AzureSkiaAccelerated: 0

Итак, я нашел блочные списки / драйверы заблокированной графики - MozillaWiki, который отмечает:

Драйверы Mesa заносятся в белый список, если версия Mesa не ниже 7.10.3 (см. Ошибку 659560).

Исключение: для 3D-драйвера Nouveau версия Mesa должна быть не ниже 8.0 (см. Ошибку 729817).

Правильно, поэтому libOSMesa.so.6 самом деле не работает с 1.4 Mesa 7.10.2 , но я решил, что все равно пересоберу из исходного кода.

Итак, я получил исходный код 7.10.3 (MesaLib-7.10.3.tar.gz , MesaGLUT-7.10.3.tar.gz) и libdrm-2.4.24 , без упаковки, запустил PKG_CONFIG_PATH=/path/to/Mesa-7.10.3/libdrm-2.4.24 ./configure --enable-gl-osmesa и make , и я действительно получаю файлы общей библиотеки, созданные libOSMesa.so -> libOSMesa.so.7 -> libOSMesa.so.7.10.3 ; и если мы сомневаемся в информации о версии в имени файла, мы могли бы также попробовать это:

$ strings -a lib/libOSMesa.so.7 | grep 'Mesa 7'
%u.%u Mesa 7.10.3
OpenGL ES-CM 1.%d Mesa 7.10.3
OpenGL ES 2.0 Mesa 7.10.3

Хорошо, теперь я подумал, я просто заменю эту библиотеку на webgl.osmesalib:

test.png

... и запустить Firefox с:

LD_LIBRARY_PATH=/path/Mesa-7.10.3/lib LD_PRELOAD=/path/Mesa-7.10.3/lib/libOSMesa.so.7 strace /path/to/firefox -P default -safe-mode -new-instance 2>&1 | grep --color=always 'Mesa.*\.so'

... и strace даже говорит мне библиотека была открыта:

open("/path/Mesa-7.10.3/lib/libOSMesa.so.7", O_RDONLY) = 4

... и все же - я получаю это about:support , так же, как и выше:

test2.png

Итак, это все еще относится к Mesa 7.10.2, независимо от того - и я понятия не имею, почему?

Кстати, я только сейчас понял, что параметр конфигурации webgl.osmesalib может быть чем-то зависшим в моем профиле из более ранних версий, потому что, если я запускаю firefox с профилем по умолчанию и безопасным режимом, все, что я получаю, это gfx.blacklist.suggested-driver-version и gfx.prefer-mesa-llvmpipe :

test3.png

Итак, как мне убедить Firefox попробовать новые библиотеки Mesa вместо старых?

1 ответ1

0

Хорошо, я думаю, что теперь я понимаю: согласно Enable OpenGL 2.0 и WebGL для Intel GMA3150 в Ubuntu, то, что этот новый Firefox видит как драйвер графики, это не какая-то конкретная версия файла, а та, о которой сообщает glxinfo:

$ glxinfo | grep -i "OpenGL version"
flushing GPU caches before/after each draw call
OpenGL version string: 1.4 Mesa 7.10.2

Затем я снова настроил с префиксом /usr (в противном случае по умолчанию используется /usr/local), где Ubuntu Natty хочет, чтобы они хранились; и сделал установку:

./configure --enable-gl-osmesa --prefix=/usr
sudo make install

А потом, на некоторое время, glxinfo вернулся 7.10.3 что и Firefox видел бы; но для одного у меня не хватило места на диске; а для другого теперь после перезагрузки получаю:

$ glxinfo 
name of display: :0.0
Error: couldn't find RGB GLX visual or fbconfig

И это очевидно (графика - Ошибка: не удалось найти RGB GLX visual или fbconfig ubuntu 12.04) требует переписки с xserver-xorg , так что это немного сложнее, чем просто заменить библиотеку, кажется ...


Редактировать: на самом деле получил: Из этой проблемы с драйверами nvidia в 12.2 - glxinfo "не может найти RGB GLX visual", я научился делать:

$ grep -B2 EE /var/log/Xorg.0.log
...
[    37.353] (II) AIGLX: Trying DRI driver /usr/lib32/dri-alternates/i915_dri.so
[    37.353] (II) AIGLX: dlopen of /usr/lib32/dri-alternates/i915_dri.so failed (/usr/lib32/dri-alternates/i915_dri.so: cannot open shared object file: No such file or directory)
[    37.353] (EE) AIGLX: reverting to software rendering
...

Я упомянул, что у меня закончилось место на диске; поэтому я сделал это (после sudo make install Mesa):

sudo mv /usr/lib/dri /media/external/_mv/
sudo ln -s /media/external/_mv/dri /usr/lib/
sudo mv /usr/lib/egl /media/external/_mv/
sudo ln -s /media/external/_mv/egl /usr/lib/

Затем нам действительно нужно перезапустить x-сервер, чтобы он мог "видеть" .so файлы в расположениях символических ссылок при загрузке, что в соответствии с тем, как я могу перезапустить x-сервер из командной строки? - Спросите Ubuntu, для меня был sudo service gdm restart

После этого получил это:

$ LIBGL_DEBUG=verbose glxinfo
name of display: :1.0
libGL: OpenDriver: trying /usr/local/lib/dri/i915_dri.so
libGL error: dlopen /usr/local/lib/dri/i915_dri.so failed (/usr/local/lib/dri/i915_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: i915_dri.so
libGL error: driver pointer missing
....

... и просто сделал:

sudo ln -s /media/external/_mv/dri /usr/local/lib/

... и вуаля:

$ LIBGL_DEBUG=verbose glxinfo
name of display: :1.0
libGL: OpenDriver: trying /usr/local/lib/dri/i915_dri.so
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
flushing GPU caches before/after each draw call
display: :1  screen: 0
direct rendering: Yes
...

... кроме того, даже этого недостаточно для этого Firefox:

test.png

Ах хорошо...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .