支援的 WGSL 語言擴充功能
GPU
物件的 wgslLanguageFeatures
成員會列出支援的 WGSL 語言擴充功能名稱。系統會自動啟用支援的 WGSL 語言擴充功能,因此您不必明確要求。這份清單目前是空的,但日後可能會有大量項目 (例如 do-while loops
)。請參閱問題 dawn:1777。
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Direct3D 11 實驗性支援
Chromium 團隊正設法針對 Direct3D 11 新增 WebGPU 支援。您現在可以使用 --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
指令列旗標,在 Windows 上執行 Chrome,在本機試用 Chrome。請參閱問題發生時間:1705。
在 AC 電源上預設取得離散 GPU
在雙 GPU macOS 裝置上,如果呼叫 requestAdapter()
時未提供 powerPreference
選項,當使用者的裝置處於 AC 電源時,系統會傳回離散 GPU。否則,系統會傳回整合式 GPU。請參閱「變更 4499307」。
改善開發人員體驗
新的開發人員工具警告
如果在 GPUExtend3DDict
中使用 depth
金鑰,開發人員工具控制台就會顯示警告,因為正確的金鑰是 depthOrArrayLayers
。請參閱 問題 chromium:1440900。
如果 GPUBlendComponent
同時具有明確和預設的成員,系統也會發出警示。請參閱問題發生時間:1785。
雖然零大小調度和繪製作業很有效,但系統還是會發出警告,鼓勵開發人員盡可能避免這類問題。請參閱問題發生時間:1786。
提供更明確的錯誤訊息
如果已呼叫 finish()
,現在使用 GPUCommandEncoder
時,系統會提供更明確的錯誤訊息。請參閱問題發生時間:1736。
提交含有已刪除物件的指令緩衝區時,錯誤訊息中會顯示 submit()
中使用的指令緩衝區標籤。請參閱問題發生時間:1747。
現在在驗證 depthStencil
時,錯誤訊息中會指定深度模板狀態的無效部分。請參閱問題發生時間:1735。
minBindingSize
驗證錯誤訊息現在會回報驗證失敗的群組和繫結數量,以及緩衝區。請參閱問題日出:1604。
GPUBuffer
物件的 mapAsync()
方法傳回的錯誤訊息已更新,以協助開發人員進行偵錯。請參閱下方範例和 問題 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);
}
macOS 偵錯工具中的標籤
use_user_defined_labels_in_backend
偵錯切換按鈕可讓您將物件標籤轉送至後端,以便在 RenderDoc、PIX 或 Instruments 等平台專用的偵錯工具中。現在起,啟用 macOS 的偵錯功能之後,您就能享有更優質的偵錯體驗。請參閱問題日出:1784
如果編譯失敗,系統會記錄 HLSL
「dump_shaders
」偵錯切換按鈕可讓您記錄輸入的 WGSL 著色器和已翻譯的後端著色器。從現在起,當您啟用此功能以進行偵錯時,如果 HLSL 編譯失敗,系統會傾印出 HLSL。請參閱問題日出:1681
黎明更新
取消設定頂點緩衝區
透過在 wgpu::RenderPassEncoder
或 wgpu::RenderBundleEncoder
上將 nullptr
(而非 wgpu::Buffer
) 傳遞至 SetVertexBuffer()
,可讓您取消設定先前在特定運算單元中設定的頂點緩衝區。請參閱問題發生時間:1675。
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
暫時性附件
您可以建立附件,讓算繪傳遞作業留在圖塊記憶體中,透過設定 wgpu::TextureUsage::TransientAttachment
用法來避免 VRAM 流量,並可能避免為紋理分配 VRAM。這項功能僅適用於 Metal 和 Vulkan。請參閱問題發生時間: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.
未使用depot_tools
的建築物
新的 DAWN_FETCH_DEPENDENCIES
CMake 選項可讓您使用可讀取 DEPS 檔案的 Python 指令碼擷取 Dawn 依附元件,而不必要求所有依附於 depot_tools
的專案。請參閱變更 131750。
WebGPU 的新功能
「WebGPU 新功能」系列中已說明的所有功能清單。
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- 在 Android 上支援 WebGPU
- 在 Windows 上使用 DXC (而非 FXC) 進行著色器編譯
- 運算和轉譯傳遞中的時間戳記查詢
- 著色器模組的預設進入點
- 支援 display-p3 做為 GPUExternalTexture 色域
- 記憶體堆積資訊
- Dawn 最新消息
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- WebCodecs 整合
- GPUAdapter
requestDevice()
退回的裝置遺失 - 在呼叫
importExternalTexture()
的情況下,讓影片能夠流暢播放 - 規格符合程度
- 改善開發人員體驗
- Dawn 最新消息