Start · Sprachen · JavaScript · Referenz · GPUAdapterInfo.device

GPUAdapterInfo.device

Eigenschaft

Liefert einen herstellerspezifischen Bezeichner des GPU-Adapters als String oder einen leeren String, wenn der Browser ihn nicht preisgibt.

seit JavaScript WebGPU – Chrome/Edge 113+ (über adapter.info ab Ch Kategorie: webapi

Signatur

get GPUAdapterInfo.device

Beschreibung

Die schreibgeschützte Eigenschaft device der Schnittstelle GPUAdapterInfo enthält einen herstellerspezifischen Bezeichner für den physischen oder virtuellen Grafikadapter. Das kann zum Beispiel eine PCI-Geräte-ID sein. Der genaue Inhalt ist nicht standardisiert und hängt vom Hersteller (vendor), vom Treiber und von der Browser-Implementierung ab.

Auf das GPUAdapterInfo-Objekt greifen Sie in aktuellen Browsern über die Eigenschaft GPUAdapter.info zu. Früher gab es dafür die asynchrone Methode GPUAdapter.requestAdapterInfo(), die inzwischen entfernt wurde. Den Adapter selbst liefert navigator.gpu.requestAdapter().

Die Eigenschaft eignet sich vor allem für Diagnose, Logging und Fehlerberichte. Sie können damit etwa in einem Bug-Report festhalten, auf welcher Hardware ein Darstellungsfehler aufgetreten ist. Eine Programmlogik, die fest von bestimmten Werten abhängt, sollten Sie darauf nicht aufbauen: Browser dürfen den Wert aus Datenschutzgründen (Schutz vor Fingerprinting) leer lassen, und das tun sie in der Praxis auch häufig.

Rückgabewert

Typ
string
Beschreibung
Ein herstellerspezifischer Bezeichner des Adapters oder "" (leerer String), wenn er nicht verfügbar ist oder der Browser ihn zurückhält.

Beispiele

Geräte-Bezeichner des Adapters 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 GPU-Adapter gefunden.');
    return;
  }
  const { device } = adapter.info;
  console.log(device || '(kein Geräte-Bezeichner verfügbar)');
};

main();
(kein Geräte-Bezeichner verfügbar) // oder z. B.: 0x2684

Hardware-Infos für einen Fehlerbericht sammeln

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

  const { vendor, architecture, device, description } = adapter.info;
  return {
    supported: true,
    vendor: vendor || 'unbekannt',
    architecture: architecture || 'unbekannt',
    device: device || 'unbekannt',
    description: description || 'unbekannt'
  };
};

collectGpuInfo().then((info) => console.table(info));
{ supported: true, vendor: 'nvidia', architecture: 'lovelace', device: 'unbekannt', description: 'unbekannt' }

Fallback für ältere Chrome-Versionen mit requestAdapterInfo()

const getAdapterInfo = async (adapter) => {
  // Neuere Browser: synchrone Eigenschaft adapter.info
  if (adapter.info) return adapter.info;
  // Ältere Chrome-Versionen (vor 127): asynchrone, inzwischen entfernte Methode
  if (typeof adapter.requestAdapterInfo === 'function') {
    return adapter.requestAdapterInfo();
  }
  return null;
};

const adapter = await navigator.gpu.requestAdapter();
const info = await getAdapterInfo(adapter);
console.log(`Gerät: ${info?.device ?? 'n/a'}`);
Gerät:

// Wichtig · Fallstricke

  • Häufig leer: Um Fingerprinting zu erschweren, liefern Browser oft \"\". Prüfen Sie den Wert deshalb immer, bevor Sie ihn weiterverwenden, zum Beispiel mit info.device || 'unbekannt'.
  • Kein einheitliches Format: Je nach Hersteller und Plattform kann der Wert eine Hex-ID, ein Name oder etwas anderes sein. Vergleiche mit fest eingetragenen Werten sind nicht verlässlich.
  • Nicht für Feature-Erkennung nutzen: Welche Fähigkeiten ein Adapter hat, erfahren Sie über GPUAdapter.features und GPUAdapter.limits, nicht über device.
  • Kompatibilität: WebGPU steht nur in sicheren Kontexten (HTTPS) zur Verfügung. Die Unterstützung ist noch nicht in allen Browsern und auf allen Plattformen vollständig (Firefox anfangs nur unter Windows). GPUAdapter.info hat die entfernte Methode requestAdapterInfo() ersetzt.
  • Die Eigenschaft ist schreibgeschützt. Zuweisungen werden ohne Fehlermeldung ignoriert, im Strict Mode lösen sie einen TypeError aus.