Start · Sprachen · JavaScript · Referenz · GPUAdapter.isFallbackAdapter

GPUAdapter.isFallbackAdapter

Eigenschaft

Schreibgeschützter boolescher Wert: <code>true</code>, wenn der <code>GPUAdapter</code> ein Fallback-Adapter ist (z. B. Software-Rendering), sonst <code>false</code>.

seit JavaScript Chrome/Edge 113+ (WebGPU); inzwischen veraltet zug deprecated seit ja Kategorie: webapi

Signatur

GPUAdapter.isFallbackAdapter

Beschreibung

Die Eigenschaft isFallbackAdapter der Schnittstelle GPUAdapter gibt an, ob der Adapter ein Fallback-Adapter ist. Laut WebGPU-Spezifikation ist das ein Adapter, der deutlich langsamer sein kann als ein normaler GPU-Adapter. Dafür erfüllt er Anforderungen wie breite Kompatibilität oder vorhersehbares Verhalten. In der Praxis handelt es sich meist um eine reine Software-Implementierung auf der CPU, etwa SwiftShader oder WARP.

Einen Fallback-Adapter bekommt man, wenn keine geeignete Hardware-GPU verfügbar ist oder wenn man bei navigator.gpu.requestAdapter() ausdrücklich die Option forceFallbackAdapter: true übergibt. Mit isFallbackAdapter kann die Anwendung darauf reagieren. Sie kann zum Beispiel die Renderqualität senken, auf WebGL oder Canvas 2D wechseln oder den Nutzer auf eine eingeschränkte Leistung hinweisen.

Wichtig: Die Spezifikation hat diese Eigenschaft nach GPUAdapterInfo verschoben. Neuer Code sollte adapter.info.isFallbackAdapter verwenden. GPUAdapter.isFallbackAdapter gilt als veraltet und wird von manchen Browsern nicht mehr oder nie angeboten.

Beispiele

Prüfen, ob ein Fallback-Adapter geliefert wurde

const initGPU = async () => {
  if (!navigator.gpu) {
    console.log('WebGPU wird nicht unterstützt.');
    return;
  }
  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    console.log('Kein Adapter verfügbar.');
    return;
  }
  console.log('Fallback-Adapter:', adapter.isFallbackAdapter);
};

initGPU();
Fallback-Adapter: false

Zukunftssicher: zuerst adapter.info, dann die veraltete Eigenschaft

const isFallback = (adapter) =>
  adapter.info?.isFallbackAdapter ?? adapter.isFallbackAdapter ?? false;

const adapter = await navigator.gpu?.requestAdapter();
if (adapter) {
  console.log(isFallback(adapter) ? 'Software-Rendering aktiv' : 'Hardware-GPU aktiv');
}
Hardware-GPU aktiv

Fallback-Adapter erzwingen und Qualität anpassen

const adapter = await navigator.gpu?.requestAdapter({ forceFallbackAdapter: true });

if (!adapter) {
  console.log('Kein Fallback-Adapter verfügbar – Wechsel zu WebGL.');
} else {
  const fallback = adapter.info?.isFallbackAdapter ?? adapter.isFallbackAdapter;
  const settings = fallback
    ? { shadows: false, msaa: 1, resolutionScale: 0.5 }
    : { shadows: true, msaa: 4, resolutionScale: 1 };
  console.log('Render-Einstellungen:', settings);
}
Render-Einstellungen: { shadows: false, msaa: 1, resolutionScale: 0.5 }

Nutzer auf eingeschränkte Leistung hinweisen

const adapter = await navigator.gpu?.requestAdapter({ powerPreference: 'high-performance' });
const device = await adapter?.requestDevice();

if (adapter && (adapter.info?.isFallbackAdapter ?? adapter.isFallbackAdapter)) {
  const hint = document.createElement('p');
  hint.textContent = 'Hinweis: Keine Hardware-Beschleunigung gefunden, die Darstellung kann langsam sein.';
  document.body.prepend(hint);
}

// Wichtig · Fallstricke

  • Veraltet: Die Spezifikation hat die Eigenschaft nach GPUAdapterInfo.isFallbackAdapter verschoben, abrufbar über adapter.info. Chromium unterstützt die neue Variante ab Version 136 und hat die alte als veraltet markiert. Verwenden Sie für ältere Browser eine Abfrage mit ?? als Rückfall (siehe Beispiel 2).
  • Browser-Unterstützung: WebGPU ist nur in sicheren Kontexten (HTTPS) verfügbar. Chrome und Edge unterstützen es ab Version 113. Firefox und Safari haben WebGPU erst später und nicht auf allen Plattformen eingeführt. Prüfen Sie immer zuerst navigator.gpu.
  • requestAdapter() kann null zurückgeben, zum Beispiel wenn forceFallbackAdapter: true gesetzt ist, aber kein Fallback-Adapter existiert. Prüfen Sie das Ergebnis vor dem Zugriff.
  • Ein Fallback-Adapter läuft oft auf der CPU. Rechenintensive Shader, hohe Auflösungen oder MSAA können dann sehr langsam sein. Senken Sie die Last oder bieten Sie einen alternativen Renderpfad an.
  • Der Wert beschreibt nur den Adapter. Er sagt nichts darüber aus, welche Features oder Limits unterstützt werden. Dafür gibt es adapter.features und adapter.limits.