Usando um libOSMesa construído localmente para habilitar o WebGL no Firefox?

2

Bem, eu queria tentar verificar o WebGL no Firefox (v38.0.5 no Linux); e percebi que em about:config , webgl.osmesalib foi definido como /usr/lib/libOSMesa.so.6 , enquanto about:support reivindicou:

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

Então, eu encontrei Drivers de gráficos bloqueados / bloqueados - MozillaWiki , que aponta:

Mesa drivers are whitelisted if the Mesa version is at least 7.10.3 (see bug 659560).

Exception: with the Nouveau 3D driver, the Mesa version is required to be at least 8.0 (see bug 729817)

Certo, então libOSMesa.so.6 não faz check-out com 1.4 Mesa 7.10.2 , mas eu pensei em reconstruir da fonte mesmo assim.

Então eu peguei a fonte de 7.10.3 ( MesaLib-7.10.3.tar.gz , MesaGLUT-7.10.3.tar.gz ) e libdrm-2.4.24 , descompactei, executei PKG_CONFIG_PATH=/path/to/Mesa-7.10.3/libdrm-2.4.24 ./configure --enable-gl-osmesa e make e, de fato, eu obtive arquivos de biblioteca compartilhada construídos libOSMesa.so - > libOSMesa.so.7 - > libOSMesa.so.7.10.3; e se duvidarmos das informações da versão no nome do arquivo, poderíamos também tente isso:

$ 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

Bom, agora eu pensei, vou apenas substituir esta biblioteca como webgl.osmesalib :

...eexecuteoFirefoxcom:

LD_LIBRARY_PATH=/path/Mesa-7.10.3/libLD_PRELOAD=/path/Mesa-7.10.3/lib/libOSMesa.so.7strace/path/to/firefox-Pdefault-safe-mode-new-instance2>&1|grep--color=always'Mesa.*\.so'

...estraceaindameinformaqueabibliotecafoiaberta:

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

... e ainda - recebo isso em about:support , o mesmo que acima:

Então,eleaindaestásereferindoàMesa7.10.2,independentemente-eeunãotenhoideiadomotivo?

Btw,acabeideperceberqueaconfiguraçãowebgl.osmesalibdaconfiguraçãopodeseralgopendentenomeuperfildeversõesanteriores,porqueseeuiniciarfirefoxcomoperfilpadrãoeomododesegurança,tudoqueeuobtenhoégfx.blacklist.suggested-driver-versionegfx.prefer-mesa-llvmpipesettings:

Então - como posso persuadir o Firefox a testar as bibliotecas recém-criadas do Mesa, em vez das antigas?

    
por sdaau 22.06.2015 / 03:57

1 resposta

0

Ok, acho que entendo agora: como por Ativar OpenGL 2.0 e WebGL para Intel GMA3150 no Ubuntu , o que este novo Firefox vê como um driver gráfico, não é uma versão específica do arquivo, mas o que é relatado por glxinfo :

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

Então eu configurei novamente com um prefixo /usr (caso contrário o padrão é /usr/local ), que é onde o Ubuntu Natty quer que eles sejam armazenados; e instalou:

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

E então, por um tempo, glxinfo retornou 7.10.3 , que é o que o Firefox teria visto; mas por um eu fiquei sem espaço em disco; e por outro, agora depois de reiniciar eu recebo:

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

E isso aparentemente ( gráficos - Erro : não encontrei RGB GLX visual ou fbconfig ubuntu 12.04 ) requer mexer com xserver-xorg , então é um pouco mais complicado do que apenas substituir a biblioteca, parece ...

Editar: na verdade entendi: A partir deste Problemas com drivers nvidia em 12.2 - glxinfo" não consegui encontrar RGB GLX visual ", eu aprendi a fazer:

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

Mencionei que fiquei sem espaço em disco; então eu fiz isso (depois de um sudo make install do 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/

Então, na verdade, precisamos reiniciar o x-server, para que ele possa "ver" os arquivos .so nos locais de links simbólicos durante o carregamento, conforme , para mim foi sudo service gdm restart

Depois disso, entendi:

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

... e simplesmente:

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

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

... exceto que nem isso é bom o suficiente para esse Firefox:

Ah, bem ...

    
por 22.06.2015 / 05:43