GPUCommandEncoder: resolveQuerySet() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPUCommandEncoder 介面的 resolveQuerySet() 方法會編碼一個用於解析 GPUQuerySet 的命令,並將結果複製到一個指定的 GPUBuffer 中。

語法

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

引數

querySet

一個表示要解析的查詢集的 GPUQuerySet 物件。

firstQuery

要複製到緩衝區的第一條查詢值(索引號)。

queryCount

firstQuery 開始,要複製到緩衝區中的查詢數量。

destination

一個表示要將查詢值複製到的緩衝區的 GPUBuffer

destinationOffset

一個數字,表示從緩衝區開始處偏移多少位元組來寫入查詢值。

返回值

無 (Undefined)。

驗證

呼叫 resolveQuerySet() 時必須滿足以下條件,否則將生成 GPUValidationError,並且 GPUCommandEncoder 將失效。

  • destination.bufferGPUBuffer.usage 包含 GPUBufferUsage.QUERY_RESOLVE 標誌。
  • firstQuery 小於 querySet 中的查詢總數。
  • firstQuery + queryCount 小於或等於 querySet 中的查詢總數。
  • destinationOffset 是 256 的倍數。
  • destinationOffset + 8 × queryCount 小於或等於 destination.size

示例

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

// …

規範

規範
WebGPU
# dom-gpucommandencoder-resolvequeryset

瀏覽器相容性

另見