Start · Sprachen · JavaScript · Referenz · GPUAdapter.requestAdapterInfo()

GPUAdapter.requestAdapterInfo()

Methode

Gibt ein Promise zurück, das mit einem <code>GPUAdapterInfo</code>-Objekt erfüllt wird, das Hersteller, Architektur, Gerät und Beschreibung des GPU-Adapters enthält.

seit JavaScript Chrome/Edge 113 (WebGPU), veraltet – in Chrome 131 deprecated seit ja Kategorie: webapi

Signatur

GPUAdapter.prototype.requestAdapterInfo()

Beschreibung

Die Methode requestAdapterInfo() der WebGPU-Schnittstelle GPUAdapter liefert asynchron ein GPUAdapterInfo-Objekt. Darin stehen Angaben zum physischen oder Software-Adapter: vendor (Hersteller), architecture (GPU-Familie), device (herstellerspezifische Gerätekennung) und description (lesbare Beschreibung, z. B. vom Treiber).

Diese Informationen nutzt man vor allem für Diagnose, Logging und Fehlerberichte. Man kann damit auch gezielt Workarounds für bekannte Treiberfehler bestimmter Hersteller einbauen. Für Entscheidungen über Funktionen sollte man sich trotzdem auf adapter.features und adapter.limits verlassen und nicht auf Herstellernamen.

Wichtig: Die Methode ist veraltet. Die WebGPU-Spezifikation hat sie durch die synchrone Eigenschaft GPUAdapter.info ersetzt. Chrome bietet info seit Version 127 an und hat requestAdapterInfo() in Version 131 entfernt. Neuer Code sollte adapter.info verwenden und höchstens für ältere Browser auf requestAdapterInfo() zurückgreifen.

Parameter

Name Typ Default Beschreibung
$unmaskHints Array<string> [] Nur in frühen Entwürfen, inzwischen entfernt. Liste von Feldnamen (z. B. "vendor", "architecture"), deren echte Werte angefordert werden sollten. Das konnte eine Nutzerberechtigung auslösen. Aktuelle Umsetzungen erwarten keine Argumente.

Rückgabewert

Typ
Promise<GPUAdapterInfo>
Beschreibung
Ein Promise, das mit einem GPUAdapterInfo-Objekt erfüllt wird. Es enthält die Eigenschaften vendor, architecture, device und description (alle vom Typ string). Ist ein Wert unbekannt oder wird er aus Datenschutzgründen verborgen, ist er ein leerer String.

Beispiele

Adapter-Informationen abfragen (ältere Browser)

const logAdapterInfo = async () => {
  if (!navigator.gpu) {
    console.warn('WebGPU wird nicht unterstützt.');
    return;
  }
  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    console.warn('Kein passender GPU-Adapter gefunden.');
    return;
  }
  const info = await adapter.requestAdapterInfo();
  console.log(`Hersteller: ${info.vendor}`);
  console.log(`Architektur: ${info.architecture}`);
};

logAdapterInfo();
Hersteller: nvidia Architektur: turing

Zukunftssichere Variante mit Rückfall auf die veraltete Methode

const getAdapterInfo = async (adapter) => {
  // Aktueller Standard: synchrone Eigenschaft
  if (adapter.info) return adapter.info;
  // Rückfall für ältere Chromium-Versionen
  if (typeof adapter.requestAdapterInfo === 'function') {
    return adapter.requestAdapterInfo();
  }
  return null;
};

const adapter = await navigator.gpu?.requestAdapter();
if (adapter) {
  const info = await getAdapterInfo(adapter);
  console.log(info ? `${info.vendor} / ${info.architecture}` : 'Keine Angaben');
}
intel / gen-12lp

Adapterdaten in einen Fehlerbericht aufnehmen

const buildDiagnostics = async () => {
  const adapter = await navigator.gpu.requestAdapter({ powerPreference: 'high-performance' });
  const info = adapter.info ?? (await adapter.requestAdapterInfo());
  return {
    vendor: info.vendor || 'unbekannt',
    architecture: info.architecture || 'unbekannt',
    device: info.device || 'unbekannt',
    description: info.description || 'unbekannt',
    maxTextureSize: adapter.limits.maxTextureDimension2D,
    features: [...adapter.features]
  };
};

buildDiagnostics().then((report) => console.log(JSON.stringify(report, null, 2)));
{ "vendor": "amd", "architecture": "rdna-2", "device": "unbekannt", "description": "unbekannt", "maxTextureSize": 8192, "features": ["texture-compression-bc", "depth-clip-control"] }

// Wichtig · Fallstricke

  • Veraltet und entfernt: In Chrome/Edge ab Version 131 gibt es requestAdapterInfo() nicht mehr. Ein Aufruf löst dann einen TypeError aus („is not a function“). Verwende adapter.info (ab Chrome 127, Firefox und Safari mit WebGPU) und prüfe vor einem Rückfall auf die alte Methode, ob sie existiert.
  • Datenschutz: Browser geben die Werte oft nur grob oder als leeren String zurück, um Fingerprinting zu erschweren. device und description sind häufig leer. Rechne also immer mit leeren Strings.
  • Keine Funktionserkennung über Herstellernamen: Ob eine Funktion verfügbar ist, erkennst du über adapter.features und adapter.limits. Herstellerangaben eignen sich nur für Diagnose oder gezielte Treiber-Workarounds.
  • Sicherer Kontext: WebGPU steht nur über HTTPS bzw. localhost zur Verfügung. navigator.gpu.requestAdapter() kann null liefern. Das musst du vor dem Zugriff abfangen.
  • Der frühere Parameter unmaskHints wurde aus der Spezifikation gestrichen und wird von keinem aktuellen Browser unterstützt.