發布日期:2026 年 1 月 7 日
WGSL subgroup_id 擴充功能
啟用 subgroups 擴充功能後,您就能在工作群組中使用下列新的內建值:subgroup_id
subgroup_id:提供目前工作群組中調用子群組的 ID。num_subgroups:回報工作群組中的子群組數量。
先前,如要使用子群組叫用 ID 為記憶體建立索引,您必須重建子群組 ID (通常透過 原子作業),避免記憶體存取作業重疊。現在可以使用 subgroup_id 填入方程式的另一半。由於 D3D 後端目前不支援這項功能,因此會模擬這項功能。建立 local_invocation_index 的等價項目 (如 subgroup_invocation_id + subgroup_size * subgroup_id) 應該很安全。請注意,有時子群組可能不會滿員。
您可以使用 navigator.gpu.wgslLanguageFeatures 偵測這項語言擴充功能。建議在 WGSL 著色器程式碼頂端使用 requires 指令,標示可能無法移植的 requires subgroup_id;。請參閱以下範例和出貨意願。
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_id")) {
throw new Error(`WGSL subgroup_id and num_subgroups built-in values are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
requires subgroup_id;
@compute @workgroup_size(64, 1, 1)
fn main(@builtin(subgroup_id) subgroup_id : u32,
@builtin(num_subgroups) num_subgroups : u32) {
// TODO: Use subgroup_id and num_subgroups values.
}`,
});
WGSL uniform_buffer_standard_layout 擴充功能
WGSL 語言擴充功能 uniform_buffer_standard_layout 可讓統一緩衝區使用與儲存緩衝區相同的記憶體配置限制,因此更容易在兩種緩衝區中共用資料結構。也就是說,陣列元素不再需要 16 位元組對齊,巢狀結構偏移也不必填補至 16 位元組的倍數。
您可以使用 navigator.gpu.wgslLanguageFeatures 偵測這項語言擴充功能。建議在 WGSL 著色器程式碼頂端使用 requires 指令,標示可能無法移植的 requires uniform_buffer_standard_layout;。請參閱以下範例和出貨意願。
if (!navigator.gpu.wgslLanguageFeatures.has("uniform_buffer_standard_layout")) {
throw new Error(`WGSL uniform buffer standard layout is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires uniform_buffer_standard_layout;
struct S {
x: f32
}
struct Uniforms {
a: S,
b: f32
// b is at offset 4. Without standard layout, alignment rules would
// force b to be at offset 16 (or a multiple of 16), and you would have
// to add extra fields or use an @align attribute.
}
@group(0) @binding(0) var<uniform> u: Uniforms;
@fragment fn fs_main() -> @location(0) vec4<f32> {
return vec4<f32>(u.a.x);
}`,
});
Linux 上的 WebGPU
Chrome 團隊正謹慎地為 Linux 推出 WebGPU,首先支援 Intel Gen12 以上的 GPU,但暫定計畫將支援範圍擴大至更多裝置 (AMD、NVIDIA)。這項實作採用 WebGPU 使用 Vulkan 的架構,Chromium 的其餘部分則維持使用 OpenGL,藉此運用現有的知名良好程式碼路徑。請參閱問題 442791440。
加快 writeBuffer 和 writeTexture 的速度
writeBuffer() 和 writeTexture() 已在 Chrome 中經過最佳化,因此效能提升幅度最高可達前一版本的 2 倍,視傳輸的資料大小而定。這項異動也會影響 Dawn Wire 實作的所有使用者。請參閱問題 441900745。
黎明更新
Android GPU 團隊已發布 Android 適用的 WebGPU Kotlin 繫結第一個 Alpha 版,可透過 Jetpack 使用。Android 開發人員可透過 androidx.webgpu 套件,使用 Kotlin 存取現代 GPU API,避開 OpenGL 的舊版問題或 Vulkan 的複雜性,這對生態系統來說是令人振奮的發展!
這僅涵蓋部分重點。請參閱完整的提交清單。
WebGPU 最新消息
「WebGPU 最新消息」系列涵蓋的所有主題清單。
Chrome 144
- WGSL subgroup_id 擴充功能
- WGSL uniform_buffer_standard_layout 擴充功能
- Linux 上的 WebGPU
- 更快速的 writeBuffer 和 writeTexture
- Dawn 更新
Chrome 143
Chrome 142
Chrome 141
Chrome 140
- 裝置要求會耗用轉接頭
- 使用紋理檢視畫面時,可使用紋理的簡短形式
- WGSL textureSampleLevel 支援 1D 紋理
- 淘汰 bgra8unorm 唯讀儲存空間紋理用法
- 移除 GPUAdapter isFallbackAdapter 屬性
- Dawn 更新
Chrome 139
Chrome 138
Chrome 137
- 使用紋理檢視區塊進行 externalTexture 繫結
- 複製緩衝區,但不指定位移和大小
- WGSL 工作群組 UniformLoad,使用指標指向原子
- GPUAdapterInfo powerPreference 屬性
- 移除 GPURequestAdapterOptions compatibilityMode 屬性
- Dawn 更新
Chrome 136
Chrome 135
- 允許使用空值繫結群組版面配置建立管道版面配置
- 允許檢視區塊超出算繪目標的邊界
- 在 Android 上更輕鬆存取實驗性相容模式
- 移除 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 134
Chrome 133
- 額外的 unorm8x4-bgra 和 1 元件頂點格式
- Allow unknown limits to be requested with undefined value
- WGSL 對齊規則變更
- 使用捨棄功能提升 WGSL 效能
- 針對外部紋理使用 VideoFrame displaySize
- 使用 copyExternalImageToTexture 處理方向非預設的圖片
- 提升開發人員體驗
- 使用 featureLevel 啟用相容模式
- 清除實驗性子群組功能
- 淘汰 maxInterStageShaderComponents 限制
- Dawn 更新
Chrome 132
- 紋理檢視畫面使用方式
- 32 位元浮點紋理混合
- GPUDevice adapterInfo 屬性
- 以無效格式設定畫布內容時,會擲回 JavaScript 錯誤
- 紋理的篩選取樣器限制
- 擴大子群組實驗
- 提升開發人員體驗
- 實驗性支援 16 位元標準化紋理格式
- Dawn 更新
Chrome 131
- 裁剪 WGSL 中的距離
- GPUCanvasContext getConfiguration()
- 點和線條圖元不得有深度偏差
- 子群組的內建掃描功能
- 實驗性支援多重繪圖間接
- 著色器模組編譯選項 strict math
- 移除 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,編譯著色器
- 運算和算繪階段中的時間戳記查詢
- 著色器模組的預設進入點
- 支援將 display-p3 做為 GPUExternalTexture 色彩空間
- 記憶體堆積資訊
- Dawn 更新
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- 整合 WebCodecs
- GPUAdapter
requestDevice()傳回的遺失裝置 - 如果呼叫
importExternalTexture(),請確保影片播放流暢 - 規格一致性
- 提升開發人員體驗
- Dawn 更新
Chrome 115
Chrome 114
Chrome 113
- 在
importExternalTexture()中使用 WebCodecs VideoFrame 來源