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().
Thuộc tính thể hiện
Kế thừa các thuộc tính từ giao diện cha, EventTarget.
adapterInfoRead only-
Một đối tượng
GPUAdapterInfochứa thông tin nhận dạng về adapter gốc của thiết bị. featuresRead only-
Một đối tượng
GPUSupportedFeaturesmô 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
GPUErrorhoặc cảnh báo trên console. limitsRead only-
Một đối tượng
GPUSupportedLimitsmô tả các giới hạn mà thiết bị hỗ trợ. lostRead only-
Chứa một
Promiseluô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ượngGPUDeviceLostInfokhi thiết bị bị mất. queueRead only-
Trả về
GPUQueuechí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
GPUBindGroupdựa trên mộtGPUBindGroupLayout, 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
GPUBindGroupLayoutxá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ạoGPUBindGroup. 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
GPUComputePipelinecó thể điều khiển giai đoạn compute shader và được dùng trongGPUComputePassEncoder. createComputePipelineAsync()-
Trả về một
Promisesẽ được hoàn tất vớiGPUComputePipeline, có thể điều khiển giai đoạn compute shader và được dùng trongGPUComputePassEncoderkhi pipeline có thể dùng mà không gây chặn. createPipelineLayout()-
Tạo một
GPUPipelineLayoutxác định cácGPUBindGroupLayoutđược pipeline sử dụng. CácGPUBindGroupdùng cùng pipeline trong quá trình mã hóa lệnh phải cóGPUBindGroupLayouttương thích. createQuerySet()-
Tạo một
GPUQuerySetcó 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
GPURenderBundleEncodercó thể dùng để ghi sẵn các gói lệnh. Chúng có thể được tái sử dụng trongGPURenderPassEncoderthông qua phương thứcexecuteBundles()nhiều lần tùy cần. createRenderPipeline()-
Tạo một
GPURenderPipelinecó thể điều khiển các giai đoạn vertex và fragment shader và được dùng trongGPURenderPassEncoderhoặcGPURenderBundleEncoder. createRenderPipelineAsync()-
Trả về một
Promisesẽ được hoàn tất vớiGPURenderPipeline, có thể điều khiển các giai đoạn vertex và fragment shader và được dùng trongGPURenderPassEncoderhoặcGPURenderBundleEncoderkhi 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
GPUShaderModuletừ 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
HTMLVideoElementlàm đầu vào và trả về một đối tượng bao bọcGPUExternalTexturechứ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ặcGPUValidationError) mô tả lỗi đầu tiên được bắt trong phạm vi đó, hoặcnullnế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()vàpopErrorScope().
Ví dụ
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> |