GPUDevice

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

Giao diện GPUDevice của WebGPU API đại diện cho một thiết bị GPU logic. Đây là giao diện chính mà qua đó phần lớn chức năng WebGPU được truy cập.

Đối tượng GPUDevice được yêu cầu bằng phương thức GPUAdapter.requestDevice().

EventTarget GPUDevice

Thuộc tính thể hiện

Kế thừa các thuộc tính từ giao diện cha, EventTarget.

adapterInfo Read only

Một đối tượng GPUAdapterInfo chứa thông tin nhận dạng về adapter gốc của thiết bị.

features Read only

Một đối tượng GPUSupportedFeatures mô tả các chức năng bổ sung được thiết bị hỗ trợ.

label

Một chuỗi dùng làm nhãn để nhận diện đối tượng, ví dụ trong thông báo GPUError hoặc cảnh báo trên console.

limits Read only

Một đối tượng GPUSupportedLimits mô tả các giới hạn mà thiết bị hỗ trợ.

lost Read only

Chứa một Promise luôn ở trạng thái chờ trong suốt vòng đời của thiết bị và được giải quyết bằng một đối tượng GPUDeviceLostInfo khi thiết bị bị mất.

queue Read only

Trả về GPUQueue chính của thiết bị.

Phương thức thể hiện

Kế thừa các phương thức từ giao diện cha, EventTarget.

createBindGroup()

Tạo một GPUBindGroup dựa trên một GPUBindGroupLayout, mô tả tập hợp tài nguyên được ràng buộc cùng nhau trong một nhóm và cách các tài nguyên đó được dùng trong các giai đoạn shader.

createBindGroupLayout()

Tạo một GPUBindGroupLayout xác định cấu trúc và mục đích của các tài nguyên GPU liên quan như buffer sẽ được dùng trong pipeline, và được dùng làm khuôn mẫu khi tạo GPUBindGroup.

createBuffer()

Tạo một GPUBuffer để lưu dữ liệu thô dùng trong các thao tác GPU.

createCommandEncoder()

Tạo một GPUCommandEncoder, được dùng để mã hóa các lệnh sẽ được gửi tới GPU.

createComputePipeline()

Tạo một GPUComputePipeline có thể điều khiển giai đoạn compute shader và được dùng trong GPUComputePassEncoder.

createComputePipelineAsync()

Trả về một Promise sẽ được hoàn tất với GPUComputePipeline, có thể điều khiển giai đoạn compute shader và được dùng trong GPUComputePassEncoder khi pipeline có thể dùng mà không gây chặn.

createPipelineLayout()

Tạo một GPUPipelineLayout xác định các GPUBindGroupLayout được pipeline sử dụng. Các GPUBindGroup dùng cùng pipeline trong quá trình mã hóa lệnh phải có GPUBindGroupLayout tương thích.

createQuerySet()

Tạo một GPUQuerySet có thể dùng để ghi lại kết quả của các truy vấn trên các pass, chẳng hạn truy vấn occlusion hoặc timestamp.

createRenderBundleEncoder()

Tạo một GPURenderBundleEncoder có thể dùng để ghi sẵn các gói lệnh. Chúng có thể được tái sử dụng trong GPURenderPassEncoder thông qua phương thức executeBundles() nhiều lần tùy cần.

createRenderPipeline()

Tạo một GPURenderPipeline có thể điều khiển các giai đoạn vertex và fragment shader và được dùng trong GPURenderPassEncoder hoặc GPURenderBundleEncoder.

createRenderPipelineAsync()

Trả về một Promise sẽ được hoàn tất với GPURenderPipeline, có thể điều khiển các giai đoạn vertex và fragment shader và được dùng trong GPURenderPassEncoder hoặc GPURenderBundleEncoder khi pipeline có thể dùng mà không gây chặn.

createSampler()

Tạo một GPUSampler, điều khiển cách shader biến đổi và lọc dữ liệu tài nguyên texture.

createShaderModule()

Tạo một GPUShaderModule từ một chuỗi mã nguồn WGSL.

createTexture()

Tạo một GPUTexture để lưu dữ liệu texture dùng trong các thao tác dựng hình GPU.

destroy()

Hủy thiết bị, ngăn không cho thực hiện thêm thao tác nào trên nó.

importExternalTexture()

Lấy một HTMLVideoElement làm đầu vào và trả về một đối tượng bao bọc GPUExternalTexture chứa ảnh chụp của video có thể dùng trong các thao tác dựng hình GPU.

popErrorScope()

Lấy một GPU error scope hiện có ra khỏi ngăn xếp error scope và trả về một Promise được giải quyết thành một đối tượng (GPUInternalError, GPUOutOfMemoryError, hoặc GPUValidationError) mô tả lỗi đầu tiên được bắt trong phạm vi đó, hoặc null nếu không có lỗi.

pushErrorScope()

Đẩy một GPU error scope mới lên ngăn xếp error scope của thiết bị, cho phép bạn bắt các lỗi thuộc một kiểu nhất định.

Sự kiện

uncapturederror

Kích hoạt khi có lỗi được ném ra nhưng không bị một GPU error scope nào quan sát, nhằm cung cấp cách báo cáo các lỗi bất ngờ. Các trường hợp lỗi đã biết nên được xử lý bằng pushErrorScope()popErrorScope().

Ví dụ

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,
  });

  // …
}

Xem các trang thành viên riêng lẻ được liệt kê ở trên và các trang demo sau để có thêm nhiều ví dụ hơn về việc sử dụng GPUDevice:

Đặc tả

Specification
WebGPU
# gpudevice

Tương thích trình duyệt

Xem thêm