GPUDevice: createQuerySet()-Methode

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

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

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die createQuerySet()-Methode des GPUDevice-Interfaces erstellt ein GPUQuerySet, das verwendet werden kann, um die Ergebnisse von Abfragen bei Durchläufen aufzuzeichnen, wie zum Beispiel 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 eine Bezeichnung bereitstellt, die verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in GPUError-Nachrichten 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 in Render-Durchläufen verfügbar, um die Anzahl der Fragmentproben zu ermitteln, die alle Tests pro Fragment für einen Satz von Zeichenkommandos (einschließlich Schere, Probenmaske, Alpha-to-Coverage, Stencil- und Tiefentests) bestehen. Um eine Okklusionsabfrage auszuführen, muss ein entsprechendes GPUQuerySet als Wert der occlusionQuerySet-Eigenschaft angegeben werden, wenn GPUCommandEncoder.beginRenderPass() aufgerufen wird, um einen Render-Durchlauf auszuführen.

"timestamp"

Zeitstempelabfragen erlauben es Anwendungen, Zeitstempel in ein GPUQuerySet zu schreiben. Um eine Zeitstempelabfrage auszuführen, müssen entsprechende GPUQuerySets im Wert der timestampWrites-Eigenschaft angegeben werden, wenn GPUCommandEncoder.beginRenderPass() aufgerufen wird, um einen Render-Durchlauf auszuführen, oder GPUCommandEncoder.beginComputePass(), um einen Berechnungsdurchlauf auszuführen. Alternativ kann eine einzelne Zeitstempelabfrage jederzeit durch den Aufruf von GPUCommandEncoder.writeTimeStamp() mit einem entsprechenden GPUQuerySet als Parameter ausgeführt werden.

Hinweis: Die timestamp-query feature muss aktiviert sein, um Zeitstempelabfragen zu verwenden.

Rückgabewert

Eine Instanz des GPUQuerySet-Objekts.

Validierung

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

  • count ist kleiner oder gleich 4096.

Beispiele

Das folgende Beispiel erstellt ein GPUQuerySet, das 32 Okklusions-Abfrageergebnisse hält:

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

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createqueryset

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch