Start · Sprachen · JavaScript · Referenz · GPUComputePassEncoder.label

GPUComputePassEncoder.label

Eigenschaft

Lesbarer und schreibbarer String, der einen <code>GPUComputePassEncoder</code> benennt, damit man ihn in <code>GPUError</code>-Meldungen, Konsolenwarnungen und Debugging-Werkzeugen wiedererkennt.

seit JavaScript WebGPU – Chrome/Edge 113+, Firefox 141+ (Windows), Kategorie: webapi

Signatur

GPUComputePassEncoder.label

Beschreibung

Die Eigenschaft label stammt aus dem Mixin GPUObjectBase und ist deshalb auf allen WebGPU-Objekten vorhanden, auch auf einem GPUComputePassEncoder. Sie enthält einen frei wählbaren String, mit dem der Browser das Objekt in Validierungsfehlern, GPUError-Meldungen und Konsolenwarnungen benennt. Ohne Label steht dort nur eine allgemeine Angabe wie „[ComputePassEncoder]“.

Meist setzt man das Label gleich beim Anlegen über das Deskriptor-Feld label von GPUCommandEncoder.beginComputePass(). Man kann es aber auch danach noch über die Eigenschaft lesen oder überschreiben. Wurde kein Label angegeben, ist der Wert ein leerer String "".

Gut gewählte Labels wie "Partikel-Simulation" oder "Blur-Pass horizontal" helfen bei der Fehlersuche sehr, sobald ein Frame mehrere Compute-Passes nacheinander ausführt. Auch GPU-Debugger und Profiler (z. B. PIX, RenderDoc, Xcode GPU Frame Capture oder die Chrome-Entwicklertools) zeigen diese Namen je nach Implementierung an.

Rückgabewert

Typ
string
Beschreibung
Das aktuelle Label des Compute-Pass-Encoders. Ohne gesetztes Label ist es ein leerer String "". Die Eigenschaft lässt sich lesen und schreiben.

Beispiele

Label beim Anlegen per Deskriptor setzen und auslesen

const adapter = await navigator.gpu?.requestAdapter();
if (!adapter) throw new Error('WebGPU wird nicht unterstützt');
const device = await adapter.requestDevice();

const commandEncoder = device.createCommandEncoder({ label: 'Frame-Encoder' });
const passEncoder = commandEncoder.beginComputePass({
  label: 'Partikel-Simulation'
});

console.log(passEncoder.label);
passEncoder.end();
device.queue.submit([commandEncoder.finish()]);
Partikel-Simulation

Label nachträglich über die Eigenschaft setzen

const device = await (await navigator.gpu.requestAdapter()).requestDevice();
const commandEncoder = device.createCommandEncoder();
const passEncoder = commandEncoder.beginComputePass();

console.log(JSON.stringify(passEncoder.label)); // noch kein Label
passEncoder.label = 'Histogramm-Berechnung';
console.log(passEncoder.label);

passEncoder.end();
device.queue.submit([commandEncoder.finish()]);
"" Histogramm-Berechnung

Label in einer Validierungsfehlermeldung wiederfinden

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

device.pushErrorScope('validation');

const commandEncoder = device.createCommandEncoder();
const passEncoder = commandEncoder.beginComputePass({ label: 'Blur-Pass horizontal' });
// Fehler: dispatch ohne gesetzte Pipeline
passEncoder.dispatchWorkgroups(8, 8);
passEncoder.end();
device.queue.submit([commandEncoder.finish()]);

const error = await device.popErrorScope();
if (error) {
  // Die Meldung nennt den Pass beim Namen, z. B. [ComputePassEncoder "Blur-Pass horizontal"]
  console.warn(error.message);
}
(Browserabhängige Meldung, z. B.) No pipeline set. - While encoding [ComputePassEncoder "Blur-Pass horizontal"].DispatchWorkgroups(8, 8, 1).

// Wichtig · Fallstricke

  • Nur zum Debuggen: Das Label hat keinen Einfluss auf die Ausführung oder die Performance. Es ist ein reines Hilfsmittel zur Fehlersuche und muss nicht eindeutig sein.
  • Uneinheitliche Meldungen: Wie die Fehlermeldungen formuliert und formatiert sind, legt jeder Browser selbst fest. Parse sie deshalb nicht maschinell.
  • Nach end(): Das Label bleibt auch nach passEncoder.end() lesbar. Der Encoder selbst lässt sich dann aber nicht mehr verwenden.
  • Kein Schutz für sensible Daten: Labels können in Konsolenausgaben, Fehlerberichten und Debugging-Werkzeugen auftauchen. Schreib deshalb keine Nutzerdaten oder Geheimnisse hinein.
  • Kompatibilität: WebGPU gibt es nur in einem sicheren Kontext (HTTPS). Chrome und Edge unterstützen es ab Version 113. In Firefox und Safari ist die Unterstützung neuer und hängt teils vom Betriebssystem ab. Prüfe vorher mit navigator.gpu, ob die API vorhanden ist.