GPUSupportedFeatures

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

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

WebGPU APIGPUSupportedFeatures接口是一个类似于Set的对象,它描述了GPUAdapter支持的其他功能。

当前适配器的GPUSupportedFeatures对象可以通过GPUAdapter.features属性访问。

请注意,并非所有支持 WebGPU 的浏览器都提供所有功能,即使底层硬件支持这些功能。这可能是由于底层系统、浏览器或适配器中的限制造成的。例如

  • 底层系统可能无法以与特定浏览器兼容的方式保证功能的公开。
  • 浏览器供应商可能没有找到一种安全的方法来实现对该功能的支持,或者可能还没有开始着手实施。

如果您希望在 WebGPU 应用程序中利用特定附加功能,建议进行彻底的测试。

可用功能

我们没有列出 WebGPU 可用的所有附加功能的精确集合,因为这些功能在不同的实现和物理设备之间会有所不同,并且会随着时间的推移而发生变化。有关列表,请参阅规范中的功能索引

实例属性

以下属性可用于所有只读类似于Set的对象(以下链接指向Set全局对象参考页面)。

size 实验性

返回集合中的值的数量。

实例方法

以下方法可用于所有只读类似于Set的对象(以下链接指向Set全局对象参考页面)。

has() 实验性

返回一个布尔值,表示集合中是否存在具有给定值元素。

values() 实验性

返回一个新的迭代器对象,该对象按插入顺序生成集合中每个元素的

keys() 实验性

values()的别名。

entries() 实验性

返回一个新的迭代器对象,该对象包含集合中每个元素的**[value, value]数组**,顺序为插入顺序。

forEach() 实验性

为集合中存在的每个值(按插入顺序)调用一次提供的回调函数。

示例

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 adapterFeatures = adapter.features;

  // Return the size of the set
  console.log(adapterFeatures.size);

  // Check whether a feature is supported by the adapter
  console.log(adapterFeatures.has("texture-compression-astc"));

  // Iterate through all the set values using values()
  const valueIterator = adapterFeatures.values();
  for (const value of valueIterator) {
    console.log(value);
  }

  // Iterate through all the set values using keys()
  const keyIterator = adapterFeatures.keys();
  for (const value of keyIterator) {
    console.log(value);
  }

  // Iterate through all the set values using entries()
  const entryIterator = adapterFeatures.entries();
  for (const entry of entryIterator) {
    console.log(entry[0]);
  }

  // Iterate through all the set values using forEach()
  adapterFeatures.forEach((value) => {
    console.log(value);
  });

  //...
}

规范

规范
WebGPU
# gpu-supportedfeatures

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅