Phần mở rộng ngôn ngữ WGSL được hỗ trợ
Thành phần wgslLanguageFeatures
của đối tượng GPU
liệt kê tên của tiện ích ngôn ngữ WGSL được hỗ trợ. Các phần mở rộng ngôn ngữ WGSL được hỗ trợ được bật tự động. Do đó, bạn không cần phải yêu cầu một cách rõ ràng. Danh sách này hiện đang trống nhưng bạn có thể có nhiều danh sách hơn trong tương lai (ví dụ: do-while loops
). Xem vấn đề buổi sáng:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Hỗ trợ thử nghiệm cho Direct3D 11
Nhóm Chromium đang nỗ lực bổ sung tính năng hỗ trợ WebGPU cho Direct3D 11. Giờ đây, bạn có thể thử nghiệm cục bộ bằng cách chạy Chrome trên Windows với cờ dòng lệnh --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Xem vấn đề buổi sáng:1705.
Nhận GPU rời theo mặc định khi dùng nguồn AC
Trên thiết bị macOS có GPU kép, nếu requestAdapter()
được gọi mà không có tuỳ chọn powerPreference
, thì GPU rời sẽ được trả về khi thiết bị của người dùng đang dùng nguồn điện xoay chiều. Nếu không, GPU tích hợp sẽ được trả về. Xem nội dung thay đổi 4499307.
Cải thiện trải nghiệm của nhà phát triển
Cảnh báo mới trong Công cụ cho nhà phát triển
Nếu bạn dùng khoá depth
trong GPUExtend3DDict
, thì một cảnh báo sẽ hiển thị trong Bảng điều khiển công cụ cho nhà phát triển vì khoá chính xác là depthOrArrayLayers
. Hãy xem phần vấn đề về chromium:1440900.
Bạn cũng sẽ nhận được cảnh báo nếu GPUBlendComponent
có cả thành phần rõ ràng và thành phần mặc định. Xem vấn đề buổi sáng:1785.
Mặc dù các lệnh gửi và vẽ có kích thước bằng 0 vẫn hợp lệ, nhưng cảnh báo sẽ khuyến khích nhà phát triển tránh các thao tác này khi có thể. Xem vấn đề buổi sáng:1786.
Thông báo lỗi tốt hơn
Giờ đây, bạn sẽ thấy thông báo lỗi được cải thiện khi sử dụng GPUCommandEncoder
nếu finish()
đã được gọi. Xem vấn đề buổi sáng:1736.
Khi gửi vùng đệm lệnh có đối tượng bị huỷ bỏ, nhãn của vùng đệm lệnh từng được dùng trong submit()
sẽ xuất hiện trong thông báo lỗi. Xem vấn đề buổi sáng:1747.
Phần không hợp lệ của trạng thái stencil độ sâu hiện được chỉ định trong thông báo lỗi khi xác thực depthStencil
. Xem vấn đề buổi sáng:1735.
Thông báo lỗi xác thực minBindingSize
giờ đây sẽ báo cáo nhóm và số lượng liên kết không xác thực được, cũng như vùng đệm. Xem vấn đề bình minh:1604.
Chúng tôi đã cải thiện các thông báo lỗi do phương thức mapAsync()
trả về trên đối tượng GPUBuffer
để trợ giúp nhà phát triển khi gỡ lỗi. Hãy xem ví dụ bên dưới và vấn đề về chromium:1431622.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
Nhãn trong công cụ gỡ lỗi của macOS
Nút bật/tắt gỡ lỗi use_user_defined_labels_in_backend
cho phép bạn chuyển tiếp các nhãn đối tượng đến phần phụ trợ để có thể nhìn thấy các nhãn đó trong các công cụ gỡ lỗi dành riêng cho nền tảng như RenderDoc, PIX hoặc Instruments. Từ giờ trở đi, trải nghiệm gỡ lỗi tốt hơn sẽ được cung cấp trên macOS khi bạn bật tính năng này để gỡ lỗi. Xem vấn đề dawn:1784
![Ảnh chụp màn hình ứng dụng Instruments (Công cụ) trên macOS có các nhãn tuỳ chỉnh của WebGPU.](https://developer.chrome.google.cn/static/blog/new-in-webgpu-115/image/screenshot-instruments-a-75d5272ed4ccf.png?authuser=5&hl=vi)
Ghi lại HLSL nếu biên dịch không thành công
Nút bật/tắt gỡ lỗi dump_shaders
cho phép bạn ghi nhật ký chương trình đổ bóng WGSL và chương trình đổ bóng phụ trợ đã dịch. Từ giờ trở đi, khi bạn bật giao thức này để gỡ lỗi, HLSL sẽ bị kết xuất nếu quá trình biên dịch không thành công. Xem vấn đề dawn:1681
Cập nhật bình minh
Huỷ đặt vùng đệm đỉnh
Việc truyền nullptr
thay vì wgpu::Buffer
đến SetVertexBuffer()
trên wgpu::RenderPassEncoder
hoặc wgpu::RenderBundleEncoder
cho phép bạn huỷ thiết lập vùng đệm đỉnh đã đặt trước đó trong một khe nhất định. Xem vấn đề buổi sáng:1675.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Tệp đính kèm tạm thời
Bạn có thể tạo các tệp đính kèm cho phép các thao tác truyền kết xuất nằm trong bộ nhớ thẻ thông tin, tránh lưu lượng truy cập VRAM và có thể tránh phân bổ VRAM cho kết cấu bằng cách thiết lập mức sử dụng wgpu::TextureUsage::TransientAttachment
. Tính năng này chỉ được hỗ trợ cho Metal và Vulkan. Xem vấn đề bình minh: 1695.
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
Tạo dựng mà không có depot_tools
Tuỳ chọn CMake DAWN_FETCH_DEPENDENCIES
mới cho phép bạn tìm nạp các phần phụ thuộc Dawn bằng cách sử dụng tập lệnh Python đọc tệp DEPS thay vì yêu cầu cài đặt depot_tools
của tất cả dự án phụ thuộc vào nó. Xem nội dung thay đổi 131750.
Tính năng mới trong WebGPU
Danh sách mọi nội dung được đề cập trong loạt bài Có gì mới trong WebGPU.
Chrome 127
- Hỗ trợ thử nghiệm cho OpenGL ES trên Android
- Thuộc tính thông tin GPU
- Cải thiện khả năng tương tác WebAssembly
- Cải thiện lỗi bộ mã hoá lệnh
- Thông tin cập nhật về bình minh
Chrome 126
- Tăng giới hạn maxTextureArrayLayers
- Tối ưu hoá quá trình tải vùng đệm lên cho phần phụ trợ Vulkan
- Cải thiện thời gian biên dịch đổ bóng
- Vùng đệm lệnh mà bạn gửi phải là duy nhất
- Thông tin cập nhật về bình minh
Chrome 125
- Nhóm con (tính năng đang được phát triển)
- Kết xuất thành lát cắt của hoạ tiết 3D
- Thông tin cập nhật về bình minh
Chrome 124
- Kết cấu bộ nhớ chỉ đọc và đọc-ghi
- Hỗ trợ trình chạy dịch vụ và nhân viên dùng chung
- Thuộc tính mới về thông tin của bộ chuyển đổi
- Sửa lỗi
- Thông tin cập nhật về bình minh
Chrome 123
- Hỗ trợ các hàm tích hợp DP4a trong WGSL
- Tham số con trỏ không bị hạn chế trong WGSL
- Đường dẫn cú pháp để loại bỏ tham chiếu của các thành phần tổng hợp trong WGSL
- Tách riêng trạng thái chỉ có thể đọc cho các khía cạnh khuôn mẫu và chiều sâu
- Thông tin cập nhật về bình minh
Chrome 122
- Mở rộng phạm vi tiếp cận bằng chế độ tương thích (tính năng đang trong quá trình phát triển)
- Tăng giới hạn maxVertexAttributes
- Thông tin cập nhật về bình minh
Chrome 121
- Hỗ trợ WebGPU trên Android
- Sử dụng DXC thay vì FXC để biên dịch chương trình đổ bóng trên Windows
- Truy vấn có dấu thời gian khi truyền dữ liệu điện toán và kết xuất
- Điểm truy cập mặc định đến mô-đun chương trình đổ bóng
- Hỗ trợ display-p3 dưới dạng hệ màu GPUExternalTexture
- Thông tin về vùng nhớ khối xếp bộ nhớ
- Thông tin cập nhật về bình minh
Chrome 120
- Hỗ trợ các giá trị dấu phẩy động 16 bit trong WGSL
- Vượt giới hạn
- Thay đổi đối với trạng thái của khuôn hình theo chiều sâu
- Cập nhật thông tin về bộ chuyển đổi
- Định lượng truy vấn có dấu thời gian
- Tính năng dọn dẹp vào mùa xuân
Chrome 119
- Hoạ tiết nổi 32 bit có thể lọc
- định dạng đỉnh unorm10-10-10-2
- định dạng hoạ tiết rgb10a2uint
- Thông tin cập nhật về bình minh
Chrome 118
- Hỗ trợ HTMLImageElement và ImageData trong
copyExternalImageToTexture()
- Hỗ trợ thử nghiệm cho hoạ tiết lưu trữ chỉ đọc-ghi và chỉ đọc
- Thông tin cập nhật về bình minh
Chrome 117
- Huỷ đặt vùng đệm đỉnh
- Huỷ đặt nhóm liên kết
- Tắt tiếng lỗi của quá trình tạo quy trình không đồng bộ khi mất thiết bị
- Thông tin cập nhật về quá trình tạo mô-đun chương trình đổ bóng SPIR-V
- Cải thiện trải nghiệm của nhà phát triển
- Lưu quy trình vào bộ nhớ đệm với bố cục được tạo tự động
- Thông tin cập nhật về bình minh
Chrome 116
- Tích hợp WebCodecs
- Thiết bị bị mất do GPUAdapter
requestDevice()
trả về - Giữ cho video phát mượt mà nếu
importExternalTexture()
được gọi - Tuân thủ quy cách
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật về bình minh
Chrome 115
- Các phần mở rộng ngôn ngữ WGSL được hỗ trợ
- Hỗ trợ thử nghiệm cho Direct3D 11
- Nhận GPU rời theo mặc định khi dùng nguồn AC
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật về bình minh
Chrome 114
- Tối ưu hoá JavaScript
- getCurrentTexture() trên canvas chưa định cấu hình gửi InvalidStateError
- Thông tin cập nhật về WGSL
- Thông tin cập nhật về bình minh