Verwendung eines lokal erstellten libOSMesa, um WebGL in Firefox zu aktivieren?

1169
sdaau

Nun, ich wollte versuchen, WebGL unter Firefox (v38.0.5 unter Linux) auszuprobieren. und ich erkennen, dass in about:config, webgl.osmesalibwurde auf /usr/lib/libOSMesa.so.6, während about:supportbehauptet:

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 

Also habe ich Blocklisting / Blocked Graphics Drivers - MozillaWiki gefunden, das Folgendes feststellt:

Mesa-Treiber werden in der Whitelist aufgeführt, wenn die Mesa-Version mindestens 7.10.3 ist (siehe Bug 659560).

Ausnahme: Beim Nouveau 3D-Treiber muss die Mesa-Version mindestens 8.0 sein (siehe Bug 729817).

Richtig, also checkt libOSMesa.so.6es nicht wirklich aus 1.4 Mesa 7.10.2, aber ich dachte, ich würde sowieso von der Quelle neu bauen.

Also bekam ich den Quellcode von 7.10.3 ( MesaLib-7.10.3.tar.gz, MesaGLUT-7.10.3.tar.gz) und libdrm-2.4.24entpackte, lief PKG_CONFIG_PATH=/path/to/Mesa-7.10.3/libdrm-2.4.24 ./configure --enable-gl-osmesaund makeund tatsächlich bekomme ich gemeinsam genutzte Bibliotheksdateien erstellt libOSMesa.so -> libOSMesa.so.7 -> libOSMesa.so.7.10.3; und wenn wir die Versionsinformationen im Dateinamen bezweifeln, könnten wir auch Folgendes versuchen:

$ 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 

Schön, also dachte ich mir, ich werde diese Bibliothek einfach wie folgt ersetzen webgl.osmesalib:

test.png

... und starte Firefox mit:

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'

... und stracesagt mir sogar, dass die Bibliothek geöffnet wurde:

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

... und trotzdem - ich bekomme about:supportdas wie oben:

test2.png

Also bezieht es sich immer noch auf Mesa 7.10.2, und ich habe keine Ahnung, warum?

Übrigens habe ich gerade festgestellt, dass die Konfigurationseinstellung webgl.osmesalibin meinem Profil möglicherweise von früheren Versionen abhängt, denn wenn ich firefoxmit dem Standardprofil und dem abgesicherten Modus beginne, bekomme ich nur Einstellungen gfx.blacklist.suggested-driver-versionund gfx.prefer-mesa-llvmpipeEinstellungen:

test3.png

Wie kann ich also Firefox überreden, die neu errichteten Mesa-Bibliotheken anstelle der alten zu testen?

2
Siehe auch: [So aktivieren Sie WebGL für blockierte Grafikkarten in Firefox] (http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/) sdaau vor 8 Jahren 0
Was passiert, wenn Sie versuchen, "webgl.force-enabled" auf "true" zu setzen? Verweist Ihr Grafikkartentreiber auch auf die neu erstellten Mesa-Bibliotheken? Vielleicht möchten Sie uns mitteilen, welche GPU Sie verwenden und welche Treiber spezifisch sind (es könnte sich in der aktuellen Version um [schwarze Liste] (https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#Compiled-in_blacklist) handeln. .). Breakthrough vor 8 Jahren 0

1 Antwort auf die Frage

0
sdaau

Ok, ich glaube, ich verstehe es jetzt: Was EnGLEN OpenGL 2.0 und WebGL für Intel GMA3150 in Ubuntu bedeutet, was dieser neue Firefox als Grafiktreiber sieht, ist keine bestimmte Dateiversion, sondern die, die von gemeldet wird glxinfo:

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

Dann habe ich wieder ein Präfix konfiguriert /usr(sonst ist der Standard /usr/local), wo Ubuntu Natty diese gespeichert haben möchte; und installierte:

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

Und dann, nur für eine Weile, glxinfozurückgekehrt 7.10.3, was Firefox gesehen hätte; aber zum einen hatte ich keinen Speicherplatz mehr; und zum anderen bekomme ich jetzt nach dem Neustart:

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

Und anscheinend ( Grafik - Fehler: RGB GLX-Bild oder fbconfig ubuntu 12.04 nicht gefunden ) erfordert ein Durcheinander xserver-xorg, also ist es etwas komplizierter als nur das Ersetzen der Bibliothek, es scheint ...


Edit: eigentlich verstanden: Von diesem Problem mit nvidia-Treibern in 12.2 - glxinfo "RGB GLX konnte nicht gefunden werden", habe ich gelernt:

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

Ich erwähnte, dass mir der Speicherplatz ausgeht. also tat ich das (nach einem sudo make installvon 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/ 

Dann müssen wir x-server tatsächlich neu starten, damit er beim Laden die .so-Dateien in den Symlink-Speicherorten "sehen" kann. Wie kann ich x-server von der Kommandozeile aus neu starten? - Fragen Sie Ubuntu, für mich warsudo service gdm restart

Danach bekam ich folgendes:

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

... und einfach gemacht:

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

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

... außer das ist auch nicht gut genug für diesen Firefox:

test.png

Ah, gut...