GPUDevice
GPUDevice
接口是 WebGPU API 的一部分,它代表一个逻辑 GPU 设备。 它是访问大多数 WebGPU 功能的主要接口。
使用 GPUAdapter.requestDevice()
方法请求 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
,它可以控制顶点和片段着色器阶段,并可以在GPURenderPassEncoder
或GPURenderBundleEncoder
中使用。 createRenderPipelineAsync()
实验性-
返回一个
Promise
,它在管道可以使用且没有任何阻塞时使用一个GPURenderPipeline
完成,它可以控制顶点和片段着色器阶段,并可以在GPURenderPassEncoder
或GPURenderBundleEncoder
中使用。 createSampler()
实验性-
创建一个
GPUSampler
,它控制着色器如何变换和过滤纹理资源数据。 createShaderModule()
实验性-
从 WGSL 源代码字符串创建一个
GPUShaderModule
。 createTexture()
实验性-
创建一个
GPUTexture
,用于存储在 GPU 渲染操作中使用的纹理数据。 destroy()
实验性-
销毁设备,阻止对其进行进一步的操作。
importExternalTexture()
实验性-
以
HTMLVideoElement
作为输入,并返回一个包含视频快照的GPUExternalTexture
包装器对象,该快照可用于 GPU 渲染操作。 popErrorScope()
实验性-
从错误范围堆栈中弹出现有的 GPU 错误范围,并返回一个
Promise
,它解析为一个对象(GPUInternalError
、GPUOutOfMemoryError
或GPUValidationError
),描述在范围内捕获的第一个错误,或者如果未发生错误,则为null
。 pushErrorScope()
实验性-
将新的 GPU 错误范围推送到设备的错误范围堆栈上,允许您捕获特定类型的错误。
事件
uncapturederror
实验性-
当抛出尚未由 GPU 错误范围观察到的错误时触发,以提供一种报告意外错误的方法。 已知的错误情况应使用
pushErrorScope()
和popErrorScope()
处理。
示例
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 表仅在浏览器中加载
另请参阅
- The WebGPU API