GPUDevice: createQuerySet() 方法

实验性: 这是 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表格

安全上下文: 此功能仅在 安全上下文(HTTPS)中可用,在某些或所有 支持的浏览器 中可用。

createQuerySet() 方法是 GPUDevice 接口的一部分,它用于创建一个 GPUQuerySet 对象,该对象可用于记录对渲染通道进行查询的结果,例如遮挡查询或时间戳查询。

语法

js
createQuerySet(descriptor)

参数

descriptor

一个包含以下属性的对象

count

一个数字,指定由生成的 GPUQuerySet 管理的查询数量。

label 可选

一个字符串,提供一个标签,该标签可用于标识对象,例如在 GPUError 消息或控制台警告中。

type

一个枚举值,指定由生成的 GPUQuerySet 管理的查询类型。可能的值是

"occlusion"

遮挡查询可在渲染通道上使用,以查询通过一组绘制命令(包括裁剪、样本掩码、Alpha 到覆盖、模板和深度测试)的所有逐片段测试的片段样本数量。要运行遮挡查询,必须将适当的 GPUQuerySet 作为 occlusionQuerySet 描述符属性的值提供,在调用 GPUCommandEncoder.beginRenderPass() 以运行渲染通道时。

"timestamp"

时间戳查询允许应用程序将时间戳写入 GPUQuerySet。要运行时间戳查询,必须在调用 GPUCommandEncoder.beginRenderPass() 以运行渲染通道或 GPUCommandEncoder.beginComputePass() 以运行计算通道时,在 timestampWrites 描述符属性的值中提供适当的 GPUQuerySet。或者,您可以通过将适当的 GPUQuerySet 作为参数调用 GPUCommandEncoder.writeTimeStamp() 来随时运行单个时间戳查询。

要使用时间戳查询,timestamp-query 功能 必须在 GPUDevice 中启用。

返回值

一个 GPUQuerySet 对象实例。

验证

调用 createQuerySet() 时,必须满足以下条件,否则将生成 GPUValidationError,并返回一个无效的 GPUQuerySet 对象

  • count 小于或等于 4096。

示例

以下代码片段创建了一个包含 32 个遮挡查询结果的 GPUQuerySet

js
const querySet = device.createQuerySet({
  type: "occlusion",
  count: 32,
});

规范

规范
WebGPU
# dom-gpudevice-createqueryset

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅