Start · Sprachen · JavaScript · Referenz · GPUComputePipeline.label

GPUComputePipeline.label

Eigenschaft

Lesbare und schreibbare Zeichenkette, die eine <code>GPUComputePipeline</code> benennt, damit sie in <code>GPUError</code>-Meldungen, Konsolenwarnungen und Debugging-Tools erkennbar ist.

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

Signatur

GPUComputePipeline.label

Beschreibung

Die Eigenschaft label des Interfaces GPUComputePipeline enthält einen frei wählbaren Namen für die Compute-Pipeline. WebGPU-Implementierungen verwenden diesen Namen in Validierungsfehlern (GPUValidationError), in Konsolenwarnungen und in GPU-Debugging-Werkzeugen, sodass sich ein fehlerhaftes Objekt sofort zuordnen lässt – statt nur mit einer allgemeinen Meldung wie „Invalid ComputePipeline“.

Das Label lässt sich auf zwei Arten setzen: beim Erzeugen über die Eigenschaft label im Deskriptor von GPUDevice.createComputePipeline() bzw. createComputePipelineAsync(), oder nachträglich durch direkte Zuweisung an pipeline.label. Die Eigenschaft stammt aus dem Mixin GPUObjectBase und ist daher bei allen WebGPU-Objekten gleich aufgebaut.

Das Label beeinflusst weder das Verhalten noch die Leistung der Pipeline. Es ist reine Metainformation. Trotzdem lohnt es sich, in größeren Anwendungen mit vielen Pipelines immer sprechende Namen zu vergeben, zum Beispiel "Partikel-Update" oder "Blur horizontal".

Rückgabewert

Typ
string
Beschreibung
Das aktuelle Label der Pipeline. Wurde keines gesetzt, ist es ein leerer String "".

Beispiele

Label beim Erzeugen der Pipeline setzen

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

const shaderModule = device.createShaderModule({
  label: 'Verdopplungs-Shader',
  code: `
    @group(0) @binding(0) var<storage, read_write> data: array<f32>;
    @compute @workgroup_size(64)
    fn main(@builtin(global_invocation_id) id: vec3u) {
      data[id.x] = data[id.x] * 2.0;
    }
  `,
});

const pipeline = device.createComputePipeline({
  label: 'Verdopplungs-Pipeline',
  layout: 'auto',
  compute: { module: shaderModule, entryPoint: 'main' },
});

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

Label nachträglich zuweisen

const pipeline = await device.createComputePipelineAsync({
  layout: 'auto',
  compute: { module: shaderModule, entryPoint: 'main' },
});

console.log(JSON.stringify(pipeline.label)); // noch leer
pipeline.label = 'Partikel-Update';
console.log(pipeline.label);
"" Partikel-Update

Label in Validierungsfehlern wiederfinden

device.pushErrorScope('validation');

const kaputt = device.createComputePipeline({
  label: 'Blur horizontal',
  layout: 'auto',
  // Einstiegspunkt existiert nicht im Shader
  compute: { module: shaderModule, entryPoint: 'gibtsNicht' },
});

const error = await device.popErrorScope();
if (error) {
  // Die Meldung enthält typischerweise das Label, z. B. [ComputePipeline "Blur horizontal"]
  console.warn(`Fehler in "${kaputt.label}":`, error.message);
}
Fehler in "Blur horizontal": ... [ComputePipeline "Blur horizontal"] ...

// Wichtig · Fallstricke

  • Kompatibilität: WebGPU ist nur in sicheren Kontexten (HTTPS) verfügbar und noch nicht überall ausgeliefert. Chromium-Browser unterstützen es ab Version 113, Firefox und Safari erst in neueren Versionen bzw. nur auf bestimmten Plattformen. Vorher mit if (!navigator.gpu) prüfen.
  • Wie genau das Label in Fehlermeldungen erscheint, legt die Spezifikation nicht fest; das Format der Meldungen ist von Browser zu Browser verschieden. Meldungstexte also nicht maschinell parsen.
  • Die Zuweisung von Nicht-Strings wird in einen String umgewandelt (pipeline.label = 42 ergibt "42").
  • Labels können in Debugging-Werkzeugen und Absturzberichten auftauchen. Deshalb keine sensiblen Daten (Nutzernamen, Tokens) darin ablegen.
  • Auch ungültige Pipelines (nach einem Validierungsfehler) behalten ihr Label. Gerade dann hilft es bei der Fehlersuche.