GPUDevice
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
WebGPU API 的 GPUDevice
接口表示一个逻辑 GPU 设备。这是访问大部分 WebGPU 功能的主要接口。
使用 GPUAdapter.requestDevice()
方法请求 GPUDevice
对象。
实例属性
从其父接口 EventTarget
继承属性。
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
,会兑现一个GPUComputePipeline
,一旦管线可以在没有任何停滞的情况下使用,其可以控制计算着色阶段,并用于GPUComputePassEncoder
。 createPipelineLayout()
实验性-
创建一个
GPUPipelineLayout
,其定义了管线使用的GPUBindGroupLayout
。在指令编码期间,与管线一起使用的GPUBindGroup
必须具有兼容的GPUBindGroupLayout
。 createQuerySet()
实验性-
创建一个
GPUQuerySet
,其可以用于录制通道中的查询结果,例如例如遮挡或时间戳查询。 createRenderBundleEncoder()
实验性-
创建一个
GPURenderBundleEncoder
,其可用于预先录制指令的 bundle。可以根据需要多次,通过executeBundles()
方法在GPURenderPassEncoder
中重复使用。 createRenderPipeline()
实验性-
创建一个
GPURenderPipeline
,其可以控制顶点或片元着色器阶段,并用于GPURenderPassEncoder
或GPURenderBundleEncoder
。 createRenderPipelineAsync()
实验性-
返回一个
Promise
,会兑现一个GPURenderPipeline
,一旦管线可以在没有任何停滞的情况下使用,其可以控制顶点或片元着色器阶段,并用于GPURenderPassEncoder
或GPURenderBundleEncoder
。 createSampler()
实验性-
创建一个
GPUSampler
,其控制着色器如何转换并过滤纹理资源数据。 createShaderModule()
实验性-
创建一个
GPUShaderModule
,其用 WGSL 源码字符串创建。 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
使用的更多示例,请参阅上面列出的每个成员页面和以下的演示网站:
规范
Specification |
---|
WebGPU # gpudevice |
浏览器兼容性
BCD tables only load in the browser