Signatur
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
"" (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();
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));
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'}`);
// 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 mitinfo.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.featuresundGPUAdapter.limits, nicht überdevice. - 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.infohat die entfernte MethoderequestAdapterInfo()ersetzt. - Die Eigenschaft ist schreibgeschützt. Zuweisungen werden ohne Fehlermeldung ignoriert, im Strict Mode lösen sie einen
TypeErroraus.