支援的 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,即可在本機進行實驗。請參閱問題 dawn:1705。
透過 AC 電源預設取得離散 GPU
在雙 GPU macOS 裝置上,如果在沒有 powerPreference
選項的情況下呼叫 requestAdapter()
,則當使用者的裝置使用 AC 電源時,系統會傳回獨立 GPU。否則,系統會傳回整合式 GPU。請參閱變更 4499307。
改善開發人員體驗
新的開發人員工具警告
如果在 GPUExtend3DDict
中使用 depth
鍵,由於正確的索引鍵為 depthOrArrayLayers
,因此開發人員工具控制台中會顯示警告。請參閱問題 chromium:1440900。
如果 GPUBlendComponent
同時包含明確和預設成員,系統也會發出警示。請參閱問題 dawn:1785。
雖然零大小調度和繪製動作都有效,但警告鼓勵開發人員盡量避免出現。請參閱問題 dawn:1786。
提供更明確的錯誤訊息
如果呼叫了 finish()
,系統現在會在使用 GPUCommandEncoder
時提供更完善的錯誤訊息。請參閱問題 dawn:1736。
提交含有已刪除物件的指令緩衝區時,錯誤訊息中現在會顯示 submit()
中使用的指令緩衝區標籤。請參閱問題 dawn:1747。
現在驗證 depthStencil
時,錯誤訊息中已指定深度模板狀態的無效部分。請參閱問題 dawn:1735。
minBindingSize
驗證錯誤訊息現在會回報群組、驗證失敗的繫結編號,以及緩衝區。請參閱問題 dawn: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 上啟用偵錯功能,就能提供更完善的偵錯體驗。請參閱問題 dawn:1784
如果編譯失敗,則記錄 HLSL
dump_shaders
偵錯切換鈕可讓您記錄輸入的 WGSL 著色器和經過轉譯的後端著色器。從現在起,當您啟用偵錯功能時,如果 HLSL 無法編譯,系統會轉儲 HLSL。請參閱問題 dawn:1681
日出最新消息
取消設定頂點緩衝區
將 nullptr
(而非 wgpu::Buffer
) 傳遞至 wgpu::RenderPassEncoder
或 wgpu::RenderBundleEncoder
上的 SetVertexBuffer()
,即可取消先前在特定版位中設定的頂點緩衝區。請參閱問題 dawn:1675。
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
暫時附件
您可以建立附件,允許算繪通道作業保留在資訊方塊記憶體中,藉此避免 VRAM 流量,並有機會透過設定 wgpu::TextureUsage::TransientAttachment
來避免為紋理分配 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 128
Chrome 127
Chrome 126
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 更新