GPUAdapter: limits 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

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

GPUAdapter 接口的只读属性 limits 返回一个 GPUSupportedLimits 对象,该对象描述了适配器支持的限制。

您应该注意,浏览器不会报告每个 GPU 的确切限制,而是可能会报告不同限制的不同层级值,以减少可用于驱动式指纹识别的唯一信息。例如,某个限制的层级可能是 2048、8192 和 32768。如果您的 GPU 的实际限制是 16384,浏览器仍将报告 8192。

鉴于不同浏览器对此的处理方式不同,并且层级值可能会随时间变化,因此很难提供关于预期限制值的准确说明——建议进行彻底的测试。

一个 GPUSupportedLimits 对象实例。

示例

在下面的代码中,我们查询 GPUAdapter.limits 值的 maxBindGroups,看它是否等于或大于 6。我们的理论示例应用程序理想情况下需要 6 个绑定组,因此如果返回值为 >= 6,我们将 6 添加到 requiredLimits 对象作为最大限制,并使用 GPUAdapter.requestDevice() 请求一个具有该限制要求的设备。

js
async function init() {
  if (!navigator.gpu) {
    throw Error("WebGPU not supported.");
  }

  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    throw Error("Couldn't request WebGPU adapter.");
  }

  const requiredLimits = {};

  // App ideally needs 6 bind groups, so we'll try to request what the app needs
  if (adapter.limits.maxBindGroups >= 6) {
    requiredLimits.maxBindGroups = 6;
  }

  const device = await adapter.requestDevice({
    requiredLimits,
  });

  // …
}

规范

规范
WebGPU
# dom-gpuadapter-limits

浏览器兼容性

另见