GPUDevice: features 属性

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

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

featuresGPUDevice 接口的只读属性,它返回一个 GPUSupportedFeatures 对象,该对象描述了设备支持的额外功能。仅在创建设备期间请求的功能(即,当调用 GPUAdapter.requestDevice() 时)才会包含在内。

注意: 并非所有支持 WebGPU 的浏览器都支持所有功能,即使底层硬件支持这些功能。有关更多详细信息,请参见 GPUAdapter.features

一个 GPUSupportedFeatures 对象实例。这是一种 类似集合 的对象。

示例

在以下代码中,我们检查 GPUAdapter 是否具有可用的 texture-compression-astc 功能。如果有,我们将其推送到 requiredFeatures 数组中,并使用 GPUAdapter.requestDevice() 请求具有该功能要求的设备。

然后,我们将 GPUDevice.features 集合中的所有项记录到控制台。此集合应该只包含一个项 - texture-compression-astc - 因为这是创建设备时请求的唯一功能。

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 requiredFeatures = [];

  if (adapter.features.has("texture-compression-astc")) {
    requiredFeatures.push("texture-compression-astc");
  }

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

  device.features.forEach((value) => {
    console.log(value);
  });

  // ...
}

规范

规范
WebGPU
# dom-gpudevice-features

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅