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