Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

GPUCommandEncoder: resolveQuerySet() Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

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 und die Ergebnisse in einen angegebenen GPUBuffer kopiert.

Syntax

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

Parameter

querySet

Ein GPUQuerySet-Objekt, das das aufzulösende Abfrageset darstellt.

firstQuery

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

queryCount

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

destination

Ein GPUBuffer, der den Puffer darstellt, in den die Abfragewerte kopiert werden.

destinationOffset

Eine Zahl, die den Versatz in Bytes vom Beginn des Puffers darstellt, an dem die Abfragewerte geschrieben werden sollen.

Rückgabewert

Keiner (undefined).

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn resolveQuerySet() aufgerufen wird. Andernfalls wird ein GPUValidationError generiert und der GPUCommandEncoder wird ungültig:

  • Der GPUBuffer.usage des destination.buffer muss das GPUBufferUsage.QUERY_RESOLVE-Flag beinhalten.
  • firstQuery ist kleiner als die Anzahl der Abfragen in querySet.
  • firstQuery + queryCount ist kleiner oder gleich der Anzahl der Abfragen in querySet.
  • destinationOffset ist ein Vielfaches von 256.
  • destinationOffset + 8 × queryCount ist kleiner 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

Spezifikation
WebGPU
# dom-gpucommandencoder-resolvequeryset

Browser-Kompatibilität

Siehe auch