Start · Sprachen · JavaScript · Referenz · GPURenderPipeline.label

GPURenderPipeline.label

Eigenschaft

Lesbarer und schreibbarer Text zur Kennzeichnung einer <code>GPURenderPipeline</code>, der in Fehlermeldungen, Konsolenwarnungen und Debugging-Werkzeugen erscheint.

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

Signatur

GPURenderPipeline.label

Beschreibung

Die Eigenschaft label einer GPURenderPipeline enthält einen frei wählbaren String. Er dient nur der Identifikation beim Debuggen: Der Browser verwendet ihn in GPUValidationError-Meldungen, in Konsolenwarnungen und in Werkzeugen wie den WebGPU-Inspektoren. Auf das Rendering selbst hat das Label keinen Einfluss.

Setzen lässt sich das Label auf zwei Wegen: direkt beim Erstellen über die Eigenschaft label im Deskriptor von GPUDevice.createRenderPipeline() bzw. createRenderPipelineAsync() oder nachträglich, indem man pipeline.label einen neuen Wert zuweist.

Gerade in größeren Anwendungen mit vielen Pipelines (Schatten-, Geometrie- oder Nachbearbeitungs-Pässe) sind aussagekräftige Labels sehr hilfreich. Fehlermeldungen wie „Invalid RenderPipeline "Schatten-Pass"“ zeigen dann sofort, welches Objekt betroffen ist.

Rückgabewert

Typ
string
Beschreibung
Das aktuelle Label der Pipeline. Wurde keins gesetzt, ist es ein leerer String "". Die Eigenschaft ist schreibbar.

Beispiele

Label beim Erstellen der Pipeline setzen

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

const module = device.createShaderModule({
  label: 'Dreieck-Shader',
  code: `
    @vertex fn vs(@builtin(vertex_index) i: u32) -> @builtin(position) vec4f {
      var p = array<vec2f, 3>(vec2f(0, 0.5), vec2f(-0.5, -0.5), vec2f(0.5, -0.5));
      return vec4f(p[i], 0, 1);
    }
    @fragment fn fs() -> @location(0) vec4f { return vec4f(1, 0, 0, 1); }
  `
});

const pipeline = device.createRenderPipeline({
  label: 'Dreieck-Pipeline',
  layout: 'auto',
  vertex: { module, entryPoint: 'vs' },
  fragment: { module, entryPoint: 'fs', targets: [{ format }] }
});

console.log(pipeline.label);
Dreieck-Pipeline

Label nachträglich ändern

// pipeline wurde ohne Label erstellt
console.log(JSON.stringify(pipeline.label));

pipeline.label = 'Nachbearbeitung: Bloom';
console.log(pipeline.label);
"" Nachbearbeitung: Bloom

Label in Validierungsfehlern sichtbar machen

device.pushErrorScope('validation');

const kaputt = device.createRenderPipeline({
  label: 'Schatten-Pass',
  layout: 'auto',
  vertex: { module, entryPoint: 'gibtEsNicht' }
});

const error = await device.popErrorScope();
if (error) {
  // Die Meldung enthält typischerweise das Label, z. B. [RenderPipeline "Schatten-Pass"]
  console.warn(error.message);
}
Konsolenwarnung mit Verweis auf [RenderPipeline "Schatten-Pass"] (genauer Wortlaut browserabhängig)

// Wichtig · Fallstricke

  • Das Label ist nur zum Debuggen gedacht. Das Format der Fehlermeldungen ist nicht standardisiert, deshalb sollte kein Programmcode die Meldungstexte auswerten.
  • Labels können in Fehlermeldungen und Absturzberichten auftauchen. Keine sensiblen Daten wie Nutzernamen oder Token hineinschreiben.
  • Wenn createRenderPipelineAsync() mit einem GPUPipelineError fehlschlägt, gibt es kein Pipeline-Objekt. Das Label aus dem Deskriptor kann aber in der Fehlermeldung erscheinen.
  • WebGPU ist nur in sicheren Kontexten (HTTPS) verfügbar und wird noch nicht überall unterstützt. Vor der Nutzung mit if (!navigator.gpu) prüfen, ob es vorhanden ist.
  • Die Eigenschaft stammt aus dem Mixin GPUObjectBase. Alle WebGPU-Objekte (Buffer, Texturen, Shader-Module usw.) haben dasselbe label-Verhalten.