GPUDevice

可用性有限

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

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

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

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

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

EventTarget GPUDevice

实例属性

继承其父级 EventTarget 的属性。

adapterInfo 只读

一个 GPUAdapterInfo 对象,包含有关设备原始适配器的标识信息。

features 只读

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

label

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

limits 只读

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

lost 只读

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

queue 只读

返回设备的主要 GPUQueue

实例方法

继承其父级 EventTarget 的方法。

createBindGroup()

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

createBindGroupLayout()

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

createBuffer()

创建一个 GPUBuffer,用于存储原始数据以供 GPU 操作使用。

createCommandEncoder()

创建一个 GPUCommandEncoder,用于编码将要提交给 GPU 的命令。

createComputePipeline()

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

createComputePipelineAsync()

返回一个 Promise,该 Promise 将在流水线可以无延迟地使用时,解析为一个 GPUComputePipeline,它可以控制计算着色器阶段,并用于 GPUComputePassEncoder

createPipelineLayout()

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

createQuerySet()

创建一个 GPUQuerySet,可用于记录通道查询的结果,例如遮挡或时间戳查询。

createRenderBundleEncoder()

创建一个 GPURenderBundleEncoder,可用于预录制命令包。这些命令包可以通过 executeBundles() 方法在 GPURenderPassEncoder 中重复使用,次数不限。

createRenderPipeline()

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

createRenderPipelineAsync()

返回一个 Promise,该 Promise 将在流水线可以无延迟地使用时,解析为一个 GPURenderPipeline,它可以控制顶点和片段着色器阶段,并用于 GPURenderPassEncoderGPURenderBundleEncoder

createSampler()

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

createShaderModule()

从 WGSL 源代码字符串创建 GPUShaderModule

createTexture()

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

destroy()

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

importExternalTexture()

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

popErrorScope()

从错误作用域堆栈中弹出当前 GPU 错误作用域,并返回一个 Promise。该 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

浏览器兼容性

另见