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> |
浏览器兼容性
Loading…