GPUDevice

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

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

GPUDevice 接口是 WebGPU API 的一部分,它代表一个逻辑 GPU 设备。 它是访问大多数 WebGPU 功能的主要接口。

使用 GPUAdapter.requestDevice() 方法请求 GPUDevice 对象。

EventTarget GPUDevice

实例属性

继承其父级 EventTarget 的属性。

features 实验性 只读

一个 GPUSupportedFeatures 对象,描述设备支持的其他功能。

label 实验性

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

limits 实验性 只读

一个 GPUSupportedLimits 对象,描述设备支持的限制。

lost 实验性 只读

包含一个 Promise,它在设备生命周期内保持挂起状态,并在设备丢失时使用一个 GPUDeviceLostInfo 对象解析。

queue 实验性 只读

返回设备的主要 GPUQueue

实例方法

继承其父级 EventTarget 的方法。

createBindGroup() 实验性

根据 GPUBindGroupLayout 创建一个 GPUBindGroup,它定义了一组要绑定在一起的资源,以及这些资源如何在着色器阶段使用。

createBindGroupLayout() 实验性

创建一个 GPUBindGroupLayout,它定义了相关 GPU 资源(例如将在管道中使用的缓冲区)的结构和目的,并用作创建 GPUBindGroup 的模板。

createBuffer() 实验性

创建一个 GPUBuffer,用于存储在 GPU 操作中使用的原始数据。

createCommandEncoder() 实验性

创建一个 GPUCommandEncoder,用于对要发送到 GPU 的命令进行编码。

createComputePipeline() 实验性

创建一个 GPUComputePipeline,它可以控制计算着色器阶段,并可以在 GPUComputePassEncoder 中使用。

createComputePipelineAsync() 实验性

返回一个 Promise,它在管道可以使用且没有任何阻塞时使用一个 GPUComputePipeline 完成,它可以控制计算着色器阶段,并可以在 GPUComputePassEncoder 中使用。

createPipelineLayout() 实验性

创建一个 GPUPipelineLayout,它定义了管道使用的 GPUBindGroupLayout。 在命令编码期间与管道一起使用的 GPUBindGroup 必须具有兼容的 GPUBindGroupLayout

createQuerySet() 实验性

创建一个 GPUQuerySet,它可以用于记录对通行证(例如遮挡或时间戳查询)的查询结果。

createRenderBundleEncoder() 实验性

创建一个 GPURenderBundleEncoder,它可以用于预先录制命令捆绑包。 这些可以在 GPURenderPassEncoder 中通过 executeBundles() 方法重复使用,只要需要就可以。

createRenderPipeline() 实验性

创建一个 GPURenderPipeline,它可以控制顶点和片段着色器阶段,并可以在 GPURenderPassEncoderGPURenderBundleEncoder 中使用。

createRenderPipelineAsync() 实验性

返回一个 Promise,它在管道可以使用且没有任何阻塞时使用一个 GPURenderPipeline 完成,它可以控制顶点和片段着色器阶段,并可以在 GPURenderPassEncoderGPURenderBundleEncoder 中使用。

createSampler() 实验性

创建一个 GPUSampler,它控制着色器如何变换和过滤纹理资源数据。

createShaderModule() 实验性

从 WGSL 源代码字符串创建一个 GPUShaderModule

createTexture() 实验性

创建一个 GPUTexture,用于存储在 GPU 渲染操作中使用的纹理数据。

destroy() 实验性

销毁设备,阻止对其进行进一步的操作。

importExternalTexture() 实验性

HTMLVideoElement 作为输入,并返回一个包含视频快照的 GPUExternalTexture 包装器对象,该快照可用于 GPU 渲染操作。

popErrorScope() 实验性

从错误范围堆栈中弹出现有的 GPU 错误范围,并返回一个 Promise,它解析为一个对象(GPUInternalErrorGPUOutOfMemoryErrorGPUValidationError),描述在范围内捕获的第一个错误,或者如果未发生错误,则为 null

pushErrorScope() 实验性

将新的 GPU 错误范围推送到设备的错误范围堆栈上,允许您捕获特定类型的错误。

事件

uncapturederror 实验性

当抛出尚未由 GPU 错误范围观察到的错误时触发,以提供一种报告意外错误的方法。 已知的错误情况应使用 pushErrorScope()popErrorScope() 处理。

示例

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 device = await adapter.requestDevice();

  const shaderModule = device.createShaderModule({
    code: shaders,
  });

  //...
}

有关 GPUDevice 用法的更多示例,请参阅上面列出的各个成员页面以及以下演示网站

规范

规范
WebGPU
# gpudevice

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅