Tích hợp WebCodecs
WebGPU hiển thị một API để tạo "hoạ tiết bên ngoài" mờ các đối tượng từ HTMLVideoElement
đến importExternalTexture()
. Bạn có thể sử dụng các đối tượng này để lấy mẫu khung hình video một cách hiệu quả, theo cách không sao chép trực tiếp từ nguồn dữ liệu mô hình màu YUV.
Tuy nhiên, thông số kỹ thuật ban đầu của WebGPU không cho phép tạo đối tượng GPUExternalTexture
từ đối tượng WebCodecs VideoFrame
. Khả năng này rất quan trọng đối với các ứng dụng xử lý video nâng cao đã sử dụng WebCodecs và muốn tích hợp WebGPU vào quy trình xử lý video. Tính năng tích hợp WebCodecs hỗ trợ thêm việc sử dụng VideoFrame
làm nguồn cho lệnh gọi GPUExternalTexture
và copyExternalImageToTexture()
. Hãy xem ví dụ sau và mục chromestatus.
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Hãy xem mẫu thử nghiệm Tải video lên bằng WebCodecs để thử nghiệm tính năng này.
Thiết bị đã mất bị GPUAdapter requestDevice() trả về
Nếu phương thức requestDevice()
trên GPUAdapter
không thành công vì phương thức này đã được dùng để tạo GPUDevice
, thì phương thức này giờ đây sẽ thực hiện bằng một GPUDevice
ngay lập tức được đánh dấu là bị mất, thay vì trả về lời hứa từ chối bằng null
. Hãy xem phần vấn đề về chromium:1234617.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
Giữ cho quá trình phát lại video mượt mà nếu importExternalTexture() được gọi
Khi importExternalTexture()
được gọi bằng HTMLVideoElement
, quá trình phát video có liên quan sẽ không bị điều tiết nữa khi video không hiển thị trong khung nhìn. Hãy xem phần vấn đề về chromium:1425252.
Tuân thủ quy định
Không bắt buộc phải sử dụng đối số message
trong hàm khởi tạo GPUPipelineError()
. Xem bài viết thay đổi chromium:4613967.
Lỗi sẽ được kích hoạt khi gọi createShaderModule()
nếu nguồn WGSL code
chứa \0
. Xem vấn đề buổi sáng:1345.
Mức chi tiết tối đa mặc định (lodMaxClamp
) được sử dụng khi lấy mẫu kết cấu bằng createSampler()
là 32. Xem phần thay đổi chromium:4608063.
Cải thiện trải nghiệm của nhà phát triển
Một thông báo sẽ xuất hiện trong bảng điều khiển JavaScript Công cụ cho nhà phát triển để nhắc nhà phát triển khi họ đang sử dụng WebGPU trên một nền tảng không được hỗ trợ. Xem bài viết thay đổi chromium:4589369.
Thông báo lỗi xác thực vùng đệm sẽ xuất hiện ngay lập tức trong bảng điều khiển JavaScript Công cụ cho nhà phát triển khi getMappedRange()
không thành công mà không buộc nhà phát triển gửi lệnh đến hàng đợi. Xem bài viết thay đổi chromium:4597950.
Cập nhật bình minh
Nút bật/tắt gỡ lỗi disallow_unsafe_apis
được đổi tên thành allow_unsafe_apis
và đặt mặc định thành tắt. Nút bật/tắt này ngăn chặn các lỗi xác thực trên các điểm truy cập API hoặc các tổ hợp tham số chưa được xem là an toàn. Điều này có thể hữu ích khi gỡ lỗi.
Xem vấn đề buổi sáng:1685.
Thuộc tính source
không dùng nữa wgpu::ShaderModuleWGSLDescriptor
sẽ bị xoá và thay vào đó là code
. Xem phần thay đổi bình minh:130321.
Đã triển khai phương thức wgpu::RenderBundle::SetLabel()
bị thiếu. Xem phần thay đổi bình minh:134502.
Các ứng dụng có thể yêu cầu một phần phụ trợ cụ thể khi nhận bộ chuyển đổi thông qua tuỳ chọn wgpu::RequestAdapterOptionsBackendType
. Hãy xem ví dụ bên dưới và vấn đề dawn:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Phương thức SwapChain::GetCurrentTexture()
mới được thêm vào cùng với các cách sử dụng bổ sung cho kết cấu chuỗi hoán đổi (swapchain) để có thể sử dụng wgpu::Texture
trả về trong các bản sao. Hãy xem ví dụ bên dưới và vấn đề dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
Bài viết này chỉ đề cập đến một số điểm nổi bật chính. Hãy xem danh sách các thay đổi đầy đủ.
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 128
- Thử nghiệm với các nhóm con
- Giảm tình trạng sai lệch độ sâu cho đường và điểm
- Ẩn cảnh báo lỗi chưa thu thập được trong Công cụ cho nhà phát triển nếu preventDefault
- WGSL nội suy lấy mẫu trước tiên rồi
- Thông tin cập nhật về bình minh
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