这是indexloc提供的服务,不要输入任何密码
Skip to content

Allow GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.MAP_READ buffer usage #4383

@beaufortfrancois

Description

@beaufortfrancois

As raised earlier in #856, it would be great if GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.MAP_READ was valid so that we don't have to create a separate GPUBuffer mapped for reading and use copyBufferToBuffer() after resolveQuerySet().

In other words, this would allow web developers to write code:

const resolveBuffer = myDevice.createBuffer({
  size: 16,
  usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.MAP_READ, // New
});
myCommandEncoder.resolveQuerySet(myQuerySet, 0, 2, resolveBuffer, 0);

instead of:

const resolveBuffer = myDevice.createBuffer({
  size: 16,
  usage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.COPY_SRC,
});
myCommandEncoder.resolveQuerySet(myQuerySet, 0, 2, resolveBuffer, 0);

// Currently, we have to create a separate GPUBuffer mapped for reading and use copyBufferToBuffer()...
const resultBuffer = myDevice.createBuffer({
  size: 16,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
myCommandEncoder.copyBufferToBuffer(resolveBuffer, 0, resultBuffer, 0, 16);

I believe this could work with WebGPU Compat mode as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    apiWebGPU API

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions