Wie kann ich WebGL in Chrome unter XP aktivieren?

2

Meine GPU ist eine NVIDIA GeForce 8400 GS. NVIDIA zufolge

OpenGL® 2.1-Optimierungen und Support: Gewährleistet
erstklassige Kompatibilität und Leistung für OpenGL-Anwendungen.

Wenn ich es richtig verstehe, bedeutet das, dass es WebGL unterstützt.

WebGL funktioniert in Firefox sowohl nativ als auch über ANGLE. Wenn ich zu https://get.webgl.org/ gehe , heißt es

Ihr Browser unterstützt WebGL

Auf Chrome heißt es jedoch

Ihr Browser scheint WebGL zu unterstützen, ist jedoch deaktiviert oder nicht verfügbar

Ich habe überprüft, dass Use hardware acceleration when availableaktiviert und chrome://flags/#disable-webgldeaktiviert ist.

Wenn ich gehe chrome://gpu/, sagt Chrome

WebGL: Nicht verfügbar

Festgestellte Probleme

  • Der GPU-Prozess konnte nicht gestartet werden: Der Start des GPU-Prozesses ist fehlgeschlagen.
    Deaktivierte Funktionen: alle
  • Rufen Sie nach einer erfolgreichen Verknüpfung immer glUseProgram auf, um einen Treiberfehler zu vermeiden: 349137
    Angewandte Problemumgehungen: use_current_program_after_successful_link
  • Einige Treiber können das D3D-Gerät in der GPU-Prozess-Sandbox nicht zurücksetzen.
    Angewandte Problemumgehungen: exit_on_context_lost
  • Deaktivieren Sie die Verwendung von Direct3D 11 unter Windows Vista und niedrigeren
    angewandten Problemumgehungen: disable_d3d11
  • Klare Uniformen vor dem ersten Programmeinsatz auf allen Plattformen: 124764 , 349137 Angewandte Problemumgehungen: Klare Uniformen vor dem ersten Programmeinsatz
  • Deaktivieren Sie D3D11 unter älteren nVidia-Treibern: 349929
    Angewandte Problemumgehungen: disable_d3d11
  • Schreiben Sie vec / mat-Konstruktoren immer neu, damit sie konsistent sind: 398694
    Angewandte Problemumgehungen: scalarize_vec_and_mat_constructor_args
  • Raster verwendet einen einzelnen Thread.
    Deaktivierte Funktionen: multiple_raster_threads

Ich habe versucht zu aktivieren chrome://flags/#ignore-gpu-blacklist, aber nichts hat sich geändert.

Mein Betriebssystem ist Windows XP Home SP3. Auf dem gleichen Rechner habe ich auch Lubuntu 15.04, und dort funktioniert es, wenn ich die Hardwarebeschleunigung aktiviere.

Gibt es eine Möglichkeit, es unter XP zu aktivieren?

Oriol
quelle
1
Mögliches Duplikat von Wie kann ich WebGL in meinem Browser aktivieren?
MC10,
@ MC10 Mein Problem ist, dass Chrome anscheinend glaubt, WebGL sei nicht verfügbar. Das wird in der anderen Frage nicht angesprochen.
Oriol
Hmm, versuchen Sie es vielleicht zu überschreiben: productforums.google.com/forum/#!topic/chrome/ou3H55QuO8U
MC10
1
@ Mokubai Es scheint, dass es das Betriebssystem sein kann. Ich habe WinXP. Ich habe versucht, in Lubuntu zu booten, und wenn ich die Hardwarebeschleunigung aktiviere, funktioniert es.
Oriol
1
Ja, möglicherweise wird es in Windows XP nicht mehr unterstützt: productforums.google.com/forum/#!topic/chrome/Uw_ZJwQseKw
MC10

Antworten:

2

GPU-Rendering wurde in XP entfernt, daher ist WebGL theoretisch nicht möglich.

WebGL arbeitete in Build 291943 (Version 39.0.2138.0), wurde jedoch in Build 291976 (Version 39.0.2138.0) entfernt.

Das Changelog enthält das Täter- Commit :

Entfernen Sie die Verwendung von d3dcompiler_43.dll.
Es wurde nur für GPU-Rendering unter Windows XP verwendet, das jetzt auf der schwarzen Liste steht.
BUG = 407177.
URL der Überprüfung: https://codereview.chromium.org/506633002

Tatsächlich enthält Build 291976 nur d3dcompiler_46.dll, aber nicht d3dcompiler_43.dll.

Also hatte ich eine verrückte Idee:

  1. Installieren Sie eine neue Version von Chromium (ohne WebGL)
  2. Ersetzen Sie die d3dcompiler_46.dllDatei d3dcompiler_43.dlldurch Build 291943

    Dadurch wird WebGL bis zum Build 297440 (v40.0.2175.0) aktiviert.

    Es funktioniert jedoch nicht mehr seit Build 297795 (Version 40.0.2176.0).

    Ich schaute auf das Changelog , konnte aber den Schuldigen nicht finden.

  3. Ersetzen Sie die libGLESv2.dllDatei libGLESv2.dlldurch Build 297440

    Dies aktiviert WebGL bis zum Build 303843 (v41.0.2219.0).

    Es funktioniert jedoch nicht mehr, seit Build 303851 (v41.0.2219.0).

    In Anbetracht dieses Änderungsprotokolls scheint der Täter dies zu begehen .

  4. Ersetzen Sie die libEGL.dllDatei libEGL.dlldurch Build 303843

    Dies aktiviert WebGL bis zum Build 337003 (v45.0.2446.0).

    Es funktioniert jedoch nicht mehr, seit Build 337025 (v45.0.2446.0).

    Ich habe mir das Änderungsprotokoll angesehen, aber den Schuldigen nicht gefunden.

  5. WebGL kann durch den Austausch in Build 337025 wieder freigegeben werden chrome.dll, chrome.exe, chrome_child.dll, natives_blob.binund snapshot_blob.binvon Build 337.003.

    Das scheint jedoch zu viel. Ich kann es nicht empfehlen.

Warnung : Wenn Sie einen der oben genannten Schritte ausführen, kann dies zu einem unzuverlässigen Verhalten von Chrom führen. Verwendung auf eigene Gefahr.

In den obigen Schritten bedeutet "Ersetzen [X].dlldurch [Y].dllvon build [N]":

  1. Suchen Sie die [X].dllDatei im Installationsordner von Chromium
  2. Wenn keine solche Datei vorhanden ist, fahren Sie mit Schritt 4 fort
  3. Benennen Sie andernfalls die Datei in um [X].backup.dll
  4. Laden Sie die portable (ZIP) Version des verlinkten herunter build [N]
  5. Extrahieren Sie die [Y].dllDatei aus der heruntergeladenen ZIP-Datei
  6. Benennen Sie die extrahierte Datei in um [X].dll
  7. Verschieben Sie diese Datei in den Installationsordner von Chromium
Oriol
quelle
Wie wäre es mit Windows 7?
Dariush
@Dariush Ich denke, Chrome soll WebGL auf Win7 unterstützen, Sie sollten nichts tun müssen.
Oriol
0

d3dcompiler_46.dll und d3dcompiler_47.dll können unter Verwendung des inoffiziellen Updates KB2584577 von BlackWingCat problemlos unter XP ausgeführt werden.

Google dies: WindowsXP-KB2584577-v0.4-x86-DEU.exe

Wir können auch WineD3D-Wrapper zum Wrappen von Direct3D9Ex verwenden, um Chrome HW Accel für XP zu aktivieren.

Svyat
quelle
Interessant, aber ich habe auf Win10 aktualisiert, daher kann ich nicht testen. Ich denke, Chrome unterstützt XP sowieso nicht mehr.
Oriol
1
Dies ist das, was MSFT und Google von Ihnen wollten, ich halte dies für unfair.
Svyat