Start · Sprachen · JavaScript · Referenz · GPUDevice.label

GPUDevice.label

Eigenschaft

Lesbarer und beschreibbarer String, der ein <code>GPUDevice</code> benennt, damit es in <code>GPUError</code>-Meldungen, Konsolenwarnungen und Debug-Werkzeugen erkennbar ist.

seit JavaScript WebGPU – Chrome/Edge 113+, Safari 26+, Firefox 141 Kategorie: webapi

Signatur

GPUDevice.label

Beschreibung

Die Eigenschaft label des Interfaces GPUDevice enthält eine frei wählbare Bezeichnung für das logische GPU-Gerät. Diese Bezeichnung hat keinen Einfluss auf das Rendering oder die Berechnung. Sie dient nur zur Fehlersuche: Browser verwenden sie in Validierungsfehlern (GPUValidationError), in Konsolenwarnungen und in GPU-Debugging-Werkzeugen, damit du erkennst, welches Objekt betroffen ist.

Du kannst das Label auf zwei Arten setzen: beim Anfordern des Geräts über den Deskriptor von GPUAdapter.requestDevice({ label: "…" }) oder später durch direkte Zuweisung an device.label. Ohne Angabe ist der Wert ein leerer String "".

Die Eigenschaft stammt aus dem Mixin GPUObjectBase. Deshalb haben praktisch alle WebGPU-Objekte eine gleichartige label-Eigenschaft, etwa GPUBuffer, GPUTexture, GPURenderPipeline oder GPUCommandEncoder. Wenn du deine Objekte einheitlich benennst, lassen sich Fehlermeldungen in größeren Anwendungen deutlich schneller zuordnen.

Rückgabewert

Typ
string
Beschreibung
Die aktuelle Bezeichnung des Geräts. Ohne gesetztes Label ist es ein leerer String "". Zugewiesene Werte werden in einen String umgewandelt.

Beispiele

Label beim Anfordern des Geräts setzen und auslesen

const initGPU = async () => {
  if (!navigator.gpu) {
    throw new Error("WebGPU wird in diesem Browser nicht unterstützt.");
  }
  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    throw new Error("Kein passender GPU-Adapter gefunden.");
  }
  const device = await adapter.requestDevice({ label: "Haupt-Renderer" });
  console.log(device.label);
  return device;
};

initGPU();
Haupt-Renderer

Label nachträglich ändern

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

console.log(JSON.stringify(device.label)); // Standardwert

device.label = "Physik-Simulation (Compute)";
console.log(device.label);
"" Physik-Simulation (Compute)

Label in der Fehlerbehandlung verwenden

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({ label: "Editor-Vorschau" });

// Nicht abgefangene Fehler mit Gerätenamen protokollieren
device.addEventListener("uncapturederror", (event) => {
  console.error(`[${device.label}] ${event.error.message}`);
});

// Geräteverlust mit Label melden
device.lost.then((info) => {
  console.warn(`Gerät "${device.label}" verloren: ${info.reason} – ${info.message}`);
});

// Absichtlich ungültiger Puffer (Größe nicht durch 4 teilbar bei MAP_READ | COPY_DST ist ok,
// aber MAP_READ zusammen mit MAP_WRITE ist ungültig)
device.pushErrorScope("validation");
device.createBuffer({
  label: "Fehlerhafter Puffer",
  size: 16,
  usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.MAP_WRITE
});
const error = await device.popErrorScope();
if (error) {
  console.error(`Validierungsfehler auf ${device.label}:`, error.message);
}
Validierungsfehler auf Editor-Vorschau: … [Buffer "Fehlerhafter Puffer"] …

// Wichtig · Fallstricke

  • Nur zur Fehlersuche: Das Label beeinflusst weder die Leistung noch das Verhalten des Geräts. Speichere darin keine Programmlogik oder vertraulichen Daten, denn es kann in Konsolenausgaben und Fehlermeldungen auftauchen.
  • Format von Fehlermeldungen: Wie und ob das Label in Meldungen erscheint, legt jeder Browser selbst fest. Der genaue Wortlaut von GPUError.message ist nicht standardisiert. Werte ihn also nicht maschinell aus.
  • Typumwandlung: Zugewiesene Werte werden in einen String umgewandelt. device.label = null ergibt deshalb "null" und keinen leeren String.
  • Kompatibilität: WebGPU steht nur in sicheren Kontexten (HTTPS oder localhost) zur Verfügung und wird noch nicht überall unterstützt. Chromium-Browser unterstützen es ab Version 113, Safari ab Version 26. In Firefox ist es seit Version 141 unter Windows aktiviert, auf anderen Plattformen nur teilweise. Prüfe vorher mit if (navigator.gpu), ob die Schnittstelle vorhanden ist.
  • Andere Objekte übernehmen das Label des Geräts nicht. Puffer, Texturen, Pipelines usw. solltest du jeweils einzeln über ihren Deskriptor benennen.