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 |
瀏覽器相容性
載入中…