Signatur
Beschreibung
Die Eigenschaft architecture eines GPUAdapterInfo-Objekts nennt die Familie oder Klasse von Grafikprozessoren, zu der der physische Adapter gehört. Übliche Werte sind z. B. "turing" oder "ampere" (NVIDIA), "rdna-2" oder "rdna-3" (AMD), "gen-12lp" oder "xe" (Intel) und "common-3" (Apple). Die Werte sind kleingeschrieben und enthalten keine Leerzeichen. Die Spezifikation legt aber nicht fest, welche Werte vorkommen dürfen. Verlass dich also auf keine feste Liste.
An das GPUAdapterInfo-Objekt kommst du in aktuellen Browsern synchron über GPUAdapter.info oder über GPUDevice.adapterInfo. Die frühere asynchrone Methode GPUAdapter.requestAdapterInfo() ist veraltet und wurde entfernt.
Nützlich ist der Wert vor allem für Diagnose und Telemetrie, also für Fehlerberichte, Logs und Supportanfragen. Außerdem kannst du damit gezielt bekannte Treiber- oder Hardwareprobleme umgehen. Welche Funktionen tatsächlich unterstützt werden, prüfst du dagegen mit adapter.features und adapter.limits, nicht über den Architekturnamen.
Um Fingerprinting zu erschweren, darf der Browser den Wert gröber zusammenfassen oder ganz weglassen. Dann erhältst du einen leeren String. Dein Code muss mit "" immer zurechtkommen.
Rückgabewert
"ampere". Ist der Wert unbekannt oder hält der Browser ihn aus Datenschutzgründen zurück, wird "" (leerer String) zurückgegeben.Beispiele
Architektur des Standard-Adapters auslesen
const zeigeArchitektur = async () => {
if (!('gpu' in navigator)) {
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 { vendor, architecture } = adapter.info;
console.log(`Hersteller: ${vendor || 'unbekannt'}`);
console.log(`Architektur: ${architecture || 'unbekannt'}`);
};
zeigeArchitektur();
Diagnosebericht für einen Fehlerreport erstellen
const erstelleGpuBericht = async () => {
const adapter = await navigator.gpu?.requestAdapter({ powerPreference: 'high-performance' });
if (!adapter) return { webgpu: false };
const device = await adapter.requestDevice();
// GPUDevice.adapterInfo liefert dieselben Daten wie adapter.info
const info = device.adapterInfo ?? adapter.info;
return {
webgpu: true,
vendor: info.vendor,
architecture: info.architecture,
device: info.device,
description: info.description,
maxTextureSize: adapter.limits.maxTextureDimension2D
};
};
erstelleGpuBericht().then((bericht) => console.log(JSON.stringify(bericht, null, 2)));
Workaround nur für eine bestimmte Architektur aktivieren
// Angenommen: Auf älteren Intel-GPUs ist ein bestimmter Shader-Pfad langsam
const PROBLEM_ARCHITEKTUREN = new Set(['gen-9', 'gen-11']);
const waehleRenderPfad = async () => {
const adapter = await navigator.gpu.requestAdapter();
const { vendor, architecture } = adapter.info;
const brauchtWorkaround =
vendor === 'intel' && PROBLEM_ARCHITEKTUREN.has(architecture);
// Leerer String => kein Workaround, Standardpfad verwenden
return brauchtWorkaround ? 'fallback-shader' : 'standard-shader';
};
waehleRenderPfad().then((pfad) => console.log('Renderpfad:', pfad));
// Wichtig · Fallstricke
- Leerer String ist normal: Browser dürfen den Wert aus Datenschutzgründen (Fingerprinting) weglassen oder gröber angeben. Prüfe deshalb immer mit Fallback, z. B.
architecture || 'unbekannt'. - Keine Grundlage für Funktionsprüfung: Ob eine Fähigkeit vorhanden ist, prüfst du über
adapter.features.has(...)undadapter.limits. Architekturnamen sind kein verlässlicher Hinweis auf unterstützte Funktionen. - Keine feste Werteliste: Die Bezeichnungen hängen von Hersteller, Browser und Treiber ab und können sich ändern. Vergleiche nur mit bekannten Werten und behandle alle anderen neutral.
- Veraltete API:
adapter.requestAdapterInfo()(asynchron) wurde durch die synchrone Eigenschaftadapter.infoersetzt (Chrome 127+). Für ältere Browser kannst du ein Feature-Detection-Fallback einbauen. - Kompatibilität: WebGPU steht nur in sicheren Kontexten (HTTPS) zur Verfügung, im Fenster und in Web Workern. Die Unterstützung ist noch nicht auf allen Plattformen vollständig. Firefox unterstützt WebGPU zunächst nur unter Windows, Linux-Unterstützung ist teilweise noch experimentell. Prüfe vorher auf
navigator.gpu.