Signatur
Beschreibung
Die Eigenschaft isFallbackAdapter des Interfaces GPUAdapterInfo gibt an, ob der Adapter, den navigator.gpu.requestAdapter() geliefert hat, ein Ausweichadapter ist. Ein solcher Adapter wird vom Browser bereitgestellt, wenn keine passende Hardware-GPU verfügbar ist oder ausdrücklich danach gefragt wurde. Meist handelt es sich um einen Software-Renderer wie SwiftShader, der auf der CPU läuft.
Ausweichadapter erfüllen zwar die WebGPU-Spezifikation, sind aber deutlich langsamer und haben oft niedrigere Grenzwerte (limits). Mit dieser Eigenschaft können Anwendungen deshalb entscheiden, ob sie rechenintensive Aufgaben (3D-Rendering, ML-Inferenz, Compute-Shader) überhaupt über WebGPU ausführen oder lieber auf WebGL, WebAssembly bzw. eine vereinfachte Darstellung ausweichen.
Das GPUAdapterInfo-Objekt erreichen Sie über die Eigenschaft GPUAdapter.info oder, bei einem bereits erzeugten Gerät, über GPUDevice.adapterInfo. Früher gab es die Eigenschaft direkt als GPUAdapter.isFallbackAdapter. Diese ältere Form ist veraltet und wurde entfernt.
Rückgabewert
true, wenn der Adapter ein Ausweichadapter ist (typischerweise eine Software-Implementierung mit deutlich geringerer Leistung), sonst false.Beispiele
Prüfen, ob der Standard-Adapter ein Ausweichadapter ist
const checkAdapter = async () => {
if (!('gpu' in navigator)) {
console.log('WebGPU wird nicht unterstützt.');
return;
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) {
console.log('Kein Adapter verfügbar.');
return;
}
console.log('Ausweichadapter:', adapter.info.isFallbackAdapter);
};
checkAdapter();
Bei Software-Rendering auf eine schlankere Darstellung umschalten
const initRenderer = async () => {
const adapter = await navigator.gpu?.requestAdapter({
powerPreference: 'high-performance'
});
if (!adapter) return { mode: 'webgl' };
const { isFallbackAdapter, vendor, architecture } = adapter.info;
if (isFallbackAdapter) {
console.warn('Nur Software-GPU verfügbar – reduzierte Qualität wird genutzt.');
return { mode: 'webgpu-low', device: await adapter.requestDevice() };
}
console.log(`Hardware-GPU: ${vendor} (${architecture})`);
return { mode: 'webgpu-high', device: await adapter.requestDevice() };
};
initRenderer().then(({ mode }) => console.log('Modus:', mode));
Ausweichadapter gezielt anfordern (z. B. für Tests)
const testFallback = async () => {
const adapter = await navigator.gpu.requestAdapter({
forceFallbackAdapter: true
});
if (!adapter) {
console.log('Dieser Browser stellt keinen Ausweichadapter bereit.');
return;
}
const device = await adapter.requestDevice();
// Auch über das Gerät erreichbar
console.log(device.adapterInfo.isFallbackAdapter);
};
testFallback();
// Wichtig · Fallstricke
- Veraltete Variante: Die frühere Eigenschaft
GPUAdapter.isFallbackAdapterist veraltet und wurde entfernt. Wenn Sie ältere Browser unterstützen müssen, fragen Sie beide Varianten ab:adapter.info?.isFallbackAdapter ?? adapter.isFallbackAdapter. - Kein Ausweichadapter garantiert: Mit
requestAdapter({ forceFallbackAdapter: true })kann der Rückgabewertnullsein, wenn der Browser keinen Software-Adapter mitbringt. Prüfen Sie den Adapter immer aufnull. - Kein Maß für die Leistung: Ist der Wert
false, heißt das nur, dass es kein Ausweichadapter ist, nicht dass die GPU schnell ist. Für genauere Entscheidungen werten Sie auchadapter.limitsundadapter.featuresaus. - Kompatibilität: WebGPU steht nur in sicheren Kontexten (HTTPS) zur Verfügung. Die Eigenschaft auf
GPUAdapterInfogibt es in Chromium-basierten Browsern ab Version 136. In Firefox und Safari ist die WebGPU-Unterstützung je nach Version und Plattform unterschiedlich, deshalb sollten Sie vorher prüfen, ob die Funktion vorhanden ist. - Datenschutz: Die Informationen in
GPUAdapterInfokönnen zum Fingerprinting beitragen. Browser dürfen einzelne Felder daher verallgemeinern oder leer lassen.