Signatur
Beschreibung
Die Eigenschaft label des Interfaces GPUQueue enthält eine frei wählbare Beschriftung für die Befehlswarteschlange eines GPUDevice. Der Browser zeigt diese Beschriftung in Validierungsfehlern (GPUValidationError), in Konsolenwarnungen und in GPU-Debugging-Werkzeugen an. So erkennt man schneller, welches Objekt ein Problem verursacht hat.
Eine GPUQueue erzeugt man nicht selbst. Man erhält sie über device.queue. Deshalb gibt es zwei Wege, die Beschriftung zu setzen:
- beim Anfordern des Geräts über das Deskriptor-Feld
defaultQueue: { label: "…" }inGPUAdapter.requestDevice(), - nachträglich per Zuweisung
device.queue.label = "…".
Die Eigenschaft gehört zum Mixin GPUObjectBase. Alle WebGPU-Objekte wie GPUBuffer, GPUTexture oder GPURenderPipeline haben daher ein label, das genauso funktioniert. Wenn Sie Ihre Objekte einheitlich beschriften, sind Fehlermeldungen in größeren Render-Engines deutlich leichter zu lesen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | "" | Neue Beschriftung, die man der Eigenschaft zuweist. Andere Werte werden in einen String umgewandelt (z. B. 42 → "42"). |
Rückgabewert
"".Beispiele
Label beim Anfordern des Geräts setzen
if (!navigator.gpu) throw new Error('WebGPU wird nicht unterstützt');
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
label: 'Haupt-Device',
defaultQueue: { label: 'Haupt-Queue' }
});
console.log(device.queue.label);
Label nachträglich zuweisen und auslesen
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
console.log(JSON.stringify(device.queue.label)); // Standard: leer
device.queue.label = 'Render-Queue (Frame-Loop)';
console.log(device.queue.label);
Label in Validierungsfehlern wiederfinden
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
defaultQueue: { label: 'Upload-Queue' }
});
const buffer = device.createBuffer({
label: 'Vertex-Buffer',
size: 16,
usage: GPUBufferUsage.VERTEX // COPY_DST fehlt absichtlich
});
device.pushErrorScope('validation');
device.queue.writeBuffer(buffer, 0, new Float32Array([1, 2, 3, 4]));
const error = await device.popErrorScope();
if (error) {
// Die Meldung enthält die Labels, z. B. [Buffer "Vertex-Buffer"] / [Queue "Upload-Queue"]
console.warn(error.message);
}
// Wichtig · Fallstricke
- Nur zum Debuggen: Das Label hat keinen Einfluss darauf, wie die Warteschlange arbeitet. Es muss nicht eindeutig sein und eignet sich nicht, um Objekte programmatisch zu erkennen.
- Keine sensiblen Daten: Labels können in Fehlermeldungen, Absturzberichten und Debugging-Tools auftauchen. Schreiben Sie keine Nutzerdaten oder geheimen Werte hinein.
- In Produktionsumgebungen können Implementierungen Labels kürzen oder in bestimmten Meldungen weglassen.
- Browser-Unterstützung: WebGPU gibt es nur in sicheren Kontexten (HTTPS/localhost). Es läuft in Chromium-Browsern ab Version 113, in Firefox ab 141 (zunächst unter Windows) und in Safari ab 26. Prüfen Sie vorher mit
if (navigator.gpu), ob WebGPU verfügbar ist. - Pro
GPUDevicegibt es genau eine Warteschlange.device.queueliefert immer dasselbe Objekt, deshalb bleibt ein einmal gesetztes Label erhalten.