Start · Sprachen · JavaScript · Referenz · GPUQueue.label

GPUQueue.label

Eigenschaft

Lesbarer und schreibbarer String, der eine <code>GPUQueue</code> kennzeichnet, damit man sie in <code>GPUError</code>-Meldungen, Konsolenwarnungen und Debugging-Tools wiederfindet.

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

Signatur

GPUQueue.label

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: "…" } in GPUAdapter.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

Typ
string
Beschreibung
Die aktuelle Beschriftung der Warteschlange. Wurde nichts gesetzt, ist das ein leerer String "".

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);
Haupt-Queue

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);
"" Render-Queue (Frame-Loop)

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);
}
(browserabhängige Meldung, die „Vertex-Buffer“ und/oder „Upload-Queue“ nennt)

// 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 GPUDevice gibt es genau eine Warteschlange. device.queue liefert immer dasselbe Objekt, deshalb bleibt ein einmal gesetztes Label erhalten.