Signatur
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
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();
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)));
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));
// Wichtig · Fallstricke
- Datenschutz und Fingerprinting: Browser dürfen jedes Feld als leere Zeichenkette zurückgeben und tun das oft, vor allem bei
deviceunddescription. 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 stattdesseninfo. Wenn du ältere Browser unterstützen musst, frage zuerstinfoab 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:
isFallbackAdapterersetzt die gleichnamige, inzwischen veraltete Eigenschaft direkt aufGPUAdapter. 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.gpuund obrequestAdapter()nullzurückgibt. - Für ein
GPUDevicestehen dieselben Daten überGPUDevice.adapterInfobereit.