const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
WGSL 對齊規則異動
現在所有結構體都必須滿足 @align(n) 除以 RequiredAlignOf 的條件,因此您無法再為結構體成員提供過小的對齊值。這項重大變更可簡化 WGSL 語言的使用方式,並提升與 Firefox 和 Safari 的相容性。您可以在規格 PR 中找到範例程式碼,瞭解 Tint、Naga 和 WebKit 編譯器之間的差異。
由於算繪複雜的螢幕空間反射 (SSR) 效果時,效能會大幅下降,因此 discard 陳述式的實作會使用平台提供的語意,在可用的情況下降級為輔助函式呼叫。這可提升使用捨棄項目的著色器效能。請參閱問題 372714384。
針對外部紋理使用 VideoFrame displaySize
根據 WebGPU 規格匯入 VideoFrame 時,displayWidth 和 displayHeight 維度應做為 GPUExternalTexture 的顯著大小。不過,系統誤用可見大小,導致嘗試在 GPUExternalTexture 上使用 textureLoad() 時發生問題。不過現在我們已順利解決這項問題。請參閱問題 377574981。
使用 copyExternalImageToTexture 處理非預設方向的圖片
copyExternalImageToTexture() GPUQueue 方法用於將圖片或畫布的內容複製到紋理。現在可正確處理非預設方向的圖片。如果來源是具有 imageOrientation "from-image" 的 ImageBitmap,或是具有非預設方向的圖片,則先前不會發生這種情況。請參閱問題 384858956。
提升開發人員體驗
當 adapter.limits 顯示高值時,您可能會感到驚訝,但您並未意識到在要求 GPU 裝置時,需要明確要求更高的限制。否則之後可能會意外達到限制。
為協助您解決問題,我們擴充了錯誤訊息,現在會顯示提示,告知您在呼叫 requestDevice() 時,如果 requiredLimits 中未指定上限,請明確要求提高上限。請參閱問題 42240683。
以下範例顯示在建立 GPU 緩衝區時,如果大小超過裝置的預設緩衝區大小上限,開發人員工具控制台中記錄的錯誤訊息會有所改善。
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit.
- While calling [Device].CreateBuffer([BufferDescriptor]).
使用 featureLevel 啟用相容模式
現在只要將標準化 featureLevel 選項設為 "compatibility",即可在實驗相容模式中要求 GPU 轉接器。系統只允許「"core"」(預設) 和「"compatibility"」字串。請參閱以下範例和規格 PR 4897。
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
featureLevel 選項會取代非標準化的 compatibilityMode 選項,而非標準化的 featureLevel 屬性則會取代 isCompatibilityMode 屬性。
由於這項功能仍在實驗階段,目前您必須在 chrome://flags/#enable-unsafe-webgpu 執行 Chrome,並使用「Unsafe WebGPU Support」標記。歡迎前往 webgpureport.org 試用。
清除實驗子群組功能
已移除已淘汰的 "chromium-experimental-subgroups" 和 "chromium-experimental-subgroup-uniform-control-flow" 實驗性子群組功能。請參閱問題 377868468。
現在"subgroups"實驗功能已推出,實驗子群組時可使用。"subgroups-f16" 實驗功能已淘汰,並將在近期內移除。當應用程式同時要求 "shader-f16" 和 "subgroups" 功能時,您可以在子群組中使用 f16 值。請參閱問題 380244620。
淘汰 maxInterStageShaderComponents 限制
由於下列因素,maxInterStageShaderComponents 限制已淘汰:
maxInterStageShaderVariables 的冗餘:這個限制已達到類似目的,可控制在著色器階段之間傳遞的資料量。
微小差異:雖然這兩種限制的計算方式略有不同,但差異不大,且可在 maxInterStageShaderVariables 限制內有效管理。
簡化:移除 maxInterStageShaderComponents 可簡化著色器介面,降低開發人員的複雜度。不必再管理兩個有細微差異的獨立限制,而是專注於更適當命名且更全面的 maxInterStageShaderVariables。
目標是在 Chrome 135 中完全移除這項功能。請參閱淘汰意圖和問題 364338810。
wgpu::Device::GetAdapterInfo(adapterInfo) 可讓您直接從 wgpu::Device 取得轉接器資訊。請參閱問題 376600838。
為使運算狀態與頂點和片段狀態保持一致,WGPUProgrammableStageDescriptor 結構體已重新命名為 WGPUComputeState。請參閱問題 379059434。
已移除 wgpu::VertexStepMode::VertexBufferNotUsed 列舉值。現在可以使用 {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0} 表示未使用的頂點緩衝區版面配置。請參閱問題 383147017。
這僅涵蓋部分重點。請參閱完整的提交清單。
WebGPU 最新消息
「WebGPU 最新消息」系列涵蓋的所有主題清單。
Chrome 146
在 OpenGL ES 3.1 上支援 WebGPU 相容模式
暫時性附件
WGSL texture_and_sampler_let
Dawn 更新
Chrome 145
WGSL subgroup_uniformity 擴充功能
工作人員中的實驗性同步緩衝區對應
Dawn 更新
Chrome 144
WGSL subgroup_id 擴充功能
WGSL uniform_buffer_standard_layout 擴充功能
Linux 上的 WebGPU
更快速的 writeBuffer 和 writeTexture
Dawn 更新
Chrome 143
紋理元件 swizzle
移除 bgra8unorm 唯讀儲存空間紋理使用情形
Dawn 更新
Chrome 142
擴充紋理格式支援功能
WGSL 中的基本索引
Dawn 更新
Chrome 141
Tint IR 完成
WGSL 編譯器中的整數範圍分析
Vulkan 後端的 SPIR-V 1.4 更新
Dawn 更新
Chrome 140
裝置要求會耗用轉接器
使用紋理檢視畫面時,可使用紋理的簡短形式
WGSL textureSampleLevel 支援 1D 紋理
淘汰 bgra8unorm 唯讀儲存空間紋理用法
移除 GPUAdapter isFallbackAdapter 屬性
Dawn 更新
Chrome 139
支援 BC 和 ASTC 壓縮格式的 3D 紋理
新的「核心功能和限制」功能
WebGPU 相容性模式的原始試用
Dawn 更新
Chrome 138
將緩衝區做為繫結資源的簡寫
建立時對應的緩衝區大小規定異動
近期 GPU 的架構報告
淘汰 GPUAdapter isFallbackAdapter 屬性
Dawn 更新
Chrome 137
使用紋理檢視區塊進行 externalTexture 繫結
複製緩衝區,但不指定位移和大小
WGSL 工作群組 UniformLoad,使用指標指向原子
GPUAdapterInfo powerPreference 屬性
移除 GPURequestAdapterOptions compatibilityMode 屬性
Dawn 更新
Chrome 136
GPUAdapterInfo isFallbackAdapter 屬性
改善 D3D12 的著色器編譯時間
儲存及複製畫布圖片
Lift 相容模式限制
Dawn 更新
Chrome 135
允許使用空值繫結群組版面配置建立管道版面配置
允許檢視區塊超出算繪目標的邊界
在 Android 上更輕鬆存取實驗性相容模式
移除 maxInterStageShaderComponents 限制
Dawn 更新
Chrome 134
使用子群組提升機器學習工作負載
移除浮點可篩選紋理類型支援,做為可混合的類型
Dawn 更新
Chrome 133
額外的 unorm8x4-bgra 和 1 元件頂點格式
Allow unknown limits to be requested with undefined value
WGSL 對齊規則變更
使用 discard 提升 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
雙來源混合
改善 Metal 的著色器編譯時間
淘汰 GPUAdapter requestAdapterInfo()
Dawn 更新
Chrome 129
支援 HDR,並提供畫布色調對應模式
擴大支援子群組
Dawn 更新
Chrome 128
實驗子群組
淘汰線條和點的深度偏差設定
如果 preventDefault,則隱藏未擷取的錯誤開發人員工具警告
WGSL 會先插補取樣,然後
Dawn 更新
Chrome 127
Android 上的 OpenGL ES 實驗性支援
GPUAdapter 資訊屬性
改善 WebAssembly 互通性
改善指令編碼器錯誤
Dawn 更新
Chrome 126
提高 maxTextureArrayLayers 上限
針對 Vulkan 後端最佳化緩衝區上傳作業
縮短著色器編譯時間
提交的指令緩衝區不得重複
Dawn 更新
Chrome 125
子群組 (開發中的功能)
將內容算繪至 3D 紋理的切片
Dawn 更新
Chrome 124
唯讀和讀寫儲存紋理
支援 Service Worker 和 Shared Worker
新的轉接器資訊屬性
Dawn 更新
Chrome 123
WGSL 支援 DP4a 內建函式
WGSL 中不受限制的指標參數
WGSL 中取消參照複合項的語法糖
樣板和深度層面的唯讀狀態分開
Dawn 更新
Chrome 122
使用相容模式擴大觸及範圍 (開發中的功能)
提高 maxVertexAttributes 上限
Dawn 更新
Chrome 121
在 Android 上支援 WebGPU
在 Windows 上使用 DXC 取代 FXC,編譯著色器
運算和算繪階段中的時間戳記查詢
著色器模組的預設進入點
支援將 display-p3 做為 GPUExternalTexture 色彩空間
記憶體堆積資訊
Dawn 更新
Chrome 120
WGSL 支援 16 位元浮點值
深度樣板狀態的變更
更新轉接器資訊
時間戳記查詢量化
春季大掃除功能
Chrome 119
可篩選的 32 位元浮點紋理
unorm10-10-10-2 頂點格式
rgb10a2uint 紋理格式
Dawn 更新
Chrome 118
copyExternalImageToTexture() 中支援 HTMLImageElement 和 ImageData
實驗性支援讀寫和唯讀儲存空間紋理
Dawn 更新
Chrome 117
取消設定頂點緩衝區
取消設定繫結群組
裝置遺失時,不要顯示非同步管道建立作業的錯誤
SPIR-V 著色器模組建立作業更新
提升開發人員體驗
使用自動產生的版面配置快取管道
Dawn 更新
Chrome 116
整合 WebCodecs
GPUAdapter requestDevice() 傳回的遺失裝置
如果呼叫 importExternalTexture(),請確保影片播放流暢
規格一致性
提升開發人員體驗
Dawn 更新
Chrome 115
支援的 WGSL 語言擴充功能
實驗性支援 Direct3D 11
在接上 AC 電源時預設使用獨立 GPU
提升開發人員體驗
Dawn 更新
Chrome 114
最佳化 JavaScript
未設定畫布時,getCurrentTexture() 會擲回 InvalidStateError
WGSL 更新
Dawn 更新
Chrome 113
在 importExternalTexture() 中使用 WebCodecs VideoFrame 來源
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-01-29 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-01-29 (世界標準時間)。"],[],[]]