Roll third_party/webgpu-cts/ cf0073691..f529c5ae6 (1 commit)

Regenerated:
 - expectations.txt
 - compat-expectations.txt
 - ts_sources.txt
 - test_list.txt
 - resource_files.txt
 - webtest .html files


https://chromium.googlesource.com/external/github.com/gpuweb/cts/+log/cf0073691abc..f529c5ae6471
 - f529c5 Extra WGSL validation for @align (#4667)

Created with './tools/run cts roll'

Cq-Include-Trybots: luci.chromium.try:android-dawn-arm-rel,android-dawn-arm64-rel,dawn-try-linux-x64-intel-uhd770-rel,dawn-try-mac-amd-exp,dawn-try-mac-arm64-m2-exp,dawn-try-mac-intel-exp,dawn-try-win-x64-intel-uhd770-rel,dawn-try-win10-x86-rel,linux-dawn-rel,mac-arm64-dawn-rel,mac-dawn-rel,win-dawn-rel
Include-Ci-Only-Tests: true
Change-Id: Ia2b27e38f2ec34e8cdd3b3a71693cac40c95e4de
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/318695
Bot-Commit: Dawn Automated Expectations <dawn-automated-expectations@chops-service-accounts.iam.gserviceaccount.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/DEPS b/DEPS
index dbb48c1..018ad2e 100644
--- a/DEPS
+++ b/DEPS
@@ -414,7 +414,7 @@
 
   # WebGPU CTS - Used both by the dawn_node tests and transitively by Chromium.
   'third_party/webgpu-cts': {
-    'url': '{chromium_git}/external/github.com/gpuweb/cts@cf0073691abc3b97587411c105e14f0af795db37',
+    'url': '{chromium_git}/external/github.com/gpuweb/cts@f529c5ae647114ed354c131d1a869d89042e69bf',
     'condition': 'build_with_chromium or dawn_standalone',
   },
 
diff --git a/third_party/gn/webgpu-cts/test_list.txt b/third_party/gn/webgpu-cts/test_list.txt
index 3d8c9b6..1b099ae 100644
--- a/third_party/gn/webgpu-cts/test_list.txt
+++ b/third_party/gn/webgpu-cts/test_list.txt
@@ -273623,262 +273623,42 @@
 webgpu:shader,validation,shader_io,align:parsing:align="large_no_power_two"
 webgpu:shader,validation,shader_io,align:parsing:align="larger_than_max_i32"
 webgpu:shader,validation,shader_io,align:parsing:align="duplicate"
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"S","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"i32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"u32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"f32","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"f16","storage":2,"uniform":2}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"atomic%3Ci32%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"vec2%3Ci32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"vec2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"vec3%3Cu32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"vec4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"vec4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat3x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat2x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat3x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat4x2%3Cf16%3E","storage":4,"uniform":4}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat2x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat4x3%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat2x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat3x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat4x3%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat3x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat2x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat3x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"mat4x4%3Cf16%3E","storage":8,"uniform":8}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"array%3Cvec2%3Ci32%3E,%202%3E","storage":8,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"array%3Cvec4%3Ci32%3E,%202%3E","storage":16,"uniform":16}
-webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=32;type={"name":"S","storage":8,"uniform":16}
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="storage";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="storage";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="storage";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="storage";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="uniform";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="uniform";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="uniform";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="uniform";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="workgroup";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="workgroup";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="workgroup";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="workgroup";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="function";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="function";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="function";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="function";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="private";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="private";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="private";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="private";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="function";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="function";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="function";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="function";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="private";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="private";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="private";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="const";address_space="private";align=32
+webgpu:shader,validation,shader_io,align:required_alignment:decl="let";address_space="function";align=1
+webgpu:shader,validation,shader_io,align:required_alignment:decl="let";address_space="function";align=2
+webgpu:shader,validation,shader_io,align:required_alignment:decl="let";address_space="function";align="alignment"
+webgpu:shader,validation,shader_io,align:required_alignment:decl="let";address_space="function";align=32
 webgpu:shader,validation,shader_io,align:placement:scope="private-var";attribute={"private-var":false,"storage-var":false,"struct-member":true,"fn-decl":false,"fn-param":false,"fn-var":false,"fn-return":false,"while-stmt":false}
 webgpu:shader,validation,shader_io,align:placement:scope="storage-var";attribute={"private-var":false,"storage-var":false,"struct-member":true,"fn-decl":false,"fn-param":false,"fn-var":false,"fn-return":false,"while-stmt":false}
 webgpu:shader,validation,shader_io,align:placement:scope="struct-member";attribute={"private-var":false,"storage-var":false,"struct-member":true,"fn-decl":false,"fn-param":false,"fn-var":false,"fn-return":false,"while-stmt":false}
diff --git a/third_party/webgpu-cts b/third_party/webgpu-cts
index cf00736..f529c5a 160000
--- a/third_party/webgpu-cts
+++ b/third_party/webgpu-cts
@@ -1 +1 @@
-Subproject commit cf0073691abc3b97587411c105e14f0af795db37
+Subproject commit f529c5ae647114ed354c131d1a869d89042e69bf
diff --git a/webgpu-cts/compat-expectations.txt b/webgpu-cts/compat-expectations.txt
index e7b9079..84ec1c4 100644
--- a/webgpu-cts/compat-expectations.txt
+++ b/webgpu-cts/compat-expectations.txt
@@ -91,7 +91,7 @@
 # results: [ Failure RetryOnFailure Skip Slow ]
 # END TAG HEADER
 
-# Last rolled: 2026-06-17 05:04:49AM
+# Last rolled: 2026-06-22 07:19:33AM
 
 # conflicts_allowed: true
 # full_wildcard_support: true
@@ -145,7 +145,6 @@
 crbug.com/520527496 webgpu:shader,execution,memory_model,texture_intra_invocation_coherence:texture_intra_invocation_coherence:format="r32sint";dim="2d-array" [ Skip ]
 crbug.com/520527496 webgpu:shader,execution,memory_model,texture_intra_invocation_coherence:texture_intra_invocation_coherence:format="r32uint";dim="2d-array" [ Skip ]
 
-
 ### TEMPORARY ANDROID SKIPS
 
 # Compressed texture image_copy failures on Pixel 6
@@ -1637,13 +1636,6 @@
 crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,parse,semicolon:after_fn_const_assert: [ Skip ]
 crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,parse,shadow_builtins:shadow_hides_builtin:inject="none" [ Skip ]
 crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:parsing:align="duplicate" [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=1;type={"name":"mat2x2%3Cf32%3E","storage":8,"uniform":8} [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=2;type={"name":"mat2x4%3Cf32%3E","storage":16,"uniform":16} [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align=32;type={"name":"mat3x3%3Cf32%3E","storage":16,"uniform":16} [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="storage";align="alignment";type={"name":"f16","storage":2,"uniform":2} [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=1;type={"name":"mat4x4%3Cf32%3E","storage":16,"uniform":16} [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align=2;type={"name":"vec3%3Cf16%3E","storage":8,"uniform":8} [ Skip ]
-crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:address_space="uniform";align="alignment";type={"name":"mat4x2%3Cf32%3E","storage":8,"uniform":8} [ Skip ]
 crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,binding:binding:attr="comment" [ Skip ]
 crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,builtins:duplicates:first="s2a";second="s2b" [ Skip ]
 crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,builtins:reuse_builtin_name:name="clip_distances";stage="vertex";io="out";type="array%3Cf32,1%3E";enable="clip_distances";use="struct" [ Skip ]
@@ -3164,6 +3156,7 @@
 crbug.com/0000 [ android-pixel-6 android-t ] webgpu:api,validation,capability_checks,limits,maxSampledTexturesPerShaderStage:createPipelineLayout,at_over:limitTest="underDefault";testValueName="atLimit";visibility=1;order="shiftByHalf" [ Failure ]
 crbug.com/0000 [ android-pixel-6 android-t ] webgpu:api,validation,capability_checks,limits,maxSampledTexturesPerShaderStage:createPipelineLayout,at_over:limitTest="underDefault";testValueName="overLimit";visibility=6;order="shiftByHalf" [ Failure ]
 crbug.com/0000 [ android-pixel-6 android-t ] webgpu:api,validation,capability_checks,limits,maxSamplersPerShaderStage:createBindGroupLayout,at_over:limitTest="atDefault";testValueName="overLimit";visibility=4;order="shiftByHalf" [ Failure ]
+crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:createPipeline,at_over:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true [ Failure ]
 crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,createView:texture_view_usage_of_multiple_usages:usage1=16;usage2=32 [ Failure ]
 crbug.com/0000 [ intel linux ] webgpu:api,validation,createView:texture_view_usage_of_multiple_usages:usage1=16;usage2=32 [ Failure ]
 crbug.com/0000 [ linux nvidia ] webgpu:api,validation,createView:texture_view_usage_of_multiple_usages:usage1=16;usage2=32 [ Failure ]
diff --git a/webgpu-cts/expectations.txt b/webgpu-cts/expectations.txt
index 521aeb4..624830c 100644
--- a/webgpu-cts/expectations.txt
+++ b/webgpu-cts/expectations.txt
@@ -91,7 +91,7 @@
 # results: [ Failure RetryOnFailure Skip Slow ]
 # END TAG HEADER
 
-# Last rolled: 2026-06-17 05:04:49AM
+# Last rolled: 2026-06-22 07:19:33AM
 
 # conflicts_allowed: true
 # full_wildcard_support: true
@@ -1847,6 +1847,7 @@
 crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:createPipeline,at_over:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true [ Failure ]
 crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInFragmentStage:createPipeline,at_over:limitTest="underDefault";testValueName="overLimit";async=false [ Failure ]
 crbug.com/0000 [ linux nvidia ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false [ Failure ]
+crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true [ Failure ]
 crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true [ Failure ]
 crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipeline,at_over:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false [ Failure ]
 crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersInVertexStage:createPipeline,at_over:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true [ Failure ]
@@ -1855,6 +1856,8 @@
 crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="fragment" [ Failure ]
 crbug.com/0000 [ amd mac ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow" [ Failure ]
 crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow" [ Failure ]
+crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true;bindingCombination="compute" [ Failure ]
+crbug.com/0000 [ android-pixel-10 ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow" [ Failure ]
 crbug.com/0000 [ linux nvidia ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow" [ Failure ]
 crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment" [ Failure ]
 crbug.com/0000 [ intel linux ] webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createPipeline,at_over:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow" [ Failure ]
@@ -1864,16 +1867,20 @@
 crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesInFragmentStage:createPipeline,at_over:limitTest="atMaximum";testValueName="atLimit";async=false [ Failure ]
 crbug.com/0000 [ android-pixel-6 android-t ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:createPipeline,at_over:limitTest="atDefault";testValueName="atLimit";async=true [ Failure ]
 crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesInVertexStage:createPipeline,at_over:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false [ Failure ]
+crbug.com/0000 [ android-pixel-4 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only" [ Failure ]
 crbug.com/0000 [ android-pixel-4 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write" [ Failure ]
 crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write" [ Failure ]
+crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only" [ Failure ]
 crbug.com/0000 [ android-pixel-6 android-t ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only" [ Failure ]
 crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write" [ Failure ]
 crbug.com/0000 [ android-pixel-6 android-t dawn-no-backend-validation ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only" [ Failure ]
 crbug.com/0000 [ android-pixel-6 dawn-backend-validation ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only" [ Failure ]
 crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only" [ Failure ]
 crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only" [ Failure ]
+crbug.com/0000 [ android-pixel-6 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only" [ Failure ]
 crbug.com/0000 [ android-pixel-6 android-t ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write" [ Failure ]
 crbug.com/0000 [ dawn-backend-validation intel-0x9bc5 linux ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write" [ Failure ]
+crbug.com/0000 [ android-pixel-10 ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atDefault";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only" [ Failure ]
 crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write" [ Failure ]
 crbug.com/0000 [ linux nvidia ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only" [ Failure ]
 crbug.com/0000 [ intel win ] webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only" [ Failure ]
@@ -1895,6 +1902,7 @@
 crbug.com/0000 [ android-pixel-4 ] webgpu:api,validation,encoding,cmds,copyTextureToTexture:copy_aspects:format="depth32float-stencil8" [ Failure ]
 crbug.com/0000 [ android-pixel-4 ] webgpu:api,validation,encoding,cmds,copyTextureToTexture:copy_ranges:dimension="1d";copyBoxOffsets={"x":0,"y":0,"z":0,"width":0,"height":0,"depthOrArrayLayers":0};srcCopyLevel=0;dstCopyLevel=0 [ Failure ]
 crbug.com/0000 [ intel win ] webgpu:shader,execution,expression,binary,af_matrix_subtraction:matrix:inputSource="const";cols=2;rows=4 [ Failure ]
+crbug.com/0000 [ intel win ] webgpu:shader,execution,expression,binary,i32_arithmetic:remainder_vector_scalar:inputSource="storage_r";vectorize_lhs=3 [ Failure ]
 crbug.com/0000 [ intel sonoma ] webgpu:shader,execution,expression,call,builtin,texture_utils:readTextureToTexelViews:srcFormat="stencil8";texelViewFormat="stencil8";viewDimension="2d";sampleCount=4 [ Failure ]
 crbug.com/0000 [ intel-0x3e9b mac ] webgpu:shader,execution,expression,call,builtin,texture_utils:weights:stage="compute" [ Failure ]
 crbug.com/0000 [ android-t ] webgpu:shader,execution,expression,constructor,non_zero:concrete_matrix_elements:* [ Failure ]
@@ -1915,6 +1923,30 @@
 crbug.com/0000 [ intel win ] webgpu:shader,validation,parse,requires:wgsl_matches_api:feature="texture_formats_tier1" [ Failure ]
 crbug.com/0000 [ linux nvidia ] webgpu:shader,validation,parse,requires:wgsl_matches_api:feature="texture_formats_tier1" [ Failure ]
 crbug.com/0000 [ microsoft win ] webgpu:shader,validation,parse,requires:wgsl_matches_api:feature="texture_formats_tier1" [ Failure ]
+crbug.com/0000 [ amd mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ android-pixel-6 ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ apple mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ intel linux ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ intel mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ intel win ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ microsoft win ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align="alignment" [ Failure ]
+crbug.com/0000 [ amd mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ android-pixel-6 ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ apple mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ intel linux ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ intel mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ intel win ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ microsoft win ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=2 [ Failure ]
+crbug.com/0000 [ amd mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ android-pixel-10 ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ android-pixel-6 ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ apple mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ intel linux ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ intel mac ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ intel win ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
+crbug.com/0000 [ microsoft win ] webgpu:shader,validation,shader_io,align:required_alignment:decl="var";address_space="immediate";align=32 [ Failure ]
 crbug.com/0000 [ android-pixel-4 ] webgpu:web_platform,canvas,configure:invalid_usage:canvasType="offscreen";format="bgra8unorm";usage=8 [ Failure ]
 crbug.com/0000 [ android-pixel-4 ] webgpu:web_platform,canvas,configure:invalid_usage:canvasType="onscreen";format="bgra8unorm";usage=8 [ Failure ]
 crbug.com/0000 [ linux nvidia ] webgpu:web_platform,canvas,getPreferredCanvasFormat:value: [ Failure ]