Используете локально собранную libOSMesa для включения WebGL в Firefox?

1203
sdaau

Ну, я хотел попробовать 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 вместо старых?

2
Связанный: [Как включить WebGL для заблокированных графических карт в Firefox] (http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/) sdaau 9 лет назад 0
Что произойдет, если вы попытаетесь установить для `webgl.force-enabled` значение true? Кроме того, ваш драйвер видеокарты также ссылается на недавно созданные библиотеки Mesa? Возможно, вы захотите поделиться с нами тем, какой графический процессор вы используете, и какие драйверы конкретно (это может быть [черный список] (https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#Compiled-in_blacklist) в текущей версии .. .). Breakthrough 9 лет назад 0

1 ответ на вопрос

0
sdaau

Ok, I think I understand now: as per Enable OpenGL 2.0 and WebGL for Intel GMA3150 in Ubuntu, what this new Firefox sees as a Graphics driver, is not some specific file version, but that which is reported by glxinfo:

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

Then I configured again with a prefix /usr (otherwise the default is /usr/local), which is where Ubuntu Natty wants these stored; and did install:

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

And then, just for a while, glxinfo returned 7.10.3, which is what Firefox would have seen; but for one I ran out of disk space; and for another, now after reboot I get:

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

And this apparently (graphics - Error: couldn't find RGB GLX visual or fbconfig ubuntu 12.04) requires messing with xserver-xorg, so it is a bit more complicated than just replacing the library, it seems...


Edit: actually got it: From this Problems with nvidia drivers in 12.2 - glxinfo "couldn't find RGB GLX visual", I learned to do:

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

I mentioned that I ran out of disk space; so I did this (after a sudo make install of 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/ 

Then we actually need to restart x-server, so it can "see" the .so files in the symlink locations upon load, which as per How can I restart x-server from the command line? - Ask Ubuntu, for me was sudo service gdm restart

After that, got this:

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

... and simply did:

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

... and voila:

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

... except, not even this is good enough for this Firefox:

test.png

Ah, well...