GPUCommandEncoder: resolveQuerySet() 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 resolveQuerySet()-Methode des GPUCommandEncoder-Interfaces kodiert einen Befehl, der ein GPUQuerySet auflöst, indem die Ergebnisse in einen angegebenen GPUBuffer kopiert werden.

Syntax

js
resolveQuerySet(querySet, firstQuery, queryCount, destination, destinationOffset)

Parameter

querySet

Ein GPUQuerySet-Objekt, das das aufzulösende Abfrageset repräsentiert.

firstQuery

Die Indexnummer des ersten Abfragewerts, der in den Puffer kopiert werden soll.

queryCount

Die Anzahl der Abfragen, die ab firstQuery in den Puffer kopiert werden sollen.

destination

Ein GPUBuffer, der den Puffer repräsentiert, in den die Abfragewerte kopiert werden sollen.

destinationOffset

Eine Zahl, die den Versatz in Bytes vom Anfang des Puffers angibt, an dem mit dem Schreiben der Abfragewerte begonnen wird.

Rückgabewert

Keiner (Undefined).

Validierung

Die folgenden Kriterien müssen beim Aufruf von resolveQuerySet() erfüllt sein, andernfalls wird ein GPUValidationError erzeugt und der GPUCommandEncoder wird ungültig:

  • Das destination.buffer's GPUBuffer.usage enthält das GPUBufferUsage.QUERY_RESOLVE-Flag.
  • firstQuery ist kleiner als die Anzahl der Abfragen in querySet.
  • firstQuery + queryCount ist kleiner als oder gleich der Anzahl der Abfragen in querySet.
  • destinationOffset ist ein Vielfaches von 256.
  • destinationOffset + 8 × queryCount ist kleiner als oder gleich destination.size.

Beispiele

js
// …

const queryBuffer = device.createBuffer({
  size: 1024,
  usage: GPUBufferUsage.QUERY_RESOLVE,
});

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

// …

const commandEncoder = device.createCommandEncoder();

// Write timestamps to querySet
commandEncoder.writeTimestamp(querySet, 0);
// …
commandEncoder.writeTimestamp(querySet, 1);
// etc.

// …

commandEncoder.resolveQuerySet(
  querySet,
  0, // First query to write
  16, // Number of queries to count
  queryBuffer,
  0, // Buffer offset
);

// …

Spezifikationen

Specification
WebGPU
# dom-gpucommandencoder-resolvequeryset

Browser-Kompatibilität

Siehe auch