Signatur
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
"".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);
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);
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);
}
// 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 = 42ergibt"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.