GPUDevice: createQuerySet() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die createQuerySet() Methode des GPUDevice Interfaces erstellt ein GPUQuerySet, das verwendet werden kann, um die Ergebnisse von Abfragen auf Passes aufzuzeichnen, wie beispielsweise Okklusions- oder Zeitstempelabfragen.

Syntax

js
createQuerySet(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

count

Eine Zahl, die die Anzahl der Abfragen angibt, die vom resultierenden GPUQuerySet verwaltet werden sollen.

label Optional

Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.

type

Ein enumerierter Wert, der den Typ der Abfragen angibt, die vom resultierenden GPUQuerySet verwaltet werden sollen. Mögliche Werte sind:

"occlusion"

Okklusionsabfragen sind auf Render-Passes verfügbar, um die Anzahl der Fragmentproben abzufragen, die alle per-Fragment-Tests für eine Reihe von Zeichnungsbefehlen bestehen (einschließlich Schere, Probemasken, Alpha-to-Coverage, Stencil und Tiefentests). Um eine Okklusionsabfrage auszuführen, muss ein entsprechendes GPUQuerySet als Wert der occlusionQuerySet Descriptor-Eigenschaft angegeben werden, wenn GPUCommandEncoder.beginRenderPass() aufgerufen wird, um einen Render-Pass auszuführen.

"timestamp"

Zeitstempelabfragen ermöglichen Anwendungen, Zeitstempel an ein GPUQuerySet zu schreiben. Um eine Zeitstempelabfrage auszuführen, müssen entsprechende GPUQuerySets innerhalb des Werts der timestampWrites Descriptor-Eigenschaft angegeben werden, wenn GPUCommandEncoder.beginRenderPass() aufgerufen wird, um einen Render-Pass auszuführen, oder GPUCommandEncoder.beginComputePass(), um einen Compute-Pass auszuführen. Alternativ können Sie jederzeit eine einzelne Zeitstempelabfrage ausführen, indem Sie GPUCommandEncoder.writeTimeStamp() mit einem geeigneten GPUQuerySet als Parameter aufrufen.

Hinweis: Die timestamp-query Funktion muss aktiviert sein, um Zeitstempelabfragen verwenden zu können.

Rückgabewert

Eine Instanz eines GPUQuerySet Objekts.

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn createQuerySet() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und ein ungültiges GPUQuerySet Objekt zurückgegeben:

  • count ist kleiner oder gleich 4096.

Beispiele

Der folgende Codeausschnitt erstellt ein GPUQuerySet, das 32 Okklusionsabfrageergebnisse hält:

js
const querySet = device.createQuerySet({
  type: "occlusion",
  count: 32,
});

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createqueryset

Browser-Kompatibilität

Siehe auch