The resolveQuerySet()
method of the GPUCommandEncoder
interface encodes a command that resolves a GPUQuerySet
, copying the results into a specified GPUBuffer
.
resolveQuerySet(querySet, firstQuery, queryCount, destination, destinationOffset)
The following criteria must be met when calling resolveQuerySet()
, otherwise a GPUValidationError
is generated and the GPUCommandEncoder
becomes invalid:
- The
destination.buffer
's GPUBuffer.usage
includes the GPUBufferUsage.QUERY_RESOLVE
flag. -
firstQuery
is smaller than the number of queries in querySet
. -
firstQuery
+ queryCount
is smaller than or equal to the number of queries in querySet
. -
destinationOffset
is a multiple of 256. -
destinationOffset
+ 8 × queryCount
is less than or equal to destination.size
.
const queryBuffer = device.createBuffer({
size: 1024,
usage: GPUBufferUsage.QUERY_RESOLVE,
});
const querySet = device.createQuerySet({
type: "timestamp",
count: 32,
});
const commandEncoder = device.createCommandEncoder();
commandEncoder.writeTimestamp(querySet, 0);
commandEncoder.writeTimestamp(querySet, 1);
commandEncoder.resolveQuerySet(
querySet,
0,
16,
queryBuffer,
0,
);