WebCodecs 整合
WebGPU 會公開 API,以便透過 HTMLVideoElement
和 importExternalTexture()
建立不透明的「外部紋理」物件。您可以使用這些物件,以有效率的方式取樣影片影格,甚至可以直接從來源 YUV 色彩模型資料,以 0 複製的方式取樣。
不過,最初的 WebGPU 規格不允許從 WebCodecs VideoFrame
物件建立 GPUExternalTexture
物件。對於已使用 WebCodecs 且想在影片處理管道中整合 WebGPU 的進階影片處理應用程式而言,這項功能非常重要。WebCodecs 整合功能新增了支援功能,可將 VideoFrame
用作 GPUExternalTexture
和 copyExternalImageToTexture()
呼叫的來源。請參閱以下範例和 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.
請查看使用 WebCodecs 上傳影片實驗範例,瞭解如何使用這項功能。
由 GPUAdapter requestDevice() 傳回的遺失裝置
如果 GPUAdapter
上的 requestDevice()
方法已用於建立 GPUDevice
,則會立即標示為遺失的 GPUDevice
來完成,而不是傳回使用 null
拒絕的承諾。請參閱 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;
在呼叫 importExternalTexture() 時,確保影片播放流暢
使用 HTMLVideoElement
呼叫 importExternalTexture()
時,如果影片在可視區域中不可見,則相關的影片播放作業就不會受到限制。請參閱 chromium 問題:1425252。
規格相符
GPUPipelineError()
建構函式中的 message
引數為選用引數。請參閱 change chromium:4613967。
如果 WGSL 來源 code
包含 \0
,呼叫 createShaderModule()
時就會觸發錯誤。請參閱問題 dawn:1345。
使用 createSampler()
取樣紋理時,預設的細節層級上限 (lodMaxClamp
) 為 32。請參閱 變更 chromium:4608063。
改善開發人員使用體驗
開發人員在未支援的平台上使用 WebGPU 時,開發人員工具 JavaScript 主控台會顯示訊息提醒。請參閱「change chromium:4589369」。
當 getMappedRange()
失敗時,開發人員不必將指令傳送至佇列,開發人員工具 JavaScript 主控台就會立即顯示緩衝區驗證錯誤訊息。請參閱 change chromium:4597950。
黎明更新
disallow_unsafe_apis
偵錯切換鈕已重新命名為 allow_unsafe_apis
,並預設為停用。這個切換鈕會抑制 API 進入點或尚未視為安全的參數組合中的驗證錯誤。這對偵錯作業可能很有幫助。請參閱問題 dawn:1685。
wgpu::ShaderModuleWGSLDescriptor
淘汰的 source
屬性已移除,改用 code
。請參閱 change dawn:130321。
已實作缺少的 wgpu::RenderBundle::SetLabel()
方法。請參閱 變更 dawn:134502。
應用程式在使用 wgpu::RequestAdapterOptionsBackendType
選項取得轉接器時,可以要求特定後端。請參考以下範例和問題 dawn:1875。
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
我們新增了 SwapChain::GetCurrentTexture()
方法,並為 Swapchain 紋理的其他用途提供額外支援,以便在副本中使用傳回的 wgpu::Texture
。請參閱下方的範例和問題 dawn:1551。
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
這份文件僅涵蓋部分重點。請查看完整的修訂版本清單。
WebGPU 新功能
以下是「WebGPU 最新消息」系列文章中涵蓋的所有內容。
Chrome 131
- WGSL 中的裁剪距離
- GPUCanvasContext getConfiguration()
- 點和線圖元不得有深度偏差
- 針對子群組的內建包容性掃描函式
- 實驗性支援多重繪製間接功能
- 著色器模組編譯選項嚴格數學
- 移除 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
Chrome 128
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- 支援 Android 上的 WebGPU
- 在 Windows 上使用 DXC 而非 FXC 進行著色器編譯
- 在運算和算繪階段中執行時間戳記查詢
- 著色器模組的預設進入點
- 支援以顯示器-p3 做為 GPUExternalTexture 色彩空間
- 記憶體堆積資訊
- Dawn 更新
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- WebCodecs 整合
- GPUAdapter
requestDevice()
傳回的遺失裝置 - 如果呼叫
importExternalTexture()
,請保持影片播放流暢 - 規格相容性
- 改善開發人員體驗
- Dawn 更新