Start · Sprachen · JavaScript · Referenz · GPUAdapter.info

GPUAdapter.info

Eigenschaft

Schreibgeschützte Eigenschaft, die ein <code>GPUAdapterInfo</code>-Objekt mit identifizierenden Informationen über den GPU-Adapter (Hersteller, Architektur, Gerät, Beschreibung) liefert.

seit JavaScript Chrome/Edge 114+ (als Eigenschaft ab 127), Firefox Kategorie: webapi

Signatur

GPUAdapter.info

Beschreibung

Die Eigenschaft info eines GPUAdapter gibt ein GPUAdapterInfo-Objekt zurück. Es beschreibt den physischen oder softwarebasierten Grafikadapter, den der Browser für WebGPU ausgewählt hat. Wichtige Felder sind vendor, architecture, device und description. In neueren Implementierungen kommen außerdem subgroupMinSize, subgroupMaxSize und isFallbackAdapter hinzu.

Nützlich ist das vor allem für Diagnose, Telemetrie und gezielte Workarounds. Du kannst damit etwa Fehlerberichte um die GPU-Kennung ergänzen, bekannte Treiberfehler bestimmter Hersteller umgehen oder bei einem Software-Adapter eine leichtere Rendering-Stufe wählen. Die Eigenschaft wird synchron gelesen, nachdem navigator.gpu.requestAdapter() einen Adapter geliefert hat.

Der Datenschutz spielt hier eine große Rolle. Browser geben die Werte absichtlich nur grob oder gar nicht heraus, damit sich Nutzer nicht per Fingerprinting wiedererkennen lassen. Leere Zeichenketten sind deshalb ein normaler Rückgabewert und kein Fehler. Deine Anwendung sollte nie darauf angewiesen sein, dass hier bestimmte Werte stehen.

Die Eigenschaft ersetzt die ältere asynchrone Methode GPUAdapter.requestAdapterInfo(). Diese Methode ist veraltet und wurde aus Chrome entfernt.

Rückgabewert

Typ
GPUAdapterInfo
Beschreibung
Ein Objekt mit den schreibgeschützten Feldern vendor, architecture, device und description (jeweils string, eventuell leer). Neuere Implementierungen liefern zusätzlich subgroupMinSize, subgroupMaxSize (number) und isFallbackAdapter (boolean).

Beispiele

Adapter-Informationen auslesen

const main = async () => {
  if (!navigator.gpu) {
    console.log('WebGPU wird nicht unterstützt.');
    return;
  }
  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    console.log('Kein passender Adapter gefunden.');
    return;
  }
  const { vendor, architecture, device, description } = adapter.info;
  console.log(`Hersteller: ${vendor || '(unbekannt)'}`);
  console.log(`Architektur: ${architecture || '(unbekannt)'}`);
  console.log(`Gerät: ${device || '(unbekannt)'}`);
  console.log(`Beschreibung: ${description || '(unbekannt)'}`);
};

main();
Hersteller: nvidia Architektur: ampere Gerät: (unbekannt) Beschreibung: (unbekannt)

GPU-Daten an einen Fehlerbericht anhängen

const collectGpuDiagnostics = async () => {
  const adapter = await navigator.gpu?.requestAdapter();
  if (!adapter) return { webgpu: false };

  const { info } = adapter;
  return {
    webgpu: true,
    vendor: info.vendor,
    architecture: info.architecture,
    // Feld existiert nur in neueren Browsern
    fallback: info.isFallbackAdapter ?? null
  };
};

collectGpuDiagnostics().then((diag) => console.log(JSON.stringify(diag)));
{"webgpu":true,"vendor":"intel","architecture":"gen-12lp","fallback":false}

Qualitätsstufe je nach Adapter wählen (mit Rückfall auf die alte API)

const getAdapterInfo = async (adapter) =>
  // Ältere Chrome-Versionen kannten nur die asynchrone Methode
  adapter.info ?? (await adapter.requestAdapterInfo?.()) ?? {};

const pickQuality = async () => {
  const adapter = await navigator.gpu?.requestAdapter({ powerPreference: 'high-performance' });
  if (!adapter) return 'webgl-fallback';

  const info = await getAdapterInfo(adapter);
  if (info.isFallbackAdapter) return 'low';
  if (['nvidia', 'amd', 'apple'].includes(info.vendor)) return 'high';
  return 'medium';
};

pickQuality().then((q) => console.log('Qualitätsstufe:', q));
Qualitätsstufe: high

// Wichtig · Fallstricke

  • Datenschutz und Fingerprinting: Browser dürfen jedes Feld als leere Zeichenkette zurückgeben und tun das oft, vor allem bei device und description. Verlasse dich also nie auf bestimmte Werte. Ein Werte-Abgleich eignet sich nur für optionale Workarounds.
  • Veraltete API: GPUAdapter.requestAdapterInfo() ist veraltet und aus Chrome entfernt worden. Nutze stattdessen info. Wenn du ältere Browser unterstützen musst, frage zuerst info ab und rufe die alte Methode nur als Rückfall auf (siehe drittes Beispiel).
  • Ungültige Werte: Die Werte sind nicht standardisiert. Sie sind klein geschrieben und können sich je nach Browser, Treiber und Browserversion unterscheiden. Vergleiche sie deshalb nicht streng mit fest eingetragenen Gerätenamen.
  • Neue Felder: isFallbackAdapter ersetzt die gleichnamige, inzwischen veraltete Eigenschaft direkt auf GPUAdapter. Prüfe mit ??, ob die neuen Felder vorhanden sind.
  • Kompatibilität: WebGPU gibt es nur in sicheren Kontexten (HTTPS oder localhost). Firefox und Safari unterstützen es erst in neueren Versionen und nicht auf jeder Plattform. Prüfe daher immer navigator.gpu und ob requestAdapter() null zurückgibt.
  • Für ein GPUDevice stehen dieselben Daten über GPUDevice.adapterInfo bereit.