GPUDevice
注意:此功能在 Web Workers 中可用。
GPUDevice 接口是 WebGPU API 的一部分,代表一个逻辑 GPU 设备。这是访问大多数 WebGPU 功能的主要接口。
使用 GPUAdapter.requestDevice() 方法请求一个 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,它可以控制顶点和片段着色器阶段,并用于GPURenderPassEncoder或GPURenderBundleEncoder。 createRenderPipelineAsync()-
返回一个
Promise,该 Promise 将在流水线可以无延迟地使用时,解析为一个GPURenderPipeline,它可以控制顶点和片段着色器阶段,并用于GPURenderPassEncoder或GPURenderBundleEncoder。 createSampler()-
创建一个
GPUSampler,它控制着色器如何转换和过滤纹理资源数据。 createShaderModule()-
从 WGSL 源代码字符串创建
GPUShaderModule。 createTexture()-
创建一个
GPUTexture,用于存储纹理数据以供 GPU 渲染操作使用。 destroy()-
销毁设备,防止对其进行进一步操作。
importExternalTexture()-
接收一个
HTMLVideoElement作为输入,并返回一个GPUExternalTexture包装器对象,其中包含视频的快照,可用于 GPU 渲染操作。 popErrorScope()-
从错误作用域堆栈中弹出当前 GPU 错误作用域,并返回一个
Promise。该 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 |
浏览器兼容性
加载中…