GPUDevice

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPUDevice 介面是 WebGPU API 的一部分,代表一個邏輯 GPU 裝置。這是訪問大多數 WebGPU 功能的主要介面。

使用 GPUAdapter.requestDevice() 方法請求一個 GPUDevice 物件。

EventTarget 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,它可以控制頂點和片段著色器階段,並用於 GPURenderPassEncoderGPURenderBundleEncoder

createRenderPipelineAsync()

返回一個 Promise,該 Promise 將在流水線可以無延遲地使用時,解析為一個 GPURenderPipeline,它可以控制頂點和片段著色器階段,並用於 GPURenderPassEncoderGPURenderBundleEncoder

createSampler()

建立一個 GPUSampler,它控制著色器如何轉換和過濾紋理資源資料。

createShaderModule()

從 WGSL 原始碼字串建立 GPUShaderModule

createTexture()

建立一個 GPUTexture,用於儲存紋理資料以供 GPU 渲染操作使用。

destroy()

銷燬裝置,防止對其進行進一步操作。

importExternalTexture()

接收一個 HTMLVideoElement 作為輸入,並返回一個 GPUExternalTexture 包裝器物件,其中包含影片的快照,可用於 GPU 渲染操作。

popErrorScope()

從錯誤作用域堆疊中彈出當前 GPU 錯誤作用域,並返回一個 Promise。該 Promise 將解析為一個物件(GPUInternalErrorGPUOutOfMemoryErrorGPUValidationError),描述作用域中捕獲的第一個錯誤,如果沒有發生錯誤則解析為 null

pushErrorScope()

將一個新的 GPU 錯誤作用域推入裝置的錯誤作用域堆疊,允許您捕獲特定型別的錯誤。

事件

uncapturederror

當丟擲未被 GPU 錯誤作用域觀察到的錯誤時觸發,提供一種報告意外錯誤的方法。已知錯誤情況應使用 pushErrorScope()popErrorScope() 進行處理。

示例

js
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

瀏覽器相容性

另見