Tích hợp WebCodecs
WebGPU hiển thị một API để tạo các đối tượng "bề mặt bên ngoài" mờ từ HTMLVideoElement
thông qua 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ả, có thể là theo cách không sao chép trực tiếp từ dữ liệu mô hình màu YUV nguồn.
Tuy nhiên, thông số kỹ thuật WebGPU ban đầu không cho phép tạo đối tượng GPUExternalTexture
từ các đố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 để dùng thử.
Thiết bị bị mất do GPUAdapter requestDevice() trả về
Nếu phương thức requestDevice()
trên GPUAdapter
không thành công vì đã được dùng để tạo GPUDevice
, thì phương thức này hiện sẽ thực hiện bằng GPUDevice
được đánh dấu ngay là bị mất, thay vì trả về một lời hứa từ chối bằng null
. Xem vấn đề 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 liên kết sẽ không bị điều tiết nữa khi video không hiển thị trong khung nhìn. Xem vấn đề chromium:1425252.
Tuân thủ quy cách
Bạn không bắt buộc phải sử dụng đối số message
trong hàm khởi tạo GPUPipelineError()
. Xem thay đổi chromium:4613967.
Lỗi sẽ xảy ra 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 dùng khi lấy mẫu hoạ tiết bằng createSampler()
là 32. Xem thay đổi chromium:4608063.
Cải thiện trải nghiệm của nhà phát triển
Thông báo sẽ xuất hiện trong bảng điều khiển JavaScript của DevTools để 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 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 thay đổi chromium:4597950.
Thông tin cập nhật về Dawn
Nút bật/tắt gỡ lỗi disallow_unsafe_apis
đã được đổi tên thành allow_unsafe_apis
và đặt trạng thái mặc định là tắt. Nút bật/tắt này sẽ ngăn các lỗi xác thực trên các điểm truy cập API hoặc tổ hợp tham số chưa được coi là an toàn. Điều này có thể hữu ích cho việc gỡ lỗi.
Xem vấn đề dawn:1685.
Thuộc tính source
không dùng nữa wgpu::ShaderModuleWGSLDescriptor
sẽ bị xoá và thay vào đó là code
. Xem change dawn:130321.
Phương thức wgpu::RenderBundle::SetLabel()
bị thiếu đã được triển khai. Xem thay đổi dawn:134502.
Các ứng dụng có thể yêu cầu một phần phụ trợ cụ thể khi nhận được bộ chuyển đổi có 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. 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 Tính năng mới trong WebGPU.
Chrome 131
- Cắt khoảng cách trong WGSL
- GPUCanvasContext getConfiguration()
- Các đối tượng gốc điểm và đường không được có độ lệch sâu
- Hàm tích hợp quét toàn diện cho các nhóm con
- Hỗ trợ thử nghiệm cho nhiều bản vẽ gián tiếp
- Tuỳ chọn biên dịch mô-đun đổ bóng toán học nghiêm ngặt
- Xoá GPUAdapter requestAdapterInfo()
- Thông tin cập nhật về Dawn
Chrome 130
- Kết hợp nguồn kép
- Cải thiện thời gian biên dịch đổ bóng trên Metal
- Ngừng sử dụng GPUAdapter requestAdapterInfo()
- Thông tin cập nhật về bình minh
Chrome 129
- Hỗ trợ HDR với chế độ ánh xạ tông màu canvas
- Mở rộng tính năng hỗ trợ nhóm con
- Thông tin cập nhật về Dawn
Chrome 128
- Thử nghiệm với các nhóm nhỏ
- Giảm tình trạng sai lệch độ sâu cho đường và điểm
- Ẩn cảnh báo Công cụ cho nhà phát triển về lỗi không được ghi lại nếu preventDefault
- WGSL nội suy lấy mẫu trước và
- Thông tin cập nhật về Dawn
Chrome 127
- Hỗ trợ thử nghiệm cho OpenGL ES trên Android
- Thuộc tính thông tin GPU
- Cải tiến khả năng tương tác của WebAssembly
- Cải thiện lỗi bộ mã hoá lệnh
- Thông tin cập nhật về Dawn
Chrome 126
- Tăng giới hạn maxTextureArrayLayers
- Tối ưu hoá tính năng 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 đã gửi phải là duy nhất
- Thông tin cập nhật về Dawn
Chrome 125
- Nhóm con (tính năng đang được phát triển)
- Hiển thị lát cắt của hoạ tiết 3D
- Thông tin cập nhật về Dawn
Chrome 124
- Kết cấu bộ nhớ chỉ đọc và đọc-ghi
- Hỗ trợ worker và worker dùng chung
- Các thuộc tính thông tin mới của bộ chuyển đổi
- Sửa lỗi
- Thông tin cập nhật về Dawn
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
- Cú pháp đơn giản để huỷ tham chiếu các thành phần kết hợp trong WGSL
- Trạng thái chỉ có thể đọc riêng biệt cho các khía cạnh của bản in và chiều sâu
- Thông tin cập nhật về Dawn
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 làm không gian màu GPUExternalTexture
- Thông tin về vùng nhớ khối xếp bộ nhớ
- Thông tin cập nhật về Dawn
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 chiều sâu-khung đệm
- 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 dấu phẩy động 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ề Dawn
Chrome 118
- Hỗ trợ HTMLImageElement và ImageData trong
copyExternalImageToTexture()
- Hỗ trợ thử nghiệm cho hoạ tiết bộ nhớ đọ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
- Loại bỏ lỗi khi tạo quy trình không đồng bộ khi thiết bị bị mất
- 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 các quy trình vào bộ nhớ đệm bằng bố cục được tạo tự động
- Thông tin cập nhật về Dawn
Chrome 116
- Tích hợp WebCodecs
- Thiết bị bị mất do GPUAdapter
requestDevice()
trả về - Giữ cho quá trình phát video diễn ra 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ề Dawn
Chrome 115
- Các tiện ích ngôn ngữ WGSL được hỗ trợ
- Hỗ trợ thử nghiệm cho Direct3D 11
- Sử dụng GPU rời theo mặc định khi dùng nguồn điện xoay chiều
- Cải thiện trải nghiệm của nhà phát triển
- Thông tin cập nhật về Dawn
Chrome 114
- Tối ưu hoá JavaScript
- getCurrentTexture() trên canvas chưa được định cấu hình sẽ gửi InvalidStateError
- Nội dung cập nhật về WGSL
- Thông tin cập nhật về bình minh