Tính năng mới trong WebGPU (Chrome 140)

François Beaufort
François Beaufort

Ngày xuất bản: 27 tháng 8 năm 2025

Các yêu cầu của thiết bị tiêu thụ bộ chuyển đổi

Theo quy cách WebGPU, một bộ chuyển đổi sẽ được đánh dấu là "đã dùng" khi yêu cầu thiết bị thành công. Do đó, mọi lệnh gọi requestDevice() tiếp theo bằng cách sử dụng cùng một bộ chuyển đổi sẽ dẫn đến một lời hứa bị từ chối. Trước đây, các lệnh gọi này sẽ trả về một thiết bị bị mất khi tạo. Hãy xem vấn đề 415825174.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

Cách viết tắt để sử dụng hoạ tiết khi chế độ xem hoạ tiết được dùng

Giờ đây, bạn có thể sử dụng trực tiếp GPUTexture làm GPUBindingResource để hiển thị cho chương trình đổ bóng để liên kết. Bạn cũng có thể dùng đối tượng này làm GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget và GPURenderPassDepthStencilAttachment view để cải thiện khả năng sử dụng. Cách này đơn giản hơn so với việc sử dụng GPUTextureView để có được một khung hiển thị mặc định. Xem vấn đề 425906323.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel hỗ trợ kết cấu 1D

Giờ đây, bạn có thể lấy mẫu hoạ tiết 1D bằng textureSampleLevel() để nhất quán với hoạ tiết 2D. Điều này cho phép bạn lấy mẫu một kết cấu 1D từ chương trình đổ bóng đỉnh mà trước đây chỉ có thể lấy mẫu từ chương trình đổ bóng mảnh bằng textureSample(). Xem vấn đề 382514673.

Ngừng sử dụng kết cấu bộ nhớ chỉ đọc bgra8unorm

Hiện tại, bạn không nên sử dụng định dạng "bgra8unorm" với các hoạ tiết bộ nhớ chỉ đọc. Quy cách WebGPU không cho phép điều này một cách rõ ràng và việc cho phép trước đây trong Chrome là một lỗi, vì định dạng này chỉ dành cho quyền truy cập chỉ ghi và không thể di chuyển. Xem vấn đề 427681156.

Xoá thuộc tính GPUAdapter isFallbackAdapter

Như đã thông báo trước đây, thuộc tính GPUAdapter isFallbackAdapter hiện đã bị xoá. Thuộc tính này được thay thế bằng thuộc tính GPUAdapterInfo isFallbackAdapter ra mắt trong Chrome 136. Xem ý định xoá.

Thông tin cập nhật về bình minh

Hàm wgpuInstanceGetWGSLLanguageFeatures() được dùng để lấy danh sách các tính năng ngôn ngữ WGSL mà thực thể hỗ trợ. Trước đây, hàm này trả về giá trị WGPUStatus. Hàm này đã được cập nhật để không trả về giá trị vì không thể thất bại. Hãy xem vấn đề 429178774.

Hàm wgpuSurfacePresent() hiện trả về lỗi WGPUStatus nếu vùng hiển thị không có hoạ tiết hiện tại. Xem vấn đề 425930323

Tính năng wgpu::InstanceFeatureName::MultipleDevicesPerAdapter mới cho phép các bộ chuyển đổi tạo nhiều thiết bị mà không bị "tiêu thụ". Hãy xem vấn đề 415825174.

Nút bật/tắt thiết bị dump_shaders_on_failure cho phép bạn chỉ kết xuất chương trình đổ bóng khi có lỗi cho mục đích gỡ lỗi. Tính năng này chỉ áp dụng cho các phần phụ trợ D3, mặc dù có thể mở rộng sang các phần phụ trợ khác trong tương lai. Hãy xem vấn đề 429187478.

Chúng tôi đã thực hiện nhiều thay đổi đối với phần phụ trợ Vulkan để giảm mức hao tổn khi gửi các lượt kết xuất, đặc biệt là để cải thiện hiệu suất trên GPU di động. Ví dụ: caching VkFramebuffers.

Đây chỉ là một số điểm nổi bật chính. Xem danh sách đầy đủ các cam kết.

Tính năng mới trong WebGPU

Danh sách mọi nội dung đã được đề cập trong loạt bài Tính năng mới trong WebGPU.

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113