WebGPU 新功能 (Chrome 140)

François Beaufort
François Beaufort

發布日期:2025 年 8 月 27 日

裝置要求會耗用配接器

根據 WebGPU 規格,成功要求裝置後,配接器會標示為「已耗用」。因此,後續使用相同轉接程式的任何 requestDevice() 呼叫,現在都會導致遭拒的 Promise。先前,這些呼叫會傳回建立時遺失的裝置。請參閱問題 415825174

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

在紋理檢視畫面中使用紋理的簡寫

現在可以直接使用 GPUTexture 做為 GPUBindingResource,向著色器公開以進行繫結。此外,為提升人體工學,也可以做為 GPURenderPassColorAttachment view、GPURenderPassColorAttachment resolveTarget 和 GPURenderPassDepthStencilAttachment view 使用。相較於使用 GPUTextureView 取得預設檢視區塊,這種做法更簡單。請參閱 問題 425906323

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel 支援 1D 紋理

現在可以使用 textureSampleLevel() 取樣 1D 紋理,與 2D 紋理保持一致。這項功能可讓您從頂點著色器取樣 1D 紋理,先前只能從片段著色器使用 textureSample() 執行這項操作。請參閱 問題 382514673

淘汰 bgra8unorm 唯讀儲存空間紋理用法

使用 "bgra8unorm" 格式搭配唯讀儲存紋理的做法已遭淘汰。WebGPU 規格明確禁止此行為,而 Chrome 先前允許此行為是錯誤,因為這個格式僅供寫入存取,且無法移植。請參閱問題 427681156

移除 GPUAdapter isFallbackAdapter 屬性

如先前公告所述,GPUAdapter 的 isFallbackAdapter 屬性現已移除。Chrome 136 推出的 GPUAdapterInfo isFallbackAdapter 屬性已取代這項屬性。請參閱移除意圖

黎明更新

wgpuInstanceGetWGSLLanguageFeatures() 函式用於取得例項支援的 WGSL 語言功能清單。先前會傳回 WGPUStatus 值。由於不會失敗,因此已更新為不傳回值。請參閱問題 429178774

如果介面沒有目前的紋理,wgpuSurfacePresent() 函式現在會傳回 WGPUStatus 錯誤。請參閱問題 425930323

有了這項新 wgpu::InstanceFeatureName::MultipleDevicesPerAdapter 功能,轉接器就能建立多個裝置,而不會「耗用」裝置。請參閱問題 415825174

dump_shaders_on_failure 裝置切換按鈕可讓您僅在失敗時傾印著色器,以進行偵錯。這項功能僅適用於 D3 後端,但未來可能會擴展至其他後端。請參閱問題 429187478

Vulkan 後端已進行多項變更,可減少提交算繪通道時的負擔,特別是提升行動 GPU 的效能。例如:快取 VkFramebuffer

這僅涵蓋部分重點。請參閱完整的提交清單

WebGPU 最新消息

WebGPU 最新消息」系列涵蓋的所有主題清單。

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113