diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in index 55c014d6d990..0d908481da08 100644 --- a/.cargo/config.toml.in +++ b/.cargo/config.toml.in @@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust" rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" replace-with = "vendored-sources" -[source."git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"] +[source."git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109"] git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" replace-with = "vendored-sources" [source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"] diff --git a/Cargo.lock b/Cargo.lock index 96ecd7ec66e0..f532d3d39e23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2794,7 +2794,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7db2ff139bba50379da6aa0766b52fdcb62cb5b263009b09ed58ba604e14bbd1" dependencies = [ - "arbitrary", "cfg-if", "crunchy", "num-traits", @@ -4498,7 +4497,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664" [[package]] name = "naga" version = "24.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +source = "git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109#a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" dependencies = [ "arrayvec", "bit-set", @@ -4506,7 +4505,7 @@ dependencies = [ "cfg_aliases", "codespan-reporting", "half 2.5.0", - "hashbrown 0.14.999", + "hashbrown 0.15.2", "hexf-parse", "indexmap", "log", @@ -7428,7 +7427,7 @@ dependencies = [ [[package]] name = "wgpu-core" version = "24.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +source = "git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109#a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" dependencies = [ "arrayvec", "bit-set", @@ -7437,7 +7436,7 @@ dependencies = [ "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.14.999", + "hashbrown 0.15.2", "indexmap", "log", "naga", @@ -7458,7 +7457,7 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" version = "24.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +source = "git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109#a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" dependencies = [ "wgpu-hal", ] @@ -7466,7 +7465,7 @@ dependencies = [ [[package]] name = "wgpu-core-deps-windows-linux-android" version = "24.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +source = "git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109#a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" dependencies = [ "wgpu-hal", ] @@ -7474,7 +7473,7 @@ dependencies = [ [[package]] name = "wgpu-hal" version = "24.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +source = "git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109#a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" dependencies = [ "android_system_properties", "arrayvec", @@ -7488,7 +7487,7 @@ dependencies = [ "gpu-alloc", "gpu-allocator", "gpu-descriptor", - "hashbrown 0.14.999", + "hashbrown 0.15.2", "libc", "libloading", "log", @@ -7510,7 +7509,7 @@ dependencies = [ [[package]] name = "wgpu-types" version = "24.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +source = "git+https://github.com/gfx-rs/wgpu?rev=a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109#a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" dependencies = [ "bitflags 2.9.0", "bytemuck", diff --git a/gfx/wgpu_bindings/Cargo.toml b/gfx/wgpu_bindings/Cargo.toml index d4ecc00d73b6..f17f0a78cfb7 100644 --- a/gfx/wgpu_bindings/Cargo.toml +++ b/gfx/wgpu_bindings/Cargo.toml @@ -17,7 +17,7 @@ default = [] [dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" # TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182 features = [ "serde", @@ -33,32 +33,32 @@ features = [ [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" features = ["metal"] # We want the wgpu-core Direct3D backends on Windows. [target.'cfg(windows)'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" features = ["dx12"] # We want the wgpu-core Vulkan backend on Linux and Windows. [target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" features = ["vulkan"] [dependencies.wgt] package = "wgpu-types" git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" [dependencies.wgh] package = "wgpu-hal" git = "https://github.com/gfx-rs/wgpu" -rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +rev = "a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" features = ["oom_panic", "device_lost_panic", "internal_error_panic"] [target.'cfg(windows)'.dependencies] diff --git a/gfx/wgpu_bindings/moz.yaml b/gfx/wgpu_bindings/moz.yaml index 21aba70a2af9..312327611f67 100644 --- a/gfx/wgpu_bindings/moz.yaml +++ b/gfx/wgpu_bindings/moz.yaml @@ -8,8 +8,8 @@ origin: name: wgpu description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard url: https://github.com/gfx-rs/wgpu - release: c7c79a0dc9356081a884b5518d1c08ce7a09c7c5 (2025-03-28T10:32:06Z). - revision: c7c79a0dc9356081a884b5518d1c08ce7a09c7c5 + release: a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109 (Wed Apr 9 18:45:27 2025 -0400) + revision: a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109 license: ['MIT', 'Apache-2.0'] updatebot: diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index c0e6d3d2d849..481694967076 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -3694,9 +3694,10 @@ delta = "23.1.0 -> 24.0.0" who = [ "Teodor Tanasoaia ", "Erich Gubler ", + "Jim Blandy ", ] criteria = "safe-to-deploy" -delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +delta = "24.0.0 -> 24.0.0@git:a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" importable = false [[audits.net2]] @@ -5948,9 +5949,10 @@ delta = "23.0.1 -> 24.0.0" who = [ "Teodor Tanasoaia ", "Erich Gubler ", + "Jim Blandy ", ] criteria = "safe-to-deploy" -delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +delta = "24.0.0 -> 24.0.0@git:a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" importable = false [[audits.wgpu-hal]] @@ -6035,9 +6037,10 @@ delta = "23.0.1 -> 24.0.0" who = [ "Teodor Tanasoaia ", "Erich Gubler ", + "Jim Blandy ", ] criteria = "safe-to-deploy" -delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +delta = "24.0.0 -> 24.0.0@git:a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" importable = false [[audits.wgpu-types]] @@ -6117,9 +6120,10 @@ delta = "23.0.0 -> 24.0.0" who = [ "Teodor Tanasoaia ", "Erich Gubler ", + "Jim Blandy ", ] criteria = "safe-to-deploy" -delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5" +delta = "24.0.0 -> 24.0.0@git:a0dbe5ebc6fa24422fb84b2e0fea1cc94dee5109" importable = false [[audits.whatsys]] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout/cts.https.html.ini index d85629469be2..5931cba3326f 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout/cts.https.html.ini @@ -1,10 +1,7 @@ [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxDynamicUniformBuffersPerPipelineLayout:createBindGroupLayout,at_over:*] tags: [webgpu, webgpu-long] implementation-status: backlog - expected: - if os == "win": [OK, CRASH] - if os == "linux" and not debug: [OK, CRASH] - if os == "mac": [OK, CRASH] + expected: [OK, CRASH] [:limitTest="atDefault";testValueName="atLimit";visibility=1] [:limitTest="atDefault";testValueName="atLimit";visibility=2] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSampledTexturesPerShaderStage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSampledTexturesPerShaderStage/cts.https.html.ini index 610e926425e5..0276842c942d 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSampledTexturesPerShaderStage/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSampledTexturesPerShaderStage/cts.https.html.ini @@ -2293,841 +2293,721 @@ [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: - if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, FAIL] if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [PASS, TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSamplersPerShaderStage/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSamplersPerShaderStage/cts.https.html.ini index e1b9d5445f1a..0607e04e66b5 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSamplersPerShaderStage/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/capability_checks/limits/maxSamplersPerShaderStage/cts.https.html.ini @@ -1375,602 +1375,482 @@ [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"] expected: if os == "win" and debug: [PASS, FAIL] - if os == "win" and not debug: FAIL [:limitTest="underDefault";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini index ce8fda9dc82d..f23302b99497 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/encoding/cmds/copyTextureToTexture/cts.https.html.ini @@ -14400,9 +14400,10 @@ implementation-status: backlog expected: if os == "mac" and debug: [OK, TIMEOUT] + if os == "mac" and not debug: TIMEOUT [:] expected: if os == "win": FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if os == "mac" and not debug: [TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pipeline/vertex_state/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pipeline/vertex_state/cts.https.html.ini index 6d4da8edad42..c2af0980b358 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pipeline/vertex_state/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pipeline/vertex_state/cts.https.html.ini @@ -1313,150 +1313,92 @@ expected: FAIL [:format="float16x2"] - expected: - if os == "mac": FAIL [:format="float16x4"] - expected: - if os == "mac": FAIL [:format="float32"] expected: FAIL [:format="float32x2"] - expected: - if os == "mac": FAIL [:format="float32x3"] - expected: - if os == "mac": FAIL [:format="float32x4"] - expected: - if os == "mac": FAIL [:format="sint16"] expected: FAIL [:format="sint16x2"] - expected: - if os == "mac": FAIL [:format="sint16x4"] - expected: - if os == "mac": FAIL [:format="sint32"] expected: FAIL [:format="sint32x2"] - expected: - if os == "mac": FAIL [:format="sint32x3"] - expected: - if os == "mac": FAIL [:format="sint32x4"] - expected: - if os == "mac": FAIL [:format="sint8"] expected: FAIL [:format="sint8x2"] - expected: - if os == "mac": FAIL [:format="sint8x4"] - expected: - if os == "mac": FAIL [:format="snorm16"] expected: FAIL [:format="snorm16x2"] - expected: - if os == "mac": FAIL [:format="snorm16x4"] - expected: - if os == "mac": FAIL [:format="snorm8"] expected: FAIL [:format="snorm8x2"] - expected: - if os == "mac": FAIL [:format="snorm8x4"] - expected: - if os == "mac": FAIL [:format="uint16"] expected: FAIL [:format="uint16x2"] - expected: - if os == "mac": FAIL [:format="uint16x4"] - expected: - if os == "mac": FAIL [:format="uint32"] expected: FAIL [:format="uint32x2"] - expected: - if os == "mac": FAIL [:format="uint32x3"] - expected: - if os == "mac": FAIL [:format="uint32x4"] - expected: - if os == "mac": FAIL [:format="uint8"] expected: FAIL [:format="uint8x2"] - expected: - if os == "mac": FAIL [:format="uint8x4"] - expected: - if os == "mac": FAIL [:format="unorm10-10-10-2"] - expected: - if os == "mac": FAIL [:format="unorm16"] expected: FAIL [:format="unorm16x2"] - expected: - if os == "mac": FAIL [:format="unorm16x4"] - expected: - if os == "mac": FAIL [:format="unorm8"] expected: FAIL [:format="unorm8x2"] - expected: - if os == "mac": FAIL [:format="unorm8x4"] - expected: - if os == "mac": FAIL [:format="unorm8x4-bgra"] - expected: - if os == "mac": FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/ai_arithmetic/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/ai_arithmetic/cts.https.html.ini index 7c8f93c94be7..a0acd793a9e1 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/ai_arithmetic/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/ai_arithmetic/cts.https.html.ini @@ -40,104 +40,76 @@ implementation-status: if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:division_scalar_vector:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize_rhs=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize_rhs=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize_rhs=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:division_vector_scalar:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize_lhs=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize_lhs=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize_lhs=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:multiplication:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:multiplication_scalar_vector:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize_rhs=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize_rhs=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize_rhs=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:multiplication_vector_scalar:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize_lhs=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize_lhs=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize_lhs=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:remainder:*] @@ -182,49 +154,35 @@ implementation-status: if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:subtraction_scalar_vector:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize_rhs=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize_rhs=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize_rhs=4] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,binary,ai_arithmetic:subtraction_vector_scalar:*] implementation-status: if os == "mac": backlog [:inputSource="const";vectorize_lhs=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize_lhs=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize_lhs=4] - expected: - if os == "mac": FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/bitwise/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/bitwise/cts.https.html.ini index ba4a5c3fb527..1ae5da42a213 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/bitwise/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/binary/bitwise/cts.https.html.ini @@ -2,20 +2,14 @@ implementation-status: if os == "mac": backlog [:type="abstract-int";inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:type="abstract-int";inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:type="abstract-int";inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:type="abstract-int";inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL [:type="abstract-int";inputSource="storage_r";vectorize="_undef_"] @@ -364,20 +358,14 @@ implementation-status: if os == "mac": backlog [:type="abstract-int";inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:type="abstract-int";inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:type="abstract-int";inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:type="abstract-int";inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL [:type="abstract-int";inputSource="storage_r";vectorize="_undef_"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/abs/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/abs/cts.https.html.ini index 993cf07345e8..006882479298 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/abs/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/abs/cts.https.html.ini @@ -14,18 +14,30 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,abs:abstract_int:*] - implementation-status: backlog + implementation-status: + if os == "win" and debug: backlog + if os == "linux" and debug: backlog + if os == "mac": backlog + expected: + if os == "linux" and debug: CRASH + if os == "mac" and debug: CRASH [:inputSource="const";vectorize="_undef_"] - expected: FAIL + expected: + if debug: FAIL [:inputSource="const";vectorize=2] - expected: FAIL + expected: + if debug: FAIL [:inputSource="const";vectorize=3] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: FAIL + expected: + if debug: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,abs:f16:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/bitcast/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/bitcast/cts.https.html.ini index 7acbf03c695c..43fc9ad34fb6 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/bitcast/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/bitcast/cts.https.html.ini @@ -37,15 +37,9 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,bitcast:ai_to_f32:*] - implementation-status: - if os == "mac": backlog [:inputSource="const";vectorize="_undef_";alias=false] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize="_undef_";alias=true] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2;alias=false] @@ -61,15 +55,9 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,bitcast:ai_to_i32:*] - implementation-status: - if os == "mac": backlog [:inputSource="const";vectorize="_undef_";alias=false] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize="_undef_";alias=true] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2;alias=false] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/clamp/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/clamp/cts.https.html.ini index edccfda4fa9b..651487f633f9 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/clamp/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/clamp/cts.https.html.ini @@ -14,18 +14,17 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,clamp:abstract_int:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: FAIL [:inputSource="const";vectorize=2] - expected: FAIL [:inputSource="const";vectorize=3] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,clamp:f16:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini index c9f0390f3d2e..a517949db285 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini @@ -30,8 +30,12 @@ if os == "mac": FAIL [:inputSource="storage_r"] + expected: + if os == "mac": FAIL [:inputSource="storage_rw"] + expected: + if os == "mac": FAIL [:inputSource="uniform"] expected: @@ -90,14 +94,22 @@ [:inputSource="storage_r"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL + if os == "mac": FAIL [:inputSource="storage_rw"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL + if os == "mac": FAIL [:inputSource="uniform"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL if os == "mac": FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/max/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/max/cts.https.html.ini index e6d0d6e2d7b2..dc1b3693922e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/max/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/max/cts.https.html.ini @@ -14,18 +14,17 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,max:abstract_int:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: FAIL [:inputSource="const";vectorize=2] - expected: FAIL [:inputSource="const";vectorize=3] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,max:f16:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/min/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/min/cts.https.html.ini index 1f037a3e7d7e..67d9ee9213ba 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/min/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/min/cts.https.html.ini @@ -14,18 +14,17 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,min:abstract_int:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: FAIL [:inputSource="const";vectorize=2] - expected: FAIL [:inputSource="const";vectorize=3] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,min:f16:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/sign/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/sign/cts.https.html.ini index a9b9e0f6e3c2..59615cd95469 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/sign/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/sign/cts.https.html.ini @@ -14,18 +14,17 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,sign:abstract_int:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: FAIL [:inputSource="const";vectorize=2] - expected: FAIL [:inputSource="const";vectorize=3] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,sign:f16:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini index 3f666d83fe32..94ec9146c985 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini @@ -9173,8 +9173,7 @@ [:case=365;type="f32";op="subgroupMax";wgSize=[128,1,1\]] expected: - if os == "win" and debug: [TIMEOUT, NOTRUN] - if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "win": [PASS, TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/constructor/zero_value/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/constructor/zero_value/cts.https.html.ini index 17f59380d7cb..ec8243141cc5 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/constructor/zero_value/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/constructor/zero_value/cts.https.html.ini @@ -155,42 +155,26 @@ [cts.https.html?q=webgpu:shader,execution,expression,constructor,zero_value:vector_prefix:*] - implementation-status: backlog [:type="f16";width=2] - expected: - if os == "mac": FAIL [:type="f16";width=3] - expected: - if os == "mac": FAIL [:type="f16";width=4] - expected: - if os == "mac": FAIL [:type="f32";width=2] - expected: FAIL [:type="f32";width=3] - expected: FAIL [:type="f32";width=4] - expected: FAIL [:type="i32";width=2] - expected: FAIL [:type="i32";width=3] - expected: FAIL [:type="i32";width=4] - expected: FAIL [:type="u32";width=2] - expected: FAIL [:type="u32";width=3] - expected: FAIL [:type="u32";width=4] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_arithmetic/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_arithmetic/cts.https.html.ini index 04dbf27e2e3f..1c6dc44ae84e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_arithmetic/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_arithmetic/cts.https.html.ini @@ -2,17 +2,11 @@ implementation-status: if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_assignment/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_assignment/cts.https.html.ini index 6a15ebe4c7b7..dfee09a2bed9 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_assignment/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_assignment/cts.https.html.ini @@ -1,9 +1,5 @@ [cts.https.html?q=webgpu:shader,execution,expression,unary,ai_assignment:abstract:*] - implementation-status: - if os == "mac": backlog [:inputSource="const"] - expected: - if os == "mac": FAIL [cts.https.html?q=webgpu:shader,execution,expression,unary,ai_assignment:i32:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_complement/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_complement/cts.https.html.ini index bcd0ff7ddeea..42b6ed803731 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_complement/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/unary/ai_complement/cts.https.html.ini @@ -2,17 +2,11 @@ implementation-status: if os == "mac": backlog [:inputSource="const";vectorize="_undef_"] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=2] - expected: - if os == "mac": FAIL [:inputSource="const";vectorize=3] expected: if os == "mac": FAIL [:inputSource="const";vectorize=4] - expected: - if os == "mac": FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/robust_access/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/robust_access/cts.https.html.ini index 0996c8e8f3af..1db0af59d5fe 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/robust_access/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/robust_access/cts.https.html.ini @@ -8,7 +8,7 @@ [:addressSpace="function";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -24,7 +24,7 @@ [:addressSpace="function";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -40,7 +40,7 @@ [:addressSpace="function";access="read";containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -53,21 +53,21 @@ [:addressSpace="function";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="function";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="function";access="read";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -77,7 +77,7 @@ [:addressSpace="function";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -93,7 +93,7 @@ [:addressSpace="function";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -109,7 +109,7 @@ [:addressSpace="function";access="read";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="read";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -125,7 +125,7 @@ [:addressSpace="function";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -141,7 +141,7 @@ [:addressSpace="function";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -157,7 +157,7 @@ [:addressSpace="function";access="write";containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -170,21 +170,21 @@ [:addressSpace="function";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="function";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="function";access="write";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -194,7 +194,7 @@ [:addressSpace="function";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -210,7 +210,7 @@ [:addressSpace="function";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -226,7 +226,7 @@ [:addressSpace="function";access="write";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="function";access="write";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -242,7 +242,7 @@ [:addressSpace="private";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -258,7 +258,7 @@ [:addressSpace="private";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -274,7 +274,7 @@ [:addressSpace="private";access="read";containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -287,21 +287,21 @@ [:addressSpace="private";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="private";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="private";access="read";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -311,7 +311,7 @@ [:addressSpace="private";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -327,7 +327,7 @@ [:addressSpace="private";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -343,7 +343,7 @@ [:addressSpace="private";access="read";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="read";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -359,7 +359,7 @@ [:addressSpace="private";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -375,7 +375,7 @@ [:addressSpace="private";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -391,7 +391,7 @@ [:addressSpace="private";access="write";containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -404,21 +404,21 @@ [:addressSpace="private";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="private";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="private";access="write";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -428,7 +428,7 @@ [:addressSpace="private";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -444,7 +444,7 @@ [:addressSpace="private";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -460,7 +460,7 @@ [:addressSpace="private";access="write";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="private";access="write";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -473,7 +473,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -486,7 +486,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -499,7 +499,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -512,28 +512,28 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -546,7 +546,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -559,7 +559,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -572,7 +572,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -585,7 +585,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -598,7 +598,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -611,28 +611,28 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -645,7 +645,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -658,7 +658,7 @@ [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -671,7 +671,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -690,7 +690,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -709,7 +709,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -728,28 +728,28 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -762,7 +762,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -775,7 +775,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -788,7 +788,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -807,7 +807,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -826,7 +826,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -845,28 +845,28 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -879,7 +879,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -892,7 +892,7 @@ [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -905,7 +905,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -924,7 +924,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -943,7 +943,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -962,28 +962,28 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -996,7 +996,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1009,7 +1009,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1022,7 +1022,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1041,7 +1041,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1060,7 +1060,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1079,28 +1079,28 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1113,7 +1113,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1126,7 +1126,7 @@ [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1166,28 +1166,28 @@ [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1200,7 +1200,7 @@ [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1213,7 +1213,7 @@ [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1253,28 +1253,28 @@ [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1287,7 +1287,7 @@ [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1300,7 +1300,7 @@ [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1316,7 +1316,7 @@ [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1338,7 +1338,7 @@ [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1360,7 +1360,7 @@ [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1379,21 +1379,21 @@ [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1403,7 +1403,7 @@ [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1419,7 +1419,7 @@ [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1435,7 +1435,7 @@ [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1451,7 +1451,7 @@ [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1473,7 +1473,7 @@ [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1495,7 +1495,7 @@ [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1514,21 +1514,21 @@ [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL @@ -1538,7 +1538,7 @@ [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1554,7 +1554,7 @@ [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false;baseType="f32"] expected: FAIL @@ -1570,7 +1570,7 @@ [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f16"] expected: - if os == "mac" and not debug: FAIL + if os == "mac": FAIL [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="none";isAtomic=false;baseType="f32"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/shadow/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/shadow/cts.https.html.ini index daa51e05fdbb..77aaba87132f 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/shadow/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/shadow/cts.https.html.ini @@ -3,9 +3,7 @@ [cts.https.html?q=webgpu:shader,execution,shadow:declaration:*] - implementation-status: backlog [:] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,shadow:for_loop:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/decl/let/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/decl/let/cts.https.html.ini index a8d723126429..61ac45c1962a 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/decl/let/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/decl/let/cts.https.html.ini @@ -29,11 +29,9 @@ [cts.https.html?q=webgpu:shader,validation,decl,let:type:*] - implementation-status: backlog [:case="array_runtime"] [:case="array_sized"] - expected: FAIL [:case="atomic"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/add_sub_mul/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/add_sub_mul/cts.https.html.ini index e8561c4eefa1..28708043a772 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/add_sub_mul/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/add_sub_mul/cts.https.html.ini @@ -25,7 +25,6 @@ [:op="add";type="texture";control=false] [:op="add";type="texture";control=true] - expected: FAIL [:op="mul";type="array";control=false] @@ -52,7 +51,6 @@ [:op="mul";type="texture";control=false] [:op="mul";type="texture";control=true] - expected: FAIL [:op="sub";type="array";control=false] @@ -79,7 +77,6 @@ [:op="sub";type="texture";control=false] [:op="sub";type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,add_sub_mul:scalar_vector:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/and_or_xor/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/and_or_xor/cts.https.html.ini index 06518cd29346..7c9a7530f6e1 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/and_or_xor/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/and_or_xor/cts.https.html.ini @@ -29,7 +29,6 @@ [:op="and";type="texture";control=false] [:op="and";type="texture";control=true] - expected: FAIL [:op="or";type="array";control=false] @@ -60,7 +59,6 @@ [:op="or";type="texture";control=false] [:op="or";type="texture";control=true] - expected: FAIL [:op="xor";type="array";control=false] @@ -91,7 +89,6 @@ [:op="xor";type="texture";control=false] [:op="xor";type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,and_or_xor:scalar_vector:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/bitwise_shift/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/bitwise_shift/cts.https.html.ini index da36bb1b6d1f..3be10a925120 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/bitwise_shift/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/bitwise_shift/cts.https.html.ini @@ -29,7 +29,6 @@ [:op="%3C%3C";type="texture";control=false] [:op="%3C%3C";type="texture";control=true] - expected: FAIL [:op="%3E%3E";type="array";control=false] @@ -60,7 +59,6 @@ [:op="%3E%3E";type="texture";control=false] [:op="%3E%3E";type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,bitwise_shift:partial_eval_errors:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/comparison/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/comparison/cts.https.html.ini index ad44c07a62dd..e2c029b21e09 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/comparison/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/comparison/cts.https.html.ini @@ -29,7 +29,6 @@ [:op="eq";type="texture";control=false] [:op="eq";type="texture";control=true] - expected: FAIL [:op="ge";type="array";control=false] @@ -60,7 +59,6 @@ [:op="ge";type="texture";control=false] [:op="ge";type="texture";control=true] - expected: FAIL [:op="gt";type="array";control=false] @@ -91,7 +89,6 @@ [:op="gt";type="texture";control=false] [:op="gt";type="texture";control=true] - expected: FAIL [:op="le";type="array";control=false] @@ -122,7 +119,6 @@ [:op="le";type="texture";control=false] [:op="le";type="texture";control=true] - expected: FAIL [:op="lt";type="array";control=false] @@ -153,7 +149,6 @@ [:op="lt";type="texture";control=false] [:op="lt";type="texture";control=true] - expected: FAIL [:op="ne";type="array";control=false] @@ -184,7 +179,6 @@ [:op="ne";type="texture";control=false] [:op="ne";type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,comparison:scalar_vector:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/div_rem/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/div_rem/cts.https.html.ini index 0cf53afcfcf5..539abf322879 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/div_rem/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/div_rem/cts.https.html.ini @@ -25,7 +25,6 @@ [:op="div";type="texture";control=false] [:op="div";type="texture";control=true] - expected: FAIL [:op="rem";type="array";control=false] @@ -52,7 +51,6 @@ [:op="rem";type="texture";control=false] [:op="rem";type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,div_rem:scalar_vector:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/short_circuiting_and_or/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/short_circuiting_and_or/cts.https.html.ini index 61c360cd027f..8ee7572caedb 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/short_circuiting_and_or/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/binary/short_circuiting_and_or/cts.https.html.ini @@ -22,7 +22,6 @@ [cts.https.html?q=webgpu:shader,validation,expression,binary,short_circuiting_and_or:invalid_array_count_on_rhs:*] - implementation-status: backlog [:op="%26%26";rhs="negative";control=false] [:op="%26%26";rhs="negative";control=true] @@ -34,7 +33,6 @@ [:op="%26%26";rhs="sqrt_neg1";control=false] [:op="%26%26";rhs="sqrt_neg1";control=true] - expected: FAIL [:op="%7C%7C";rhs="negative";control=false] @@ -47,7 +45,6 @@ [:op="%7C%7C";rhs="sqrt_neg1";control=false] [:op="%7C%7C";rhs="sqrt_neg1";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,short_circuiting_and_or:invalid_rhs_const:*] @@ -209,7 +206,6 @@ [:op="%26%26";type="texture";control=false] [:op="%26%26";type="texture";control=true] - expected: FAIL [:op="%7C%7C";type="array";control=false] @@ -239,7 +235,6 @@ [:op="%7C%7C";type="texture";control=false] [:op="%7C%7C";type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,binary,short_circuiting_and_or:nested_invalid_rhs_override:*] @@ -560,7 +555,6 @@ [:op="%26%26";lhs="vec2%3Cbool%3E";rhs="vec2%3Cabstract-int%3E"] [:op="%26%26";lhs="vec2%3Cbool%3E";rhs="vec2%3Cbool%3E"] - expected: FAIL [:op="%26%26";lhs="vec2%3Cbool%3E";rhs="vec2%3Cf16%3E"] @@ -1349,7 +1343,6 @@ [:op="%7C%7C";lhs="vec2%3Cbool%3E";rhs="vec2%3Cabstract-int%3E"] [:op="%7C%7C";lhs="vec2%3Cbool%3E";rhs="vec2%3Cbool%3E"] - expected: FAIL [:op="%7C%7C";lhs="vec2%3Cbool%3E";rhs="vec2%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/abs/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/abs/cts.https.html.ini index a2d5871f9791..2022bca83c10 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/abs/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/abs/cts.https.html.ini @@ -39,101 +39,189 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,abs:values:*] - implementation-status: backlog + implementation-status: + if os == "win" and debug: backlog + if os == "linux" and debug: backlog + if os == "mac": backlog expected: + if os == "linux" and debug: CRASH if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="f16"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="f32"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="i32"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="u32"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec2%3Cf32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec2%3Ci32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec2%3Cu32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec3%3Cf32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec3%3Ci32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec3%3Cu32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "win" and debug: FAIL + if os == "linux" and debug: FAIL + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec4%3Cf32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec4%3Ci32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="constant";type="vec4%3Cu32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="f16"] expected: + if os == "win" and debug: FAIL if os == "mac": FAIL [:stage="override";type="f32"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="i32"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="u32"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec2%3Cf16%3E"] expected: + if os == "win" and debug: FAIL if os == "mac": FAIL [:stage="override";type="vec2%3Cf32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec2%3Ci32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec2%3Cu32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec3%3Cf16%3E"] expected: + if os == "win" and debug: FAIL if os == "mac": FAIL [:stage="override";type="vec3%3Cf32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec3%3Ci32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec3%3Cu32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec4%3Cf16%3E"] expected: + if os == "win" and debug: FAIL if os == "mac": FAIL [:stage="override";type="vec4%3Cf32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec4%3Ci32%3E"] + expected: + if os == "win" and debug: FAIL [:stage="override";type="vec4%3Cu32%3E"] + expected: + if os == "win" and debug: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acos/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acos/cts.https.html.ini index ef05b2fc9431..45f2e9c5a75c 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acos/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acos/cts.https.html.ini @@ -63,6 +63,9 @@ [:test="must_use"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL + if os == "mac": FAIL [:test="no_params"] expected: @@ -96,7 +99,6 @@ if os == "win" and debug: [PASS, FAIL] [:test="valid"] - expected: FAIL [:test="vec_bool"] expected: @@ -118,6 +120,8 @@ [:stage="constant";type="abstract-float"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL [:stage="constant";type="abstract-int"] expected: FAIL @@ -134,6 +138,8 @@ [:stage="constant";type="vec2%3Cabstract-float%3E"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] expected: FAIL @@ -150,6 +156,8 @@ [:stage="constant";type="vec3%3Cabstract-float%3E"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] expected: FAIL @@ -166,6 +174,8 @@ [:stage="constant";type="vec4%3Cabstract-float%3E"] expected: if os == "win" and debug: [PASS, FAIL] + if os == "win" and not debug: FAIL + if os == "linux": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acosh/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acosh/cts.https.html.ini index 24364171de81..8639bd0e7628 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acosh/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/acosh/cts.https.html.ini @@ -37,6 +37,7 @@ [:test="matrix"] [:test="must_use"] + expected: FAIL [:test="no_params"] @@ -56,7 +57,6 @@ [:test="u32"] [:test="valid"] - expected: FAIL [:test="vec_bool"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asin/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asin/cts.https.html.ini index 8e9a8e0b7a00..a2cab4ffb86e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asin/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asin/cts.https.html.ini @@ -41,6 +41,7 @@ [:test="matrix"] [:test="must_use"] + expected: FAIL [:test="no_params"] @@ -60,7 +61,6 @@ [:test="u32"] [:test="valid"] - expected: FAIL [:test="vec_bool"] @@ -74,6 +74,9 @@ expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="abstract-int"] expected: FAIL @@ -85,6 +88,9 @@ [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] expected: FAIL @@ -96,6 +102,9 @@ [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] expected: FAIL @@ -107,6 +116,9 @@ [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asinh/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asinh/cts.https.html.ini index f3ce348986da..7741a9fc3cdc 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asinh/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/asinh/cts.https.html.ini @@ -37,6 +37,7 @@ [:test="matrix"] [:test="must_use"] + expected: FAIL [:test="no_params"] @@ -56,7 +57,6 @@ [:test="u32"] [:test="valid"] - expected: FAIL [:test="vec_bool"] @@ -70,10 +70,12 @@ expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] @@ -81,10 +83,12 @@ expected: FAIL [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] @@ -92,10 +96,12 @@ expected: FAIL [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] @@ -103,10 +109,12 @@ expected: FAIL [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan/cts.https.html.ini index 1e02ad59fa8e..95ba62188e3e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan/cts.https.html.ini @@ -37,6 +37,7 @@ [:test="matrix"] [:test="must_use"] + expected: FAIL [:test="no_params"] @@ -56,7 +57,6 @@ [:test="u32"] [:test="valid"] - expected: FAIL [:test="vec_bool"] @@ -66,44 +66,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan2/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan2/cts.https.html.ini index 170dd515417c..f6928f063e19 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan2/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atan2/cts.https.html.ini @@ -142,13 +142,12 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:parameters:*] implementation-status: backlog [:test="af"] + expected: FAIL [:test="af_ai"] expected: FAIL [:test="af_f16"] - expected: - if os == "mac": FAIL [:test="af_f32"] @@ -159,11 +158,8 @@ expected: FAIL [:test="ai_f16"] - expected: - if os == "mac": FAIL [:test="ai_f32"] - expected: FAIL [:test="array"] @@ -176,19 +172,14 @@ [:test="enumerant"] [:test="f16_af"] - expected: - if os == "mac": FAIL [:test="f16_ai"] - expected: - if os == "mac": FAIL [:test="f16_f32"] [:test="f32_af"] [:test="f32_ai"] - expected: FAIL [:test="f32_bool"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atanh/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atanh/cts.https.html.ini index 04c10ded3b82..242fdb4f1bfa 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atanh/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/atanh/cts.https.html.ini @@ -78,6 +78,9 @@ expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="abstract-int"] expected: FAIL @@ -89,6 +92,9 @@ [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] expected: FAIL @@ -100,6 +106,9 @@ [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] expected: FAIL @@ -111,6 +120,9 @@ [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ceil/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ceil/cts.https.html.ini index 0fce7d605ff3..dc05b5e8fb5d 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ceil/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ceil/cts.https.html.ini @@ -65,44 +65,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ceil:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/clamp/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/clamp/cts.https.html.ini index b6f8532669a3..fe6c56b8a86c 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/clamp/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/clamp/cts.https.html.ini @@ -451,78 +451,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:mismatched:*] - implementation-status: backlog [:e="abstract-float"] - expected: FAIL [:e="abstract-int"] - expected: FAIL [:e="f16"] - expected: - if os == "mac": FAIL [:e="f32"] - expected: FAIL [:e="i32"] [:e="u32"] - expected: FAIL [:e="vec2%3Cabstract-float%3E"] - expected: FAIL [:e="vec2%3Cabstract-int%3E"] - expected: FAIL [:e="vec2%3Cf16%3E"] - expected: - if os == "mac": FAIL [:e="vec2%3Cf32%3E"] - expected: FAIL [:e="vec2%3Ci32%3E"] [:e="vec2%3Cu32%3E"] - expected: FAIL [:e="vec3%3Cabstract-float%3E"] - expected: FAIL [:e="vec3%3Cabstract-int%3E"] - expected: FAIL [:e="vec3%3Cf16%3E"] - expected: - if os == "mac": FAIL [:e="vec3%3Cf32%3E"] - expected: FAIL [:e="vec3%3Ci32%3E"] [:e="vec3%3Cu32%3E"] - expected: FAIL [:e="vec4%3Cabstract-float%3E"] - expected: FAIL [:e="vec4%3Cabstract-int%3E"] - expected: FAIL [:e="vec4%3Cf16%3E"] - expected: - if os == "mac": FAIL [:e="vec4%3Cf32%3E"] - expected: FAIL [:e="vec4%3Ci32%3E"] [:e="vec4%3Cu32%3E"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:must_use:*] @@ -534,14 +509,17 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] @@ -552,10 +530,12 @@ [:stage="constant";type="u32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] @@ -566,10 +546,12 @@ [:stage="constant";type="vec2%3Cu32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] @@ -580,10 +562,12 @@ [:stage="constant";type="vec3%3Cu32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cos/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cos/cts.https.html.ini index f472ed22cf1c..11cc3dfafd8f 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cos/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cos/cts.https.html.ini @@ -49,44 +49,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cos:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cosh/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cosh/cts.https.html.ini index daebb7ac2f8a..85353bae7574 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cosh/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cosh/cts.https.html.ini @@ -43,6 +43,9 @@ expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="abstract-int"] expected: FAIL @@ -54,6 +57,9 @@ [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] expected: FAIL @@ -65,6 +71,9 @@ [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] expected: FAIL @@ -76,6 +85,9 @@ [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cross/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cross/cts.https.html.ini index 78f7cf6a6c35..14ba4dbc81b3 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cross/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/cross/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cross:args:*] - implementation-status: backlog [:arg="bad_0args"] [:arg="bad_0array"] @@ -25,15 +24,14 @@ [:arg="bad_vec4"] [:arg="good"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cross:must_use:*] implementation-status: backlog [:use=false] + expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cross:values:*] @@ -44,7 +42,8 @@ expected: FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/degrees/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/degrees/cts.https.html.ini index 13fb00f995b5..9c1f058b6fac 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/degrees/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/degrees/cts.https.html.ini @@ -56,7 +56,8 @@ expected: FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] expected: @@ -68,7 +69,8 @@ expected: FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: @@ -80,7 +82,8 @@ expected: FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: @@ -92,7 +95,8 @@ expected: FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/determinant/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/determinant/cts.https.html.ini index 51002e03405d..fb6b582ce907 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/determinant/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/determinant/cts.https.html.ini @@ -118,3 +118,4 @@ expected: FAIL [:use=true] + expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini index 75ee8dfdc5c4..c29635ea1d1b 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini @@ -62,7 +62,6 @@ expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,distance:values:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini index 1ade2deae53d..981e5e0ee2da 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini @@ -52,6 +52,7 @@ expected: FAIL [:use=true] + expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,dot:values:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/exp2/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/exp2/cts.https.html.ini index 9635bd0a26ab..6b6c276b38b3 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/exp2/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/exp2/cts.https.html.ini @@ -39,14 +39,17 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp2:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] expected: @@ -55,10 +58,12 @@ [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: @@ -67,10 +72,12 @@ [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: @@ -79,10 +86,12 @@ [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/faceForward/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/faceForward/cts.https.html.ini index 4bae9922de8c..63d985ba8bb7 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/faceForward/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/faceForward/cts.https.html.ini @@ -86,7 +86,6 @@ expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,faceForward:values:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/floor/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/floor/cts.https.html.ini index 030a0a2ef217..177c15a2c41a 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/floor/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/floor/cts.https.html.ini @@ -49,44 +49,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,floor:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fma/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fma/cts.https.html.ini index 1091f4a794aa..c09fca303b5d 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fma/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fma/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,fma:args:*] - implementation-status: backlog [:arg="bad_0args"] [:arg="bad_0array"] @@ -77,15 +76,14 @@ [:arg="bad_no_parens"] [:arg="good"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,fma:must_use:*] implementation-status: backlog [:use=false] + expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,fma:values:*] @@ -96,7 +94,8 @@ expected: FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: @@ -108,7 +107,8 @@ expected: FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: @@ -120,7 +120,8 @@ expected: FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fract/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fract/cts.https.html.ini index 05889d838db3..9b434fb5e869 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fract/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/fract/cts.https.html.ini @@ -39,44 +39,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,fract:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ldexp/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ldexp/cts.https.html.ini index 1041d1c6669b..81dcae231fcd 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ldexp/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/ldexp/cts.https.html.ini @@ -76,7 +76,6 @@ expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ldexp:partial_values:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/max/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/max/cts.https.html.ini index 46a56e71466b..14591022ba43 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/max/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/max/cts.https.html.ini @@ -33,14 +33,18 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,max:values:*] - implementation-status: backlog + implementation-status: + if os == "win" and debug: backlog + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] expected: @@ -59,10 +63,12 @@ if os == "win" and debug: [PASS, FAIL] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: @@ -81,10 +87,12 @@ if os == "win" and debug: [PASS, FAIL] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: @@ -103,10 +111,12 @@ if os == "win" and debug: [PASS, FAIL] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/min/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/min/cts.https.html.ini index 15ce96d3bfdb..5f680b9028cc 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/min/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/min/cts.https.html.ini @@ -31,14 +31,17 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,min:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] @@ -49,10 +52,12 @@ [:stage="constant";type="u32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] @@ -63,10 +68,12 @@ [:stage="constant";type="vec2%3Cu32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] @@ -77,10 +84,12 @@ [:stage="constant";type="vec3%3Cu32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/radians/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/radians/cts.https.html.ini index befab4b7d625..eace7a25739c 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/radians/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/radians/cts.https.html.ini @@ -49,44 +49,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,radians:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/reflect/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/reflect/cts.https.html.ini index f1f9046bbde7..7515cba7e68f 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/reflect/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/reflect/cts.https.html.ini @@ -30,7 +30,6 @@ expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,reflect:values:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/refract/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/refract/cts.https.html.ini index 2af4b35abf43..a835d6143321 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/refract/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/refract/cts.https.html.ini @@ -86,19 +86,16 @@ expected: FAIL [:arg="vec2f";use=true] - expected: FAIL [:arg="vec3f";use=false] expected: FAIL [:arg="vec3f";use=true] - expected: FAIL [:arg="vec4f";use=false] expected: FAIL [:arg="vec4f";use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,refract:return:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/round/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/round/cts.https.html.ini index daa65163ee24..165bc48d591f 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/round/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/round/cts.https.html.ini @@ -99,14 +99,18 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,round:values:*] - implementation-status: backlog + implementation-status: + if os == "win" and debug: backlog + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] expected: @@ -117,10 +121,12 @@ if os == "win" and debug: [PASS, FAIL] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: @@ -131,10 +137,12 @@ if os == "win" and debug: [PASS, FAIL] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: @@ -145,10 +153,12 @@ if os == "win" and debug: [PASS, FAIL] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/saturate/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/saturate/cts.https.html.ini index 2640ebd90382..620326d28980 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/saturate/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/saturate/cts.https.html.ini @@ -65,44 +65,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,saturate:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sign/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sign/cts.https.html.ini index 72d4abe730ec..9fdf3ee421b8 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sign/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sign/cts.https.html.ini @@ -31,11 +31,13 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sign:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] @@ -44,7 +46,8 @@ [:stage="constant";type="i32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] @@ -53,7 +56,8 @@ [:stage="constant";type="vec2%3Ci32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] @@ -62,7 +66,8 @@ [:stage="constant";type="vec3%3Ci32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sin/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sin/cts.https.html.ini index c3f555832e99..701adb21da47 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sin/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sin/cts.https.html.ini @@ -49,44 +49,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sin:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sinh/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sinh/cts.https.html.ini index 062ee3b1c2a4..3997acec58e6 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sinh/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/sinh/cts.https.html.ini @@ -43,6 +43,9 @@ expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="abstract-int"] expected: FAIL @@ -54,6 +57,9 @@ [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] expected: FAIL @@ -65,6 +71,9 @@ [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] expected: FAIL @@ -76,6 +85,9 @@ [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: + if os == "win": FAIL + if os == "linux": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/smoothstep/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/smoothstep/cts.https.html.ini index 06adacf1cba1..2fde46446e06 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/smoothstep/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/smoothstep/cts.https.html.ini @@ -103,8 +103,6 @@ expected: FAIL [:test="mixed_f16_afloat"] - expected: - if os == "mac": FAIL [:test="mixed_f32_afloat"] @@ -131,6 +129,7 @@ [:test="u32"] [:test="valid"] + expected: FAIL [:test="vec_bool"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/step/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/step/cts.https.html.ini index 93bfea2ba2cb..414cecf7226e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/step/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/step/cts.https.html.ini @@ -63,44 +63,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,step:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupBitwise/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupBitwise/cts.https.html.ini index 158813b2f604..6711ba4894ba 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupBitwise/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupBitwise/cts.https.html.ini @@ -220,8 +220,7 @@ implementation-status: if os == "mac": backlog expected: - if os == "mac" and debug: [OK, TIMEOUT] - if os == "mac" and not debug: TIMEOUT + if os == "mac": [OK, TIMEOUT] [:retType="bool";op="subgroupAnd";paramType="abstract-float"] [:retType="bool";op="subgroupAnd";paramType="abstract-int"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tan/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tan/cts.https.html.ini index f4ce2158778a..b6051bf504bd 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tan/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tan/cts.https.html.ini @@ -39,44 +39,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tan:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tanh/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tanh/cts.https.html.ini index baee9eec1b6b..e7bb4d7b7d89 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tanh/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/tanh/cts.https.html.ini @@ -39,44 +39,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tanh:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/transpose/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/transpose/cts.https.html.ini index 09f0fe609926..14d50518117d 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/transpose/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/transpose/cts.https.html.ini @@ -38,6 +38,7 @@ expected: FAIL [:use=true] + expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,transpose:return:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/trunc/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/trunc/cts.https.html.ini index ba8f957429f8..28ec870fde7e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/trunc/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/trunc/cts.https.html.ini @@ -39,44 +39,53 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,trunc:values:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog expected: if os == "mac": CRASH [:stage="constant";type="abstract-float"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="abstract-int"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="f16"] [:stage="constant";type="f32"] [:stage="constant";type="vec2%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec2%3Cf16%3E"] [:stage="constant";type="vec2%3Cf32%3E"] [:stage="constant";type="vec3%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec3%3Cf16%3E"] [:stage="constant";type="vec3%3Cf32%3E"] [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL + expected: + if os == "mac": FAIL [:stage="constant";type="vec4%3Cf16%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/value_constructor/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/value_constructor/cts.https.html.ini index 42d671228a31..744933cefd0e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/value_constructor/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/value_constructor/cts.https.html.ini @@ -290,7 +290,6 @@ [:ctor="vec2_0";use=false] [:ctor="vec2_0";use=true] - expected: FAIL [:ctor="vec2f";use=false] @@ -299,7 +298,6 @@ [:ctor="vec3_0";use=false] [:ctor="vec3_0";use=true] - expected: FAIL [:ctor="vec3_f16";use=false] @@ -312,7 +310,6 @@ [:ctor="vec4_0";use=false] [:ctor="vec4_0";use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:partial_eval:*] @@ -468,7 +465,6 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:struct_value:*] - implementation-status: backlog [:case="atomic"] [:case="f32x2"] @@ -484,7 +480,6 @@ [:case="valid_array"] [:case="vec3u"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:struct_zero_value:*] @@ -1051,12 +1046,11 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:vector_zero_value:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:type="abstract-float"] - expected: FAIL [:type="abstract-int"] - expected: FAIL [:type="bool"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/matrix/bitwise_shift/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/matrix/bitwise_shift/cts.https.html.ini index 390c18d14d07..493a820077ea 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/matrix/bitwise_shift/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/matrix/bitwise_shift/cts.https.html.ini @@ -62,8 +62,10 @@ [:op="left";rhs="1u";test="u32";swap=true] [:op="left";rhs="1u";test="vec";swap=false] + expected: FAIL [:op="left";rhs="1u";test="vec";swap=true] + expected: FAIL [:op="left";rhs="ai";test="af";swap=false] @@ -319,8 +321,10 @@ [:op="right";rhs="1u";test="u32";swap=true] [:op="right";rhs="1u";test="vec";swap=false] + expected: FAIL [:op="right";rhs="1u";test="vec";swap=true] + expected: FAIL [:op="right";rhs="ai";test="af";swap=false] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/overload_resolution/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/overload_resolution/cts.https.html.ini index a54d11a7393b..d5d25cccd3a8 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/overload_resolution/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/overload_resolution/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,overload_resolution:implicit_conversions:*] - implementation-status: backlog [:case="absfloat_to_bool"] [:case="absfloat_to_f16"] @@ -71,10 +70,8 @@ [:case="vector_abstract_to_integer"] [:case="vector_default_ctor_abstract"] - expected: FAIL [:case="vector_default_ctor_integer"] - expected: FAIL [:case="vector_swizzle_abstract"] @@ -90,13 +87,9 @@ [cts.https.html?q=webgpu:shader,validation,expression,overload_resolution:overload_resolution:*] - implementation-status: backlog [:arg1="abstract-float";arg2="abstract-int"] - expected: FAIL [:arg1="abstract-float";arg2="f16"] - expected: - if os == "mac": FAIL [:arg1="abstract-float";arg2="f32"] @@ -105,27 +98,18 @@ [:arg1="abstract-float";arg2="u32"] [:arg1="abstract-int";arg2="abstract-float"] - expected: FAIL [:arg1="abstract-int";arg2="f16"] - expected: - if os == "mac": FAIL [:arg1="abstract-int";arg2="f32"] - expected: FAIL [:arg1="abstract-int";arg2="i32"] [:arg1="abstract-int";arg2="u32"] - expected: FAIL [:arg1="f16";arg2="abstract-float"] - expected: - if os == "mac": FAIL [:arg1="f16";arg2="abstract-int"] - expected: - if os == "mac": FAIL [:arg1="f16";arg2="f32"] @@ -136,7 +120,6 @@ [:arg1="f32";arg2="abstract-float"] [:arg1="f32";arg2="abstract-int"] - expected: FAIL [:arg1="f32";arg2="f16"] @@ -157,7 +140,6 @@ [:arg1="u32";arg2="abstract-float"] [:arg1="u32";arg2="abstract-int"] - expected: FAIL [:arg1="u32";arg2="f16"] @@ -166,7 +148,6 @@ [:arg1="u32";arg2="i32"] [:arg1="vec2%3Cabstract-float%3E";arg2="vec2%3Cabstract-int%3E"] - expected: FAIL [:arg1="vec2%3Cabstract-float%3E";arg2="vec4%3Cf32%3E"] @@ -175,7 +156,6 @@ [:arg1="vec2%3Cabstract-float%3E";arg2="vec4%3Cu32%3E"] [:arg1="vec2%3Cabstract-int%3E";arg2="vec2%3Cabstract-float%3E"] - expected: FAIL [:arg1="vec2%3Cabstract-int%3E";arg2="vec4%3Cf32%3E"] @@ -202,10 +182,8 @@ [:arg1="vec2%3Cu32%3E";arg2="vec4%3Cf16%3E"] [:arg1="vec3%3Cabstract-float%3E";arg2="vec3%3Cabstract-int%3E"] - expected: FAIL [:arg1="vec3%3Cabstract-int%3E";arg2="vec3%3Cabstract-float%3E"] - expected: FAIL [:arg1="vec3%3Cf32%3E";arg2="vec3%3Ci32%3E"] @@ -220,10 +198,8 @@ [:arg1="vec3%3Cu32%3E";arg2="vec3%3Ci32%3E"] [:arg1="vec4%3Cabstract-float%3E";arg2="vec4%3Cabstract-int%3E"] - expected: FAIL [:arg1="vec4%3Cabstract-int%3E";arg2="vec4%3Cabstract-float%3E"] - expected: FAIL [:arg1="vec4%3Cf16%3E";arg2="vec2%3Cf32%3E"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/precedence/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/precedence/cts.https.html.ini index 54b6740fa35d..dd227274173e 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/precedence/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/precedence/cts.https.html.ini @@ -657,36 +657,27 @@ [cts.https.html?q=webgpu:shader,validation,expression,precedence:other:*] - implementation-status: backlog [:expr="addr_member"] - expected: FAIL [:expr="and_addr"] [:expr="and_addr_paren"] - expected: FAIL [:expr="comp_member"] - expected: FAIL [:expr="deref_idx"] [:expr="deref_idx_paren"] - expected: FAIL [:expr="deref_member"] [:expr="deref_member_paren"] - expected: FAIL [:expr="log_and_member"] - expected: FAIL [:expr="log_or_member"] - expected: FAIL [:expr="neg_member"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,precedence:other_lhs:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/arithmetic_negation/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/arithmetic_negation/cts.https.html.ini index de1ea7de54f2..187d0d560bec 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/arithmetic_negation/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/arithmetic_negation/cts.https.html.ini @@ -30,7 +30,6 @@ [:type="texture";control=false] [:type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,unary,arithmetic_negation:scalar_vector:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/bitwise_complement/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/bitwise_complement/cts.https.html.ini index 270132e41cfb..d66a779e6350 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/bitwise_complement/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/bitwise_complement/cts.https.html.ini @@ -29,7 +29,6 @@ [:type="texture";control=false] [:type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,unary,bitwise_complement:scalar_vector:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/logical_negation/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/logical_negation/cts.https.html.ini index 0f5a86dd02ec..8e95f5e2cf24 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/logical_negation/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/unary/logical_negation/cts.https.html.ini @@ -28,7 +28,6 @@ [:type="texture";control=false] [:type="texture";control=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,unary,logical_negation:parse:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/statement/for/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/statement/for/cts.https.html.ini index 6502a6daa0a4..42dfc7c4c39f 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/statement/for/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/statement/for/cts.https.html.ini @@ -104,7 +104,6 @@ [:test="init_let"] [:test="init_let_type"] - expected: FAIL [:test="init_phony"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini index 28a2d85922e0..39a214cbe67d 100644 --- a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini +++ b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/uniformity/uniformity/cts.https.html.ini @@ -1041,7 +1041,6 @@ expected: FAIL [:case="contents_rhs_pointer_swizzle_uniform"] - expected: FAIL [:case="contents_scalar_alias_nonuniform1"] expected: FAIL diff --git a/third_party/rust/naga/.cargo-checksum.json b/third_party/rust/naga/.cargo-checksum.json index d4b1d1f82986..bd6771b38f84 100644 --- a/third_party/rust/naga/.cargo-checksum.json +++ b/third_party/rust/naga/.cargo-checksum.json @@ -1 +1 @@ -{"files":{".cargo/config.toml":"d7389d2a0c08ec72b79e83a3c76980903e3f9123625c32e69c798721193e2e74","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"487b4a8d12d4743b047ee508672935ba104ef71dbae8b1dcbe81680832fc9522","README.md":"9550cbc1a518ad0f624aabe12c342c72f670705cb4a6878c0c87d172f1dacea0","build.rs":"a08840f5b18ab09f453e1fc3a09dd16df83caa7798b6ecb7e7ac2f8addab276b","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"271f89abb20927eb9f45f552ad2365c4976885cb3dc50078950795f8741b402e","src/arena/handlevec.rs":"999de9d55d01213789072a63ad4ae9b4635e6653984d38db8b308d42bb1e7be3","src/arena/mod.rs":"3f7090caa85b04a365514eb345615dffb44c5edf32429f519882fd8b724de7b0","src/arena/range.rs":"b783969dfe32b4937593d871aa5190d561bdd79b6f615da53cb54346e300b9e2","src/arena/unique_arena.rs":"46530ea72e1758080752ab79e3645bdd8af784174f88efd730e50cdf9a903fe4","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"345a6ef4fa0e9f19ec1c87d436f4c0df13f5e3094e45f470cf8ceb5bc4641c58","src/back/glsl/features.rs":"1849818acef514642430cccef0cdbe79700a3da7de617cb001956f25b71a6330","src/back/glsl/keywords.rs":"0f004f184c4db192b4f362f92d0d6afae2a70af795949ba20c24cc2a2029ff12","src/back/glsl/mod.rs":"a556abf45d2ce8713d73d051bbf3cfec025000963b66be5ffe35d3b7224b1cbf","src/back/hlsl/conv.rs":"d238a55a66abd5d006138022d1db053d03fb5b93db6a751c4c123fb9ba07cb34","src/back/hlsl/help.rs":"05c0c739e9b7c92288e6724a742821481cbcb93200642a0812809c18f3825793","src/back/hlsl/keywords.rs":"e1cfffb593bc1909797fc45ccd25e73094aa1a04a1781ccf7f0d47569241db88","src/back/hlsl/mod.rs":"069b43df569b34c2819c1add4d25951e662f9d1958f5e1ffa7f75c3e67bcf3be","src/back/hlsl/ray.rs":"259db3bc8fd5b8ec343fb8620c7cef50048cbea2b9db1f17dc8813ff848269df","src/back/hlsl/storage.rs":"7443cea2abb6ce8d0c0c9bfe805b37b5600bd28618de44ba1ebd8e4e38eac92f","src/back/hlsl/writer.rs":"92902e9d44cb87fc486833e4246a1aff8535421b30260f8564d5de8f554a9cee","src/back/mod.rs":"dd798b019a33ef639ede0c92a126af691c9fef492e7b1107d358fb7b2a78fd2c","src/back/msl/keywords.rs":"3f0f2ff1859d29d54457c3604caffbf5f0ea678dbb7d68e0f376c2eef0634302","src/back/msl/mod.rs":"4b4e50c8d4e8c24bcff81008a02b19d5dac5db9e3899cf9219e26f3554c60f36","src/back/msl/sampler.rs":"9be8805063258b0ff6b6db2e6856d59326caa18f6f64eaf413c5abfcbd1ad341","src/back/msl/writer.rs":"6909ff9de3595583b5d7ef0ad41b0c045a903273346175d44628906375d792f3","src/back/pipeline_constants.rs":"9e51ed3812378835ca34a81f4c6f9cd070e80588c0b4ab69322bfe7c968d63da","src/back/spv/block.rs":"825afefffb6b55e2ccbed387b4bf2bac04f8c264dde2d2558800fab0f3ccfc1b","src/back/spv/helpers.rs":"37ef7388b1e97edb2682b93f1f0eceb71039ecd54923d91346d974b29322077c","src/back/spv/image.rs":"c8891267d553e28ddefa0111959f6c04b80e1cade41527645e98832238128418","src/back/spv/index.rs":"5f0561a83011bcf482575d209c549ce08fce85b9dd95f179f6e8c2b112e0c8e5","src/back/spv/instructions.rs":"ec6dff2dcaa80efc3de92aa43aadc147be5ea52b31c10d28cf91d8079decab63","src/back/spv/layout.rs":"52b965e9efd572dac72e0ee51041256fcc666eb4b2eadebe786e8ff39f6e031a","src/back/spv/mod.rs":"19947a9758ab9e03260d158a3560b67b2084f013fa40e44e9e2b48ab8cef0e6e","src/back/spv/ray.rs":"0be4b977ac5f2508e5827fa0ce64dce3ef4a46959a7d5343fa391a8460755c07","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"aea4bb4da7c0fa4e907b8f1e185433a48f2f0eb7ded97fdd3225beb3f6c1f249","src/back/spv/subgroup.rs":"9003f0f653fd466f2568341e18583d49f639a3f4e6f30dbeb069c853f846ef33","src/back/spv/writer.rs":"6035c47852d9d89caaa0d821402e998c9746b4f516aed7fe17e1cedfd1018e6d","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"593c02c5fd82404eaea810a8d29f203835c703eb584e5c56956eed8952227577","src/common/mod.rs":"dd29d3abd51cd1bdd84f35b39e665d6d3f87d98627f14a361e8e72db41152aeb","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"91435023c5ef32632598f0f5b1dc83339d392856ba88051b1c523d00606f7c06","src/common/wgsl/types.rs":"1b69663990da6095d620552f8bdb4e3fe26e0ddf6dec44c1e06daf3652afdd3d","src/compact/expressions.rs":"ecd5e2ff40198e2b7e24f2ca19abfa16167ec58e9be320c9b1dc3268a57d147f","src/compact/functions.rs":"9618539e9d3641d85c11573447d9773e7376cad23b1fd868ed5565b5eb93e05f","src/compact/handle_set_map.rs":"c190919a19f1f6b8d064459114937fdd1eaeb057963e4eab8f05a5219759cf34","src/compact/mod.rs":"834a6660504d9c3c1dab2433a91701440bb8141cca6974fb78dbe61d15ba6418","src/compact/statements.rs":"9d877ff561e2d5d45fef9a8f5e0147ad55bcbaca73898949b689b41e683fdb60","src/compact/types.rs":"a955ce5e336afa8d26f750c14d4a6638dcee6b0b5e0fcd7c446d8f88a35d8277","src/diagnostic_filter.rs":"7478de8ed51cca0ef57e29c8a0f981f2876f8ae6805bd244fc3846efea9cb3cc","src/error.rs":"2ecf733ab81d7af168f490610bc3c1eeccadd550ff3aee313cf98f8a78d94dd8","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"15a4f7c56aa44529373c7aa2a266d1582b7775833de6adc6b8f5bfd54d85a669","src/front/glsl/builtins.rs":"f38de43ada63181e5cf059fc3cfe52c302295b0eaad075b4aee1dfef6ef366b6","src/front/glsl/context.rs":"14fd933c79f49f4fb4ccabdc24ad31745777806f7464f111a4f7782662612a4b","src/front/glsl/error.rs":"74ab1a8e599d0e588d26e9066d2dbdea85bde0f229c42b8b786f14abc032794d","src/front/glsl/functions.rs":"1e8329c6de847336f5b196258d82f807f54021b6221da4d94326d071aeda25ba","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"f4f1cce6911935b305c415afe3c15f84c7824a3bb828a5d15e6f9ae4b0316df0","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"6a13b4737f53b09d5bbc0add01f8fc1b2633b7957f0318374edfe0b903939912","src/front/glsl/parser/declarations.rs":"9949649fba43636d03eaf7f7560d3bb3743b19c7204fb95859283ee84b5dd239","src/front/glsl/parser/expressions.rs":"e056fbdde3bc7c8473acbd485aecd14120d3dbefbabd813ddbc5cfedaf605889","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"75d3e203a07befd011f5693ab8f2789e4f06821badb4974043cc4ee10bd5c6c9","src/front/interpolator.rs":"4d6c6639c01fba78ffb8d0af298094cc2d6bb33f8054dad4379fd9fe3af5a4c8","src/front/mod.rs":"e78e91bf1f17409c5e25fd360415e999bb69b159750d2c1673a3db9973f586e0","src/front/spv/convert.rs":"16b8281fc1ae75dc62a02893db2c5b6d8994166e78b3b6b8cac7a01e0da4eae2","src/front/spv/error.rs":"912b7d0348d4eaaddc0049ab789ed14874b1a7d77505db092dccc132e602ee84","src/front/spv/function.rs":"6da0d7dec521039a3c81669ff171c7f15673bb3e93402f2a0f1c8e6f92d7f004","src/front/spv/image.rs":"3631c8533e69673e1de3f7896be004f154b3151ae1cf7aa2ca105df689d24e43","src/front/spv/mod.rs":"767040d6b28319b73c49cf9d1314f937c96c1888da9d81e47be270483757905a","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"4dfaeefc671b8b5a882d3dcbb1b32895eaa5b05ecd9380f30e652164b0aac58c","src/front/wgsl/error.rs":"2fcebd59620254e5d4be71696721f97acab5b176e317a864aee224978042dcee","src/front/wgsl/index.rs":"1db1bee7074a3fe9668d2c2ba0bd5053d6443f4ea19a56e4cccf2aa2bc8a33c9","src/front/wgsl/lower/construction.rs":"e9797e34f6e8be3e32579bc162bb1d3f4a2fbf7450d9a54943c16a21b6f62a46","src/front/wgsl/lower/conversion.rs":"fa17798087afb61a2791b946c99854ad55580020969dc0820be9e14f10138de1","src/front/wgsl/lower/mod.rs":"bba9e6643174e03f398d3bac4a1fe71daab7f5abe12d1b76c3512d32c908fe68","src/front/wgsl/mod.rs":"435d381a2224682d60bc40f716a12ab00f239355e400a0d0cce40c055377cd73","src/front/wgsl/parse/ast.rs":"19c7ebafbecd29a795ea11e0e0f3c1a64d406594037ece7c3dce3670d808897a","src/front/wgsl/parse/conv.rs":"12a2d7199b09d0c95c7d5125b4987d7e54fc5811acb15d50978ab5c04beab916","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"b076d8d90db1a374b4a49afbac522287f360c2d65e43db9103863e0a1c909557","src/front/wgsl/parse/directive/language_extension.rs":"b769f340f4f89410734d0d0fa3bc8530eb10ddb05bbd175da7bf61b062334cc0","src/front/wgsl/parse/lexer.rs":"a43060f637965045aabe3d6498ecf4b0bbc40aee4bb0156ca542b09b3c08178f","src/front/wgsl/parse/mod.rs":"8a86ed10bf881823b69394e6ec5568b83f387a960df4eef8bd611d7b86edc18a","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"a50bd5d6d218fc0be8876d1f9db7936ff593d93805c5e85754ae6bf277beae32","src/ir/block.rs":"b562a83a4fa53002d2ca21b4553ed8e2fa77f61e687f24fd4bbd90f1597b2a9d","src/ir/mod.rs":"df003df4951e5071186130d7676bce43b78fee445cace8a2a4002f5895546d56","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"60e8b7082d9df8c89544ad08ef7fdd8f7b75c48906cffb285fe4f53de04bb263","src/lib.rs":"c62861b9e3133d560034cdb7af9dea448c4c0d0da7b6ee2f1b69050571302c12","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"48e5c4fb524b6f39af214b250008e992766a78c9efd9cab38bcd0d6fd3dc5978","src/proc/emitter.rs":"39ac886c651e2ad33c06a676a7e4826a0e93de0af660c01e8e4b1f7406742f88","src/proc/index.rs":"9a9db3e813b92d0751f9e6edfc8147a3c5bfd30ae76e7e97e8d083f94ab48f07","src/proc/layouter.rs":"bf50fed8cf4b15400218fa1cf897f04925795939b09c9ce658eb8bc7559a5705","src/proc/mod.rs":"e31a505075a99314bb1c4062870072198d32fa6a75a369676d9748099402084f","src/proc/namer.rs":"70ad6d5fa77b3d7713e738ab1625d9c8a6f243e89239c4c8772749321a0f2c56","src/proc/terminator.rs":"66b0082dce3b29d6d20e9a891c66524d756c8e567ac844d61355248ac4623b07","src/proc/type_methods.rs":"0e36c925a2d4f3534fcea9a083344e008335fab02c287ea30a1d060307b1fa7f","src/proc/typifier.rs":"2e54c6fbe1b9afdd4875555d04905460ab6932d712c1a977c4cb4c5c7a2f43cb","src/span.rs":"fed0e579ee9aa9dc48d4f333cf376963f179441691d17cc20a454ee64d5479a9","src/valid/analyzer.rs":"9c662636da86bd9c0d3f101b8023b184a6a4d23b9dabd6c2fda33fd1ea82e835","src/valid/compose.rs":"f27a6bc13180fcd1ecbbab698faab5e25ecf0115676fda6f367fb3e8fb72a6b0","src/valid/expression.rs":"3665fb3bfe6907d5b815d58de13bdd96ffbafaafea31669b9747c802df9bff91","src/valid/function.rs":"ebdde4878f3a73b2b4fa36e55b9325f1ea95bbafce1f073f27f286140424e277","src/valid/handles.rs":"2750068c629fcad7ed876c1fd4b117d2deba5d3c9e9d6ed686df2c1a79df1fa1","src/valid/interface.rs":"836716fb8bc86ea5f82dc93d2db85409b5490c593a3b8e88312fc513c277aa33","src/valid/mod.rs":"c59c91f3a6df8df47f827c98771bc7bd5b28219f5383bf681fe75c2b4beea3ad","src/valid/type.rs":"0947af787fcbd40ac74dc6fb35c1973879cbd548d1cb815eb0907c0a7bf7c362"},"package":null} \ No newline at end of file +{"files":{".cargo/config.toml":"d7389d2a0c08ec72b79e83a3c76980903e3f9123625c32e69c798721193e2e74","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"8abcc79216118c325b9b8e46e115f03ec1c8041af7f1314b3b169357f660ba0f","README.md":"9550cbc1a518ad0f624aabe12c342c72f670705cb4a6878c0c87d172f1dacea0","build.rs":"a08840f5b18ab09f453e1fc3a09dd16df83caa7798b6ecb7e7ac2f8addab276b","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"271f89abb20927eb9f45f552ad2365c4976885cb3dc50078950795f8741b402e","src/arena/handlevec.rs":"999de9d55d01213789072a63ad4ae9b4635e6653984d38db8b308d42bb1e7be3","src/arena/mod.rs":"3f7090caa85b04a365514eb345615dffb44c5edf32429f519882fd8b724de7b0","src/arena/range.rs":"b783969dfe32b4937593d871aa5190d561bdd79b6f615da53cb54346e300b9e2","src/arena/unique_arena.rs":"46530ea72e1758080752ab79e3645bdd8af784174f88efd730e50cdf9a903fe4","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"345a6ef4fa0e9f19ec1c87d436f4c0df13f5e3094e45f470cf8ceb5bc4641c58","src/back/glsl/features.rs":"1849818acef514642430cccef0cdbe79700a3da7de617cb001956f25b71a6330","src/back/glsl/keywords.rs":"0f004f184c4db192b4f362f92d0d6afae2a70af795949ba20c24cc2a2029ff12","src/back/glsl/mod.rs":"38ee272be3f32fa9ee47780139b76e0e529fafd23528a8f2e9ca1532aa33cc1e","src/back/hlsl/conv.rs":"d238a55a66abd5d006138022d1db053d03fb5b93db6a751c4c123fb9ba07cb34","src/back/hlsl/help.rs":"05c0c739e9b7c92288e6724a742821481cbcb93200642a0812809c18f3825793","src/back/hlsl/keywords.rs":"e1cfffb593bc1909797fc45ccd25e73094aa1a04a1781ccf7f0d47569241db88","src/back/hlsl/mod.rs":"069b43df569b34c2819c1add4d25951e662f9d1958f5e1ffa7f75c3e67bcf3be","src/back/hlsl/ray.rs":"259db3bc8fd5b8ec343fb8620c7cef50048cbea2b9db1f17dc8813ff848269df","src/back/hlsl/storage.rs":"7443cea2abb6ce8d0c0c9bfe805b37b5600bd28618de44ba1ebd8e4e38eac92f","src/back/hlsl/writer.rs":"420fbd6c232179a245b48f2f2c440728c167b10cea22951713faca3f2db05a96","src/back/mod.rs":"1a7ae319f3f3f4257229ddeebbf4102d676891ada827d5fc0d28ec71a168cf0d","src/back/msl/keywords.rs":"3f0f2ff1859d29d54457c3604caffbf5f0ea678dbb7d68e0f376c2eef0634302","src/back/msl/mod.rs":"75b6dfe361b80b3a1ee78474ccb8aa3d0081415879dcb41182c1aae6e296f063","src/back/msl/sampler.rs":"9be8805063258b0ff6b6db2e6856d59326caa18f6f64eaf413c5abfcbd1ad341","src/back/msl/writer.rs":"b31a1e4763517c64121fbac9385b0a17798efba8f1dd199a87c256c451e01aee","src/back/pipeline_constants.rs":"9e51ed3812378835ca34a81f4c6f9cd070e80588c0b4ab69322bfe7c968d63da","src/back/spv/block.rs":"825afefffb6b55e2ccbed387b4bf2bac04f8c264dde2d2558800fab0f3ccfc1b","src/back/spv/helpers.rs":"37ef7388b1e97edb2682b93f1f0eceb71039ecd54923d91346d974b29322077c","src/back/spv/image.rs":"c8891267d553e28ddefa0111959f6c04b80e1cade41527645e98832238128418","src/back/spv/index.rs":"5f0561a83011bcf482575d209c549ce08fce85b9dd95f179f6e8c2b112e0c8e5","src/back/spv/instructions.rs":"ec6dff2dcaa80efc3de92aa43aadc147be5ea52b31c10d28cf91d8079decab63","src/back/spv/layout.rs":"52b965e9efd572dac72e0ee51041256fcc666eb4b2eadebe786e8ff39f6e031a","src/back/spv/mod.rs":"19947a9758ab9e03260d158a3560b67b2084f013fa40e44e9e2b48ab8cef0e6e","src/back/spv/ray.rs":"0be4b977ac5f2508e5827fa0ce64dce3ef4a46959a7d5343fa391a8460755c07","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"aea4bb4da7c0fa4e907b8f1e185433a48f2f0eb7ded97fdd3225beb3f6c1f249","src/back/spv/subgroup.rs":"9003f0f653fd466f2568341e18583d49f639a3f4e6f30dbeb069c853f846ef33","src/back/spv/writer.rs":"6035c47852d9d89caaa0d821402e998c9746b4f516aed7fe17e1cedfd1018e6d","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"33884d5cab99f8122f558da85af356744c96b60aada585ecb6f8ea7f1a3a22e7","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"289231637b08407fbe2cc976a1bab4eac4c9e66042c6618aff3af44baaff3e26","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"5e40b118fbe6efdaa24c1a63d5d86b9e1f7e95f557ad7cec35b51126b53bc256","src/common/wgsl/types.rs":"9ccdd6676437ac7e282a508403eb24742dea654b380d6419ffe5aac9cd699996","src/compact/expressions.rs":"ecd5e2ff40198e2b7e24f2ca19abfa16167ec58e9be320c9b1dc3268a57d147f","src/compact/functions.rs":"9618539e9d3641d85c11573447d9773e7376cad23b1fd868ed5565b5eb93e05f","src/compact/handle_set_map.rs":"c190919a19f1f6b8d064459114937fdd1eaeb057963e4eab8f05a5219759cf34","src/compact/mod.rs":"834a6660504d9c3c1dab2433a91701440bb8141cca6974fb78dbe61d15ba6418","src/compact/statements.rs":"9d877ff561e2d5d45fef9a8f5e0147ad55bcbaca73898949b689b41e683fdb60","src/compact/types.rs":"a955ce5e336afa8d26f750c14d4a6638dcee6b0b5e0fcd7c446d8f88a35d8277","src/diagnostic_filter.rs":"7478de8ed51cca0ef57e29c8a0f981f2876f8ae6805bd244fc3846efea9cb3cc","src/error.rs":"2ecf733ab81d7af168f490610bc3c1eeccadd550ff3aee313cf98f8a78d94dd8","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"15a4f7c56aa44529373c7aa2a266d1582b7775833de6adc6b8f5bfd54d85a669","src/front/glsl/builtins.rs":"f38de43ada63181e5cf059fc3cfe52c302295b0eaad075b4aee1dfef6ef366b6","src/front/glsl/context.rs":"14fd933c79f49f4fb4ccabdc24ad31745777806f7464f111a4f7782662612a4b","src/front/glsl/error.rs":"74ab1a8e599d0e588d26e9066d2dbdea85bde0f229c42b8b786f14abc032794d","src/front/glsl/functions.rs":"1e8329c6de847336f5b196258d82f807f54021b6221da4d94326d071aeda25ba","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"f4f1cce6911935b305c415afe3c15f84c7824a3bb828a5d15e6f9ae4b0316df0","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"6a13b4737f53b09d5bbc0add01f8fc1b2633b7957f0318374edfe0b903939912","src/front/glsl/parser/declarations.rs":"9949649fba43636d03eaf7f7560d3bb3743b19c7204fb95859283ee84b5dd239","src/front/glsl/parser/expressions.rs":"e056fbdde3bc7c8473acbd485aecd14120d3dbefbabd813ddbc5cfedaf605889","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"75d3e203a07befd011f5693ab8f2789e4f06821badb4974043cc4ee10bd5c6c9","src/front/interpolator.rs":"4d6c6639c01fba78ffb8d0af298094cc2d6bb33f8054dad4379fd9fe3af5a4c8","src/front/mod.rs":"e78e91bf1f17409c5e25fd360415e999bb69b159750d2c1673a3db9973f586e0","src/front/spv/convert.rs":"16b8281fc1ae75dc62a02893db2c5b6d8994166e78b3b6b8cac7a01e0da4eae2","src/front/spv/error.rs":"912b7d0348d4eaaddc0049ab789ed14874b1a7d77505db092dccc132e602ee84","src/front/spv/function.rs":"6da0d7dec521039a3c81669ff171c7f15673bb3e93402f2a0f1c8e6f92d7f004","src/front/spv/image.rs":"3631c8533e69673e1de3f7896be004f154b3151ae1cf7aa2ca105df689d24e43","src/front/spv/mod.rs":"767040d6b28319b73c49cf9d1314f937c96c1888da9d81e47be270483757905a","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"d7abef5dfc9e18ae549ebb87bd61f5c9cd1007bde3cf280745dbadb48667a248","src/front/wgsl/error.rs":"329fa5dae7402554eec946d79b28794cc89115effe0c9abd5e44dd28a094a5ad","src/front/wgsl/index.rs":"1db1bee7074a3fe9668d2c2ba0bd5053d6443f4ea19a56e4cccf2aa2bc8a33c9","src/front/wgsl/lower/construction.rs":"24e0eb2181974651ab9d13497cceaa126ee816c38848e9dbbd88f1e7b5f5c53c","src/front/wgsl/lower/conversion.rs":"736d6c789104dcf74590c65573c359a5bcb460e432f5bc7215dd1fdd04fbb83c","src/front/wgsl/lower/mod.rs":"bee46424cf3f66ed5e679ef560bc81fbfc9f20a5e503ba16665fb4f726e84fc4","src/front/wgsl/mod.rs":"435d381a2224682d60bc40f716a12ab00f239355e400a0d0cce40c055377cd73","src/front/wgsl/parse/ast.rs":"19c7ebafbecd29a795ea11e0e0f3c1a64d406594037ece7c3dce3670d808897a","src/front/wgsl/parse/conv.rs":"12a2d7199b09d0c95c7d5125b4987d7e54fc5811acb15d50978ab5c04beab916","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"519d7c3574c859a434d4b9febeccd1bc255d238ca1f76db68246e2ebe5a6eec4","src/front/wgsl/parse/directive/language_extension.rs":"b769f340f4f89410734d0d0fa3bc8530eb10ddb05bbd175da7bf61b062334cc0","src/front/wgsl/parse/lexer.rs":"a43060f637965045aabe3d6498ecf4b0bbc40aee4bb0156ca542b09b3c08178f","src/front/wgsl/parse/mod.rs":"8a86ed10bf881823b69394e6ec5568b83f387a960df4eef8bd611d7b86edc18a","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"a50bd5d6d218fc0be8876d1f9db7936ff593d93805c5e85754ae6bf277beae32","src/ir/block.rs":"b562a83a4fa53002d2ca21b4553ed8e2fa77f61e687f24fd4bbd90f1597b2a9d","src/ir/mod.rs":"df003df4951e5071186130d7676bce43b78fee445cace8a2a4002f5895546d56","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"60e8b7082d9df8c89544ad08ef7fdd8f7b75c48906cffb285fe4f53de04bb263","src/lib.rs":"c62861b9e3133d560034cdb7af9dea448c4c0d0da7b6ee2f1b69050571302c12","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"eee1b508ecdabe81096259ca4c8e98bc9c51e7782a7eca09e713231c99b9891e","src/proc/emitter.rs":"39ac886c651e2ad33c06a676a7e4826a0e93de0af660c01e8e4b1f7406742f88","src/proc/index.rs":"f1defc37588bb9ef8c097db8f7ebe4898a9aa182d8009d3c2e76b38b4144fb91","src/proc/layouter.rs":"bf50fed8cf4b15400218fa1cf897f04925795939b09c9ce658eb8bc7559a5705","src/proc/mod.rs":"0bcce72524eb128eaee7bdfb5efaf9408e05e1ab5ef56de87f58d727fd726c6f","src/proc/namer.rs":"b362bf03359972fad1eb727c4a97242fbce6da653c1dc0bcb6716ab2949ed761","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"b17e74bcd7920ed544f8f290ce59950bd117f1b0334cad839f151db14c79ed6f","src/proc/overloads/mathfunction.rs":"f4031d88924f78e0437177168e8c40fe52b77bebd883f8b52cb7f7c32b2897d6","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"ec73326af2c44f8c9d1b82e271aae6ba22d30895e9e759d69a09c5c65a04b4f0","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"4b5e02f20611bd24c6849e1f2c01aad4b271388407e8eb866d5a34983538ef8f","src/proc/terminator.rs":"66b0082dce3b29d6d20e9a891c66524d756c8e567ac844d61355248ac4623b07","src/proc/type_methods.rs":"edd2ff9e20f64224f5dddce8eac84a08f2b0d51f757442180fc17f529f5924f2","src/proc/typifier.rs":"e87a22ddfe70aa5a5501828dc73ed9e714327649b43e64b669274d251e6f4c20","src/span.rs":"fed0e579ee9aa9dc48d4f333cf376963f179441691d17cc20a454ee64d5479a9","src/valid/analyzer.rs":"9c662636da86bd9c0d3f101b8023b184a6a4d23b9dabd6c2fda33fd1ea82e835","src/valid/compose.rs":"f27a6bc13180fcd1ecbbab698faab5e25ecf0115676fda6f367fb3e8fb72a6b0","src/valid/expression.rs":"d5c5009591d8c38c4adf876a569b975bb1276f21148cbe04196cc2a5d385822c","src/valid/function.rs":"ebdde4878f3a73b2b4fa36e55b9325f1ea95bbafce1f073f27f286140424e277","src/valid/handles.rs":"2750068c629fcad7ed876c1fd4b117d2deba5d3c9e9d6ed686df2c1a79df1fa1","src/valid/interface.rs":"836716fb8bc86ea5f82dc93d2db85409b5490c593a3b8e88312fc513c277aa33","src/valid/mod.rs":"8f5374e68d1d0e3e931ce4331a763079ec6a7f0683e32fd4e68fa424e9e150bd","src/valid/type.rs":"0947af787fcbd40ac74dc6fb35c1973879cbd548d1cb815eb0907c0a7bf7c362"},"package":null} \ No newline at end of file diff --git a/third_party/rust/naga/Cargo.toml b/third_party/rust/naga/Cargo.toml index 52799900cb27..20eadb11c76a 100644 --- a/third_party/rust/naga/Cargo.toml +++ b/third_party/rust/naga/Cargo.toml @@ -47,6 +47,8 @@ arbitrary = [ "dep:arbitrary", "bitflags/arbitrary", "indexmap/arbitrary", + "half/arbitrary", + "half/std", ] compact = [] default = [] @@ -91,7 +93,6 @@ path = "src/lib.rs" [dependencies] log = "0.4" -num-traits = "0.2.16" [dependencies.arbitrary] version = "1.4" @@ -119,15 +120,13 @@ default-features = false [dependencies.half] version = "2.5" -features = [ - "arbitrary", - "num-traits", -] +features = ["num-traits"] +default-features = false [dependencies.hashbrown] -version = "0.14.5" +version = "0.15.2" features = [ - "ahash", + "default-hasher", "inline-more", ] default-features = false @@ -137,11 +136,15 @@ version = "0.2.1" optional = true [dependencies.indexmap] -version = "2.5.0" +version = "2.7.1" +default-features = false + +[dependencies.num-traits] +version = "0.2.16" default-features = false [dependencies.petgraph] -version = "0.7" +version = "0.8" optional = true [dependencies.pp-rs] @@ -186,9 +189,9 @@ toml = "0.8" version = "0.11" [dev-dependencies.hashbrown] -version = "0.14.5" +version = "0.15.2" features = [ - "ahash", + "default-hasher", "inline-more", "serde", ] diff --git a/third_party/rust/naga/src/back/glsl/mod.rs b/third_party/rust/naga/src/back/glsl/mod.rs index 256fceb5e18c..785e5a861b6a 100644 --- a/third_party/rust/naga/src/back/glsl/mod.rs +++ b/third_party/rust/naga/src/back/glsl/mod.rs @@ -64,7 +64,7 @@ use thiserror::Error; use crate::{ back::{self, Baked}, common, - proc::{self, ExpressionKindTracker, NameKey}, + proc::{self, NameKey}, valid, Handle, ShaderStage, TypeInner, }; use features::FeaturesManager; @@ -1678,7 +1678,6 @@ impl<'a, W: Write> Writer<'a, W> { info, expressions: &func.expressions, named_expressions: &func.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&func.expressions), }; self.named_expressions.clear(); diff --git a/third_party/rust/naga/src/back/hlsl/writer.rs b/third_party/rust/naga/src/back/hlsl/writer.rs index dd79174ac61f..a0d25e1d0d22 100644 --- a/third_party/rust/naga/src/back/hlsl/writer.rs +++ b/third_party/rust/naga/src/back/hlsl/writer.rs @@ -17,7 +17,7 @@ use super::{ use crate::{ back::{self, Baked}, common, - proc::{self, index, ExpressionKindTracker, NameKey}, + proc::{self, index, NameKey}, valid, Handle, Module, RayQueryFunction, Scalar, ScalarKind, ShaderStage, TypeInner, }; @@ -426,7 +426,6 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { info, expressions: &function.expressions, named_expressions: &function.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&function.expressions), }; let name = self.names[&NameKey::Function(handle)].clone(); @@ -467,7 +466,6 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { info, expressions: &ep.function.expressions, named_expressions: &ep.function.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&ep.function.expressions), }; self.write_wrapped_functions(module, &ctx)?; diff --git a/third_party/rust/naga/src/back/mod.rs b/third_party/rust/naga/src/back/mod.rs index dd9c7bd9387f..8eee9b6ff692 100644 --- a/third_party/rust/naga/src/back/mod.rs +++ b/third_party/rust/naga/src/back/mod.rs @@ -11,8 +11,6 @@ Backend functions that export shader [`Module`](super::Module)s into binary and use alloc::string::String; -use crate::proc::ExpressionKindTracker; - #[cfg(dot_out)] pub mod dot; #[cfg(glsl_out)] @@ -128,8 +126,6 @@ pub struct FunctionCtx<'a> { pub expressions: &'a crate::Arena, /// Map of expressions that have associated variable names pub named_expressions: &'a crate::NamedExpressions, - /// For constness checks - pub expr_kind_tracker: ExpressionKindTracker, } impl FunctionCtx<'_> { diff --git a/third_party/rust/naga/src/back/msl/mod.rs b/third_party/rust/naga/src/back/msl/mod.rs index 376662a7d0e0..01ac1ac419b4 100644 --- a/third_party/rust/naga/src/back/msl/mod.rs +++ b/third_party/rust/naga/src/back/msl/mod.rs @@ -29,6 +29,20 @@ holding the result. [msl]: https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf [all-atom]: crate::valid::Capabilities::SHADER_INT64_ATOMIC_ALL_OPS +## Pointer-typed bounds-checked expressions and OOB locals + +MSL (unlike HLSL and GLSL) has native support for pointer-typed function +arguments. When the [`BoundsCheckPolicy`] is `ReadZeroSkipWrite` and an +out-of-bounds index expression is used for such an argument, our strategy is to +pass a pointer to a dummy variable. These dummy variables are called "OOB +locals". We emit at most one OOB local per function for each type, since all +expressions producing a result of that type can share the same OOB local. (Note +that the OOB local mechanism is not actually implementing "skip write", nor even +"read zero" in some cases of read-after-write, but doing so would require +additional effort and the difference is unlikely to matter.) + +[`BoundsCheckPolicy`]: crate::proc::BoundsCheckPolicy + */ use alloc::{ diff --git a/third_party/rust/naga/src/back/msl/writer.rs b/third_party/rust/naga/src/back/msl/writer.rs index 83b8bd43d7dd..2903ad80e917 100644 --- a/third_party/rust/naga/src/back/msl/writer.rs +++ b/third_party/rust/naga/src/back/msl/writer.rs @@ -5,6 +5,7 @@ use alloc::{ vec::Vec, }; use core::{ + cmp::Ordering, fmt::{Display, Error as FmtError, Formatter, Write}, iter, }; @@ -17,7 +18,11 @@ use crate::{ arena::{Handle, HandleSet}, back::{self, Baked}, common, - proc::{self, index, ExpressionKindTracker, NameKey, TypeResolution}, + proc::{ + self, + index::{self, BoundsCheck}, + NameKey, TypeResolution, + }, valid, FastHashMap, FastHashSet, }; @@ -598,11 +603,34 @@ impl crate::Type { } } +#[derive(Clone, Copy)] enum FunctionOrigin { Handle(Handle), EntryPoint(proc::EntryPointIndex), } +trait NameKeyExt { + fn local(origin: FunctionOrigin, local_handle: Handle) -> NameKey { + match origin { + FunctionOrigin::Handle(handle) => NameKey::FunctionLocal(handle, local_handle), + FunctionOrigin::EntryPoint(idx) => NameKey::EntryPointLocal(idx, local_handle), + } + } + + /// Return the name key for a local variable used by ReadZeroSkipWrite bounds-check + /// policy when it needs to produce a pointer-typed result for an OOB access. These + /// are unique per accessed type, so the second argument is a type handle. See docs + /// for [`crate::back::msl`]. + fn oob_local_for_type(origin: FunctionOrigin, ty: Handle) -> NameKey { + match origin { + FunctionOrigin::Handle(handle) => NameKey::FunctionOobLocal(handle, ty), + FunctionOrigin::EntryPoint(idx) => NameKey::EntryPointOobLocal(idx, ty), + } + } +} + +impl NameKeyExt for NameKey {} + /// A level of detail argument. /// /// When [`BoundsCheckPolicy::Restrict`] applies to an [`ImageLoad`] access, we @@ -680,6 +708,7 @@ impl<'a> ExpressionContext<'a> { .choose_policy(pointer, &self.module.types, self.info) } + /// See docs for [`proc::index::access_needs_check`]. fn access_needs_check( &self, base: Handle, @@ -694,6 +723,19 @@ impl<'a> ExpressionContext<'a> { ) } + /// See docs for [`proc::index::bounds_check_iter`]. + fn bounds_check_iter( + &self, + chain: Handle, + ) -> impl Iterator + '_ { + index::bounds_check_iter(chain, self.module, self.function, self.info) + } + + /// See docs for [`proc::index::oob_local_types`]. + fn oob_local_types(&self) -> FastHashSet> { + index::oob_local_types(self.module, self.function, self.info, self.policies) + } + fn get_packed_vec_kind(&self, expr_handle: Handle) -> Option { match self.function.expressions[expr_handle] { crate::Expression::AccessIndex { base, index } => { @@ -901,6 +943,59 @@ impl Writer { Ok(()) } + /// Writes the local variables of the given function, as well as any extra + /// out-of-bounds locals that are needed. + /// + /// The names of the OOB locals are also added to `self.names` at the same + /// time. + fn put_locals(&mut self, context: &ExpressionContext) -> BackendResult { + let oob_local_types = context.oob_local_types(); + for &ty in oob_local_types.iter() { + let name_key = NameKey::oob_local_for_type(context.origin, ty); + self.names.insert(name_key, self.namer.call("oob")); + } + + for (name_key, ty, init) in context + .function + .local_variables + .iter() + .map(|(local_handle, local)| { + let name_key = NameKey::local(context.origin, local_handle); + (name_key, local.ty, local.init) + }) + .chain(oob_local_types.iter().map(|&ty| { + let name_key = NameKey::oob_local_for_type(context.origin, ty); + (name_key, ty, None) + })) + { + let ty_name = TypeContext { + handle: ty, + gctx: context.module.to_ctx(), + names: &self.names, + access: crate::StorageAccess::empty(), + first_time: false, + }; + write!( + self.out, + "{}{} {}", + back::INDENT, + ty_name, + self.names[&name_key] + )?; + match init { + Some(value) => { + write!(self.out, " = ")?; + self.put_expression(value, context, true)?; + } + None => { + write!(self.out, " = {{}}")?; + } + }; + writeln!(self.out, ";")?; + } + Ok(()) + } + fn put_level_of_detail( &mut self, level: LevelOfDetail, @@ -1493,13 +1588,31 @@ impl Writer { write!(self.out, "{value}u")?; } crate::Literal::I32(value) => { - write!(self.out, "{value}")?; + // `-2147483648` is parsed as unary negation of positive 2147483648. + // 2147483648 is too large for int32_t meaning the expression gets + // promoted to a int64_t which is not our intention. Avoid this by instead + // using `-2147483647 - 1`. + if value == i32::MIN { + write!(self.out, "({} - 1)", value + 1)?; + } else { + write!(self.out, "{value}")?; + } } crate::Literal::U64(value) => { write!(self.out, "{value}uL")?; } crate::Literal::I64(value) => { - write!(self.out, "{value}L")?; + // `-9223372036854775808` is parsed as unary negation of positive + // 9223372036854775808. 9223372036854775808 is too large for int64_t + // causing Metal to emit a `-Wconstant-conversion` warning, and change the + // value to `-9223372036854775808`. Which would then be negated, possibly + // causing undefined behaviour. Avoid this by instead using + // `-9223372036854775808L - 1L`. + if value == i64::MIN { + write!(self.out, "({}L - 1L)", value + 1)?; + } else { + write!(self.out, "{value}L")?; + } } crate::Literal::Bool(value) => { write!(self.out, "{value}")?; @@ -1641,7 +1754,6 @@ impl Writer { } let expression = &context.function.expressions[expr_handle]; - log::trace!("expression {:?} = {:?}", expr_handle, expression); match *expression { crate::Expression::Literal(_) | crate::Expression::Constant(_) @@ -1677,7 +1789,42 @@ impl Writer { { write!(self.out, " ? ")?; self.put_access_chain(expr_handle, policy, context)?; - write!(self.out, " : DefaultConstructible()")?; + write!(self.out, " : ")?; + + if context.resolve_type(base).pointer_space().is_some() { + // We can't just use `DefaultConstructible` if this is a pointer. + // Instead, we create a dummy local variable to serve as pointer + // target if the access is out of bounds. + let result_ty = context.info[expr_handle] + .ty + .inner_with(&context.module.types) + .pointer_base_type(); + let result_ty_handle = match result_ty { + Some(TypeResolution::Handle(handle)) => handle, + Some(TypeResolution::Value(_)) => { + // As long as the result of a pointer access expression is + // passed to a function or stored in a let binding, the + // type will be in the arena. If additional uses of + // pointers become valid, this assumption might no longer + // hold. Note that the LHS of a load or store doesn't + // take this path -- there is dedicated code in `put_load` + // and `put_store`. + unreachable!( + "Expected type {result_ty:?} of access through pointer type {base:?} to be in the arena", + ); + } + None => { + unreachable!( + "Expected access through pointer type {base:?} to return a pointer, but got {result_ty:?}", + ) + } + }; + let name_key = + NameKey::oob_local_for_type(context.origin, result_ty_handle); + self.out.write_str(&self.names[&name_key])?; + } else { + write!(self.out, "DefaultConstructible()")?; + } if !is_scoped { write!(self.out, ")")?; @@ -1717,14 +1864,7 @@ impl Writer { write!(self.out, "{name}")?; } crate::Expression::LocalVariable(handle) => { - let name_key = match context.origin { - FunctionOrigin::Handle(fun_handle) => { - NameKey::FunctionLocal(fun_handle, handle) - } - FunctionOrigin::EntryPoint(ep_index) => { - NameKey::EntryPointLocal(ep_index, handle) - } - }; + let name_key = NameKey::local(context.origin, handle); let name = &self.names[&name_key]; write!(self.out, "{name}")?; } @@ -2628,68 +2768,44 @@ impl Writer { #[allow(unused_variables)] fn put_bounds_checks( &mut self, - mut chain: Handle, + chain: Handle, context: &ExpressionContext, level: back::Level, prefix: &'static str, ) -> Result { let mut check_written = false; - // Iterate over the access chain, handling each expression. - loop { - // Produce a `GuardedIndex`, so we can shared code between the - // `Access` and `AccessIndex` cases. - let (base, guarded_index) = match context.function.expressions[chain] { - crate::Expression::Access { base, index } => { - (base, Some(index::GuardedIndex::Expression(index))) - } - crate::Expression::AccessIndex { base, index } => { - // Don't try to check indices into structs. Validation already took - // care of them, and index::needs_guard doesn't handle that case. - let mut base_inner = context.resolve_type(base); - if let crate::TypeInner::Pointer { base, .. } = *base_inner { - base_inner = &context.module.types[base].inner; - } - match *base_inner { - crate::TypeInner::Struct { .. } => (base, None), - _ => (base, Some(index::GuardedIndex::Known(index))), - } - } - _ => break, - }; + // Iterate over the access chain, handling each required bounds check. + for item in context.bounds_check_iter(chain) { + let BoundsCheck { + base, + index, + length, + } = item; - if let Some(index) = guarded_index { - if let Some(length) = context.access_needs_check(base, index) { - if check_written { - write!(self.out, " && ")?; - } else { - write!(self.out, "{level}{prefix}")?; - check_written = true; - } - - // Check that the index falls within bounds. Do this with a single - // comparison, by casting the index to `uint` first, so that negative - // indices become large positive values. - write!(self.out, "uint(")?; - self.put_index(index, context, true)?; - self.out.write_str(") < ")?; - match length { - index::IndexableLength::Known(value) => write!(self.out, "{value}")?, - index::IndexableLength::Dynamic => { - let global = - context.function.originating_global(base).ok_or_else(|| { - Error::GenericValidation( - "Could not find originating global".into(), - ) - })?; - write!(self.out, "1 + ")?; - self.put_dynamic_array_max_index(global, context)? - } - } - } + if check_written { + write!(self.out, " && ")?; + } else { + write!(self.out, "{level}{prefix}")?; + check_written = true; } - chain = base + // Check that the index falls within bounds. Do this with a single + // comparison, by casting the index to `uint` first, so that negative + // indices become large positive values. + write!(self.out, "uint(")?; + self.put_index(index, context, true)?; + self.out.write_str(") < ")?; + match length { + index::IndexableLength::Known(value) => write!(self.out, "{value}")?, + index::IndexableLength::Dynamic => { + let global = context.function.originating_global(base).ok_or_else(|| { + Error::GenericValidation("Could not find originating global".into()) + })?; + write!(self.out, "1 + ")?; + self.put_dynamic_array_max_index(global, context)? + } + } } Ok(check_written) @@ -5572,7 +5688,6 @@ template info: &mod_info[fun_handle], expressions: &fun.expressions, named_expressions: &fun.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&fun.expressions), }; writeln!(self.out)?; @@ -5676,28 +5791,7 @@ template result_struct: None, }; - for (local_handle, local) in fun.local_variables.iter() { - let ty_name = TypeContext { - handle: local.ty, - gctx: module.to_ctx(), - names: &self.names, - access: crate::StorageAccess::empty(), - first_time: false, - }; - let local_name = &self.names[&NameKey::FunctionLocal(fun_handle, local_handle)]; - write!(self.out, "{}{} {}", back::INDENT, ty_name, local_name)?; - match local.init { - Some(value) => { - write!(self.out, " = ")?; - self.put_expression(value, &context.expression, true)?; - } - None => { - write!(self.out, " = {{}}")?; - } - }; - writeln!(self.out, ";")?; - } - + self.put_locals(&context.expression)?; self.update_expressions_to_bake(fun, fun_info, &context.expression); self.put_block(back::Level(1), &fun.body, &context)?; writeln!(self.out, "}}")?; @@ -5729,7 +5823,6 @@ template info: fun_info, expressions: &fun.expressions, named_expressions: &fun.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&fun.expressions), }; self.write_wrapped_functions(module, &ctx)?; @@ -6386,14 +6479,12 @@ template // from the buffer elements. for attribute in vbm.attributes { let location = attribute.shader_location; - let am_option = am_resolved.get(&location); - if am_option.is_none() { + let Some(am) = am_resolved.get(&location) else { // This bound attribute isn't used in this entry point, so // don't bother extracting the data. Too bad we emitted the // unpacking function earlier -- it might not get used. continue; - } - let am = am_option.unwrap(); + }; let attribute_name = &am.name; let attribute_ty_name = &am.ty_name; @@ -6403,36 +6494,62 @@ template .expect("Should have generated this unpacking function earlier."); let func_name = &func.name; + // Check dimensionality of the attribute compared to the unpacking + // function. If attribute dimension > unpack dimension, we have to + // pad out the unpack value from a vec4(0, 0, 0, 1) of matching + // scalar type. Otherwise, if attribute dimension is < unpack + // dimension, then we need to explicitly truncate the result. + + let needs_padding_or_truncation = am.dimension.cmp(&func.dimension); + + if needs_padding_or_truncation != Ordering::Equal { + // Emit a comment flagging that a conversion is happening, + // since the actual logic can be at the end of a long line. + writeln!( + self.out, + "{}// {attribute_ty_name} <- {:?}", + back::Level(2), + attribute.format + )?; + } + write!(self.out, "{}{attribute_name} = ", back::Level(2),)?; - // Check dimensionality of the attribute compared to the unpacking - // function. If attribute dimension is < unpack dimension, then - // we need to explicitly cast down the result. Otherwise, if attribute - // dimension > unpack dimension, we have to pad out the unpack value - // from a vec4(0, 0, 0, 1) of matching scalar type. - - let needs_truncate_or_padding = am.dimension != func.dimension; - if needs_truncate_or_padding { + if needs_padding_or_truncation == Ordering::Greater { + // Needs padding: emit constructor call for wider type write!(self.out, "{attribute_ty_name}(")?; } + // Emit call to unpacking function write!(self.out, "{func_name}({elem_name}.data[{offset}]",)?; for i in (offset + 1)..(offset + func.byte_count) { write!(self.out, ", {elem_name}.data[{i}]")?; } write!(self.out, ")")?; - if needs_truncate_or_padding { - let zero_value = if am.ty_is_int { "0" } else { "0.0" }; - let one_value = if am.ty_is_int { "1" } else { "1.0" }; - for i in func.dimension..am.dimension { + match needs_padding_or_truncation { + Ordering::Greater => { + // Padding + let zero_value = if am.ty_is_int { "0" } else { "0.0" }; + let one_value = if am.ty_is_int { "1" } else { "1.0" }; + for i in func.dimension..am.dimension { + write!( + self.out, + ", {}", + if i == 3 { one_value } else { zero_value } + )?; + } + write!(self.out, ")")?; + } + Ordering::Less => { + // Truncate to the first `am.dimension` components write!( self.out, - ", {}", - if i == 3 { one_value } else { zero_value } + ".{}", + &"xyzw"[0..usize::try_from(am.dimension).unwrap()] )?; } - write!(self.out, ")")?; + Ordering::Equal => {} } writeln!(self.out, ";")?; @@ -6586,28 +6703,7 @@ template // Finally, declare all the local variables that we need //TODO: we can postpone this till the relevant expressions are emitted - for (local_handle, local) in fun.local_variables.iter() { - let name = &self.names[&NameKey::EntryPointLocal(ep_index as _, local_handle)]; - let ty_name = TypeContext { - handle: local.ty, - gctx: module.to_ctx(), - names: &self.names, - access: crate::StorageAccess::empty(), - first_time: false, - }; - write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?; - match local.init { - Some(value) => { - write!(self.out, " = ")?; - self.put_expression(value, &context.expression, true)?; - } - None => { - write!(self.out, " = {{}}")?; - } - }; - writeln!(self.out, ";")?; - } - + self.put_locals(&context.expression)?; self.update_expressions_to_bake(fun, fun_info, &context.expression); self.put_block(back::Level(1), &fun.body, &context)?; writeln!(self.out, "}}")?; diff --git a/third_party/rust/naga/src/back/wgsl/writer.rs b/third_party/rust/naga/src/back/wgsl/writer.rs index 9ca746e64f92..a63217098ed8 100644 --- a/third_party/rust/naga/src/back/wgsl/writer.rs +++ b/third_party/rust/naga/src/back/wgsl/writer.rs @@ -16,7 +16,7 @@ use crate::{ self, wgsl::{address_space_str, ToWgsl, TryToWgsl}, }, - proc::{self, ExpressionKindTracker, NameKey}, + proc::{self, NameKey}, valid, Handle, Module, ShaderStage, TypeInner, }; @@ -178,7 +178,6 @@ impl Writer { info: fun_info, expressions: &function.expressions, named_expressions: &function.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&function.expressions), }; // Write the function @@ -207,7 +206,6 @@ impl Writer { info: info.get_entry_point(index), expressions: &ep.function.expressions, named_expressions: &ep.function.named_expressions, - expr_kind_tracker: ExpressionKindTracker::from_arena(&ep.function.expressions), }; self.write_function(module, &ep.function, &func_ctx)?; @@ -483,7 +481,11 @@ impl Writer { Ok(()) } - fn write_type_inner(&mut self, module: &Module, inner: &TypeInner) -> BackendResult { + fn write_type_resolution( + &mut self, + module: &Module, + resolution: &proc::TypeResolution, + ) -> BackendResult { // This actually can't be factored out into a nice constructor method, // because the borrow checker needs to be able to see that the borrows // of `self.names` and `self.out` are disjoint. @@ -491,7 +493,7 @@ impl Writer { module, names: &self.names, }; - type_context.write_type_inner(inner, &mut self.out)?; + type_context.write_type_resolution(resolution, &mut self.out)?; Ok(()) } @@ -1029,26 +1031,12 @@ impl Writer { func_ctx: &back::FunctionCtx, name: &str, ) -> BackendResult { - // Some functions are marked as const, but are not yet implemented as constant expression - let quantifier = if func_ctx.expr_kind_tracker.is_impl_const(handle) { - "const" - } else { - "let" - }; // Write variable name - write!(self.out, "{quantifier} {name}")?; + write!(self.out, "let {name}")?; if self.flags.contains(WriterFlags::EXPLICIT_TYPES) { write!(self.out, ": ")?; - let ty = &func_ctx.info[handle].ty; // Write variable type - match *ty { - proc::TypeResolution::Handle(handle) => { - self.write_type(module, handle)?; - } - proc::TypeResolution::Value(ref inner) => { - self.write_type_inner(module, inner)?; - } - } + self.write_type_resolution(module, &func_ctx.info[handle].ty)?; } write!(self.out, " = ")?; @@ -1147,12 +1135,12 @@ impl Writer { crate::Literal::Bool(value) => write!(self.out, "{value}")?, crate::Literal::F64(value) => write!(self.out, "{value:?}lf")?, crate::Literal::I64(value) => { - // `-9223372036854775808li` is not valid WGSL. Nor can we use the AbstractInt - // trick above, as AbstractInt also cannot represent `9223372036854775808`. - // The most negative `i64` value can only be expressed in WGSL using - // subtracting 1 from the second most negative value. + // `-9223372036854775808li` is not valid WGSL. Nor can we simply use the + // AbstractInt trick above, as AbstractInt also cannot represent + // `9223372036854775808`. Instead construct the second most negative + // AbstractInt, subtract one from it, then cast to i64. if value == i64::MIN { - write!(self.out, "{}li - 1li", value + 1)?; + write!(self.out, "i64({} - 1)", value + 1)?; } else { write!(self.out, "{value}li")?; } @@ -1776,6 +1764,10 @@ impl TypeContext for WriterTypeContext<'_> { self.names[&NameKey::Type(handle)].as_str() } + fn write_unnamed_struct(&self, _: &TypeInner, _: &mut W) -> core::fmt::Result { + unreachable!("the WGSL back end should always provide type handles"); + } + fn write_override(&self, _: Handle, _: &mut W) -> core::fmt::Result { unreachable!("overrides should be validated out"); } diff --git a/third_party/rust/naga/src/common/diagnostic_debug.rs b/third_party/rust/naga/src/common/diagnostic_debug.rs new file mode 100644 index 000000000000..efa3ec548b3d --- /dev/null +++ b/third_party/rust/naga/src/common/diagnostic_debug.rs @@ -0,0 +1,126 @@ +//! Displaying Naga IR terms in debugging output. + +#[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] +use crate::common::wgsl::TypeContext; + +use crate::proc::TypeResolution; +use crate::{Handle, Scalar, Type, TypeInner, UniqueArena}; + +use core::fmt; + +/// A wrapper for displaying Naga IR terms in debugging output. +/// +/// This is like [`DiagnosticDisplay`], but requires weaker context +/// and produces correspondingly lower-fidelity output. For example, +/// this cannot show the override names for override-sized array +/// lengths. +/// +/// [`DiagnosticDisplay`]: super::DiagnosticDisplay +pub struct DiagnosticDebug(pub T); + +impl fmt::Debug for DiagnosticDebug<(Handle, &UniqueArena)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (handle, ctx) = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + ctx.write_type(handle, f)?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + { + let _ = ctx; + write!(f, "{handle:?}")?; + } + + Ok(()) + } +} + +impl fmt::Debug for DiagnosticDebug<(&TypeInner, &UniqueArena)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (inner, ctx) = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + ctx.write_type_inner(inner, f)?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + { + let _ = ctx; + write!(f, "{inner:?}")?; + } + + Ok(()) + } +} + +impl fmt::Debug for DiagnosticDebug<(&TypeResolution, &UniqueArena)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (resolution, ctx) = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + ctx.write_type_resolution(resolution, f)?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + { + let _ = ctx; + write!(f, "{resolution:?}")?; + } + + Ok(()) + } +} + +impl fmt::Debug for DiagnosticDebug { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let scalar = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + f.write_str(&crate::common::wgsl::TryToWgsl::to_wgsl_for_diagnostics( + scalar, + ))?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + write!(f, "{scalar:?}")?; + + Ok(()) + } +} + +pub trait ForDebug: Sized { + /// Format this type using [`core::fmt::Debug`]. + /// + /// Return a value that implements the [`core::fmt::Debug`] trait + /// by displaying `self` in a language-appropriate way. For + /// example: + /// + /// # use naga::common::ForDebug; + /// # let scalar: naga::Scalar = naga::Scalar::F32; + /// log::debug!("My scalar: {:?}", scalar.for_debug()); + fn for_debug(self) -> DiagnosticDebug { + DiagnosticDebug(self) + } +} + +impl ForDebug for Scalar {} + +pub trait ForDebugWithTypes: Sized { + /// Format this type using [`core::fmt::Debug`]. + /// + /// Given an arena to look up type handles in, return a value that + /// implements the [`core::fmt::Debug`] trait by displaying `self` + /// in a language-appropriate way. For example: + /// + /// # use naga::{Span, Type, TypeInner, Scalar, UniqueArena}; + /// # use naga::common::ForDebugWithTypes; + /// # let mut types = UniqueArena::::default(); + /// # let inner = TypeInner::Scalar(Scalar::F32); + /// # let span = Span::UNDEFINED; + /// # let handle = types.insert(Type { name: None, inner }, span); + /// log::debug!("My type: {:?}", handle.for_debug(&types)); + fn for_debug(self, types: &UniqueArena) -> DiagnosticDebug<(Self, &UniqueArena)> { + DiagnosticDebug((self, types)) + } +} + +impl ForDebugWithTypes for Handle {} +impl ForDebugWithTypes for &TypeInner {} +impl ForDebugWithTypes for &TypeResolution {} diff --git a/third_party/rust/naga/src/common/diagnostic_display.rs b/third_party/rust/naga/src/common/diagnostic_display.rs new file mode 100644 index 000000000000..2713d5a0e769 --- /dev/null +++ b/third_party/rust/naga/src/common/diagnostic_display.rs @@ -0,0 +1,120 @@ +//! Displaying Naga IR terms in diagnostic output. + +use crate::proc::{GlobalCtx, Rule, TypeResolution}; +use crate::{Handle, Scalar, Type}; + +#[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] +use crate::common::wgsl::TypeContext; + +use core::fmt; + +/// A wrapper for displaying Naga IR terms in diagnostic output. +/// +/// For some Naga IR type `T`, `DiagnosticDisplay` implements +/// [`core::fmt::Display`] in a way that displays values of type `T` +/// appropriately for diagnostic messages presented to human readers. +/// +/// For example, the implementation of [`Display`] for +/// `DiagnosticDisplay` formats the type represented by the +/// given [`Scalar`] appropriately for users. +/// +/// Some types like `Handle` require contextual information like +/// a type arena to be displayed. In such cases, we implement [`Display`] +/// for a type like `DiagnosticDisplay<(Handle, GlobalCtx)>`, where +/// the [`GlobalCtx`] type provides the necessary context. +/// +/// Do not implement this type for [`TypeInner`], as that does not +/// have enough information to display struct types correctly. +/// +/// If you only need debugging output, [`DiagnosticDebug`] uses +/// easier-to-obtain context types but still does a good enough job +/// for logging or debugging. +/// +/// [`Display`]: core::fmt::Display +/// [`GlobalCtx`]: crate::proc::GlobalCtx +/// [`TypeInner`]: crate::ir::TypeInner +/// [`DiagnosticDebug`]: super::DiagnosticDebug +/// +/// ## Language-sensitive diagnostics +/// +/// Diagnostic output ought to depend on the source language from +/// which the IR was produced: diagnostics resulting from processing +/// GLSL code should use GLSL type syntax, for example. That means +/// that `DiagnosticDisplay` ought to include some indication of which +/// notation to use. +/// +/// For the moment, only WGSL output is implemented, so +/// `DiagnosticDisplay` lacks any support for this (#7268). However, +/// the plan is that all language-independent code in Naga should use +/// `DiagnosticDisplay` wherever appropriate, such that when its +/// definition is expanded to include some indication of the right +/// source language to use, any use site that does not supply this +/// indication will provoke a compile-time error. +pub struct DiagnosticDisplay(pub T); + +impl fmt::Display for DiagnosticDisplay<(&TypeResolution, GlobalCtx<'_>)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (resolution, ctx) = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + ctx.write_type_resolution(resolution, f)?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + { + let _ = ctx; + write!(f, "{resolution:?}")?; + } + + Ok(()) + } +} + +impl fmt::Display for DiagnosticDisplay<(Handle, GlobalCtx<'_>)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (handle, ref ctx) = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + ctx.write_type(handle, f)?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + { + let _ = ctx; + write!(f, "{handle:?}")?; + } + + Ok(()) + } +} + +impl fmt::Display for DiagnosticDisplay<(&str, &Rule, GlobalCtx<'_>)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (name, rule, ref ctx) = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + ctx.write_type_rule(name, rule, f)?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + { + let _ = ctx; + write!(f, "{name}({:?}) -> {:?}", rule.arguments, rule.conclusion)?; + } + + Ok(()) + } +} + +impl fmt::Display for DiagnosticDisplay { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let scalar = self.0; + + #[cfg(any(feature = "wgsl-in", feature = "wgsl-out"))] + f.write_str(&crate::common::wgsl::TryToWgsl::to_wgsl_for_diagnostics( + scalar, + ))?; + + #[cfg(not(any(feature = "wgsl-in", feature = "wgsl-out")))] + write!(f, "{scalar:?}")?; + + Ok(()) + } +} diff --git a/third_party/rust/naga/src/common/mod.rs b/third_party/rust/naga/src/common/mod.rs index 8ed0396952cc..34de0185b69d 100644 --- a/third_party/rust/naga/src/common/mod.rs +++ b/third_party/rust/naga/src/common/mod.rs @@ -1,7 +1,13 @@ //! Code common to the front and backends for specific languages. +mod diagnostic_debug; +mod diagnostic_display; +pub mod predeclared; pub mod wgsl; +pub use diagnostic_debug::{DiagnosticDebug, ForDebug, ForDebugWithTypes}; +pub use diagnostic_display::DiagnosticDisplay; + /// Helper function that returns the string corresponding to the [`VectorSize`](crate::VectorSize) pub const fn vector_size_str(size: crate::VectorSize) -> &'static str { match size { diff --git a/third_party/rust/naga/src/common/predeclared.rs b/third_party/rust/naga/src/common/predeclared.rs new file mode 100644 index 000000000000..0c2004f7fd36 --- /dev/null +++ b/third_party/rust/naga/src/common/predeclared.rs @@ -0,0 +1,33 @@ +//! Generating names for predeclared types. + +use crate::ir; + +use alloc::format; +use alloc::string::String; + +impl ir::PredeclaredType { + pub fn struct_name(&self) -> String { + use crate::PredeclaredType as Pt; + match *self { + Pt::AtomicCompareExchangeWeakResult(scalar) => { + format!( + "__atomic_compare_exchange_result<{:?},{}>", + scalar.kind, scalar.width, + ) + } + Pt::ModfResult { size, scalar } => frexp_mod_name("modf", size, scalar), + Pt::FrexpResult { size, scalar } => frexp_mod_name("frexp", size, scalar), + } + } +} + +fn frexp_mod_name(function: &str, size: Option, scalar: ir::Scalar) -> String { + let bits = 8 * scalar.width; + match size { + Some(size) => { + let size = size as u8; + format!("__{function}_result_vec{size}_f{bits}") + } + None => format!("__{function}_result_f{bits}"), + } +} diff --git a/third_party/rust/naga/src/common/wgsl/to_wgsl.rs b/third_party/rust/naga/src/common/wgsl/to_wgsl.rs index 82fe7c592597..15221230cddb 100644 --- a/third_party/rust/naga/src/common/wgsl/to_wgsl.rs +++ b/third_party/rust/naga/src/common/wgsl/to_wgsl.rs @@ -268,9 +268,9 @@ impl TryToWgsl for crate::Scalar { use crate::Scalar; Some(match self { - Scalar::F64 => "f64", - Scalar::F32 => "f32", Scalar::F16 => "f16", + Scalar::F32 => "f32", + Scalar::F64 => "f64", Scalar::I32 => "i32", Scalar::U32 => "u32", Scalar::I64 => "i64", diff --git a/third_party/rust/naga/src/common/wgsl/types.rs b/third_party/rust/naga/src/common/wgsl/types.rs index 8c3e83159383..c118feeace71 100644 --- a/third_party/rust/naga/src/common/wgsl/types.rs +++ b/third_party/rust/naga/src/common/wgsl/types.rs @@ -39,6 +39,14 @@ pub trait TypeContext { out: &mut W, ) -> core::fmt::Result; + /// Write a [`TypeInner::Struct`] for which we are unable to find a name. + /// + /// The names of struct types are only available if we have `Handle`, + /// not from [`TypeInner`]. For logging and debugging, it's fine to just + /// write something helpful to the developer, but for generating WGSL, + /// this should be unreachable. + fn write_unnamed_struct(&self, inner: &TypeInner, out: &mut W) -> core::fmt::Result; + /// Write a [`TypeInner`] that has no representation as WGSL source, /// even including Naga extensions. /// @@ -133,23 +141,54 @@ pub trait TypeContext { } } + fn write_type_conclusion( + &self, + conclusion: &crate::proc::Conclusion, + out: &mut W, + ) -> core::fmt::Result { + use crate::proc::Conclusion as Co; + + match *conclusion { + Co::Value(ref inner) => self.write_type_inner(inner, out), + Co::Predeclared(ref predeclared) => out.write_str(&predeclared.struct_name()), + } + } + + fn write_type_rule( + &self, + name: &str, + rule: &crate::proc::Rule, + out: &mut W, + ) -> core::fmt::Result { + write!(out, "fn {name}(")?; + for (i, arg) in rule.arguments.iter().enumerate() { + if i > 0 { + out.write_str(", ")?; + } + self.write_type_resolution(arg, out)? + } + out.write_str(") -> ")?; + self.write_type_conclusion(&rule.conclusion, out)?; + Ok(()) + } + fn type_to_string(&self, handle: Handle) -> String { let mut buf = String::new(); self.write_type(handle, &mut buf).unwrap(); buf } - fn type_inner_to_string(&self, inner: &TypeInner) -> String { - let mut buf = String::new(); - self.write_type_inner(inner, &mut buf).unwrap(); - buf - } - fn type_resolution_to_string(&self, resolution: &TypeResolution) -> String { let mut buf = String::new(); self.write_type_resolution(resolution, &mut buf).unwrap(); buf } + + fn type_rule_to_string(&self, name: &str, rule: &crate::proc::Rule) -> String { + let mut buf = String::new(); + self.write_type_rule(name, rule, &mut buf).unwrap(); + buf + } } fn try_write_type_inner(ctx: &C, inner: &TypeInner, out: &mut W) -> Result<(), WriteTypeError> @@ -332,7 +371,7 @@ where write!(out, "acceleration_structure{}", caps)? } TypeInner::Struct { .. } => { - unreachable!("structs can only be referenced by name in WGSL"); + ctx.write_unnamed_struct(inner, out)?; } TypeInner::RayQuery { vertex_return } => { let caps = if vertex_return { "" } else { "" }; @@ -356,3 +395,78 @@ impl From for WriteTypeError { Self::Format(err) } } + +/// Format types as WGSL based on a [`GlobalCtx`]. +/// +/// This is probably good enough for diagnostic output, but it has some +/// limitations: +/// +/// - It does not apply [`Namer`] renamings, to avoid collisions. +/// +/// - It generates invalid WGSL for anonymous struct types. +/// +/// - It doesn't write the lengths of override-expression-sized arrays +/// correctly, unless the expression is just the override identifier. +/// +/// [`GlobalCtx`]: crate::proc::GlobalCtx +/// [`Namer`]: crate::proc::Namer +impl TypeContext for crate::proc::GlobalCtx<'_> { + fn lookup_type(&self, handle: Handle) -> &crate::Type { + &self.types[handle] + } + + fn type_name(&self, handle: Handle) -> &str { + self.types[handle] + .name + .as_deref() + .unwrap_or("{anonymous type}") + } + + fn write_unnamed_struct(&self, _: &TypeInner, out: &mut W) -> core::fmt::Result { + write!(out, "{{unnamed struct}}") + } + + fn write_override( + &self, + handle: Handle, + out: &mut W, + ) -> core::fmt::Result { + match self.overrides[handle].name { + Some(ref name) => out.write_str(name), + None => write!(out, "{{anonymous override {handle:?}}}"), + } + } +} + +/// Format types as WGSL based on a `UniqueArena`. +/// +/// This is probably only good enough for logging: +/// +/// - It does not apply any kind of [`Namer`] renamings. +/// +/// - It generates invalid WGSL for anonymous struct types. +/// +/// - It doesn't write override-sized arrays properly. +/// +/// [`Namer`]: crate::proc::Namer +impl TypeContext for crate::UniqueArena { + fn lookup_type(&self, handle: Handle) -> &crate::Type { + &self[handle] + } + + fn type_name(&self, handle: Handle) -> &str { + self[handle].name.as_deref().unwrap_or("{anonymous type}") + } + + fn write_unnamed_struct(&self, inner: &TypeInner, out: &mut W) -> core::fmt::Result { + write!(out, "{{unnamed struct {inner:?}}}") + } + + fn write_override( + &self, + handle: Handle, + out: &mut W, + ) -> core::fmt::Result { + write!(out, "{{override {handle:?}}}") + } +} diff --git a/third_party/rust/naga/src/front/type_gen.rs b/third_party/rust/naga/src/front/type_gen.rs index 687d245b1e4c..9a01b637d5a1 100644 --- a/third_party/rust/naga/src/front/type_gen.rs +++ b/third_party/rust/naga/src/front/type_gen.rs @@ -2,7 +2,7 @@ Type generators. */ -use alloc::{format, string::ToString, vec}; +use alloc::{string::ToString, vec}; use crate::{arena::Handle, span::Span}; @@ -283,12 +283,11 @@ impl crate::Module { &mut self, special_type: crate::PredeclaredType, ) -> Handle { - use core::fmt::Write; - if let Some(value) = self.special_types.predeclared_types.get(&special_type) { return *value; } + let name = special_type.struct_name(); let ty = match special_type { crate::PredeclaredType::AtomicCompareExchangeWeakResult(scalar) => { let bool_ty = self.types.insert( @@ -307,10 +306,7 @@ impl crate::Module { ); crate::Type { - name: Some(format!( - "__atomic_compare_exchange_result<{:?},{}>", - scalar.kind, scalar.width, - )), + name: Some(name), inner: crate::TypeInner::Struct { members: vec![ crate::StructMember { @@ -352,14 +348,8 @@ impl crate::Module { (float_ty, scalar.width as u32) }; - let mut type_name = "__modf_result_".to_string(); - if let Some(size) = size { - let _ = write!(type_name, "vec{}_", size as u8); - } - let _ = write!(type_name, "f{}", scalar.width * 8); - crate::Type { - name: Some(type_name), + name: Some(name), inner: crate::TypeInner::Struct { members: vec![ crate::StructMember { @@ -425,14 +415,8 @@ impl crate::Module { (float_ty, int_ty, scalar.width as u32) }; - let mut type_name = "__frexp_result_".to_string(); - if let Some(size) = size { - let _ = write!(type_name, "vec{}_", size as u8); - } - let _ = write!(type_name, "f{}", scalar.width * 8); - crate::Type { - name: Some(type_name), + name: Some(name), inner: crate::TypeInner::Struct { members: vec![ crate::StructMember { diff --git a/third_party/rust/naga/src/front/wgsl/error.rs b/third_party/rust/naga/src/front/wgsl/error.rs index 4a1f3a30a02f..b7c55a52bb6c 100644 --- a/third_party/rust/naga/src/front/wgsl/error.rs +++ b/third_party/rust/naga/src/front/wgsl/error.rs @@ -271,6 +271,75 @@ pub(crate) enum Error<'a> { expected: Range, found: u32, }, + /// No overload of this function accepts this many arguments. + TooManyArguments { + /// The name of the function being called. + function: String, + + /// The function name in the call expression. + call_span: Span, + + /// The first argument that is unacceptable. + arg_span: Span, + + /// Maximum number of arguments accepted by any overload of + /// this function. + max_arguments: u32, + }, + /// A value passed to a builtin function has a type that is not + /// accepted by any overload of the function. + WrongArgumentType { + /// The name of the function being called. + function: String, + + /// The function name in the call expression. + call_span: Span, + + /// The first argument whose type is unacceptable. + arg_span: Span, + + /// The index of the first argument whose type is unacceptable. + arg_index: u32, + + /// That argument's actual type. + arg_ty: String, + + /// The set of argument types that would have been accepted for + /// this argument, given the prior arguments. + allowed: Vec, + }, + /// A value passed to a builtin function has a type that is not + /// accepted, given the earlier arguments' types. + InconsistentArgumentType { + /// The name of the function being called. + function: String, + + /// The function name in the call expression. + call_span: Span, + + /// The first unacceptable argument. + arg_span: Span, + + /// The index of the first unacceptable argument. + arg_index: u32, + + /// The actual type of the first unacceptable argument. + arg_ty: String, + + /// The prior argument whose type made the `arg_span` argument + /// unacceptable. + inconsistent_span: Span, + + /// The index of the `inconsistent_span` argument. + inconsistent_index: u32, + + /// The type of the `inconsistent_span` argument. + inconsistent_ty: String, + + /// The types that would have been accepted instead of the + /// first unacceptable argument. + allowed: Vec, + }, FunctionReturnsVoid(Span), FunctionMustUseUnused(Span), FunctionMustUseReturnsVoid(Span, Span), @@ -402,7 +471,8 @@ impl<'a> Error<'a> { "workgroup size separator (`,`) or a closing parenthesis".to_string() } ExpectedToken::GlobalItem => concat!( - "global item (`struct`, `const`, `var`, `alias`, `fn`, `diagnostic`, `enable`, `requires`, `;`) ", + "global item (`struct`, `const`, `var`, `alias`, ", + "`fn`, `diagnostic`, `enable`, `requires`, `;`) ", "or the end of the file" ) .to_string(), @@ -831,6 +901,74 @@ impl<'a> Error<'a> { labels: vec![(span, "wrong number of arguments".into())], notes: vec![], }, + Error::TooManyArguments { + ref function, + call_span, + arg_span, + max_arguments, + } => ParseError { + message: format!("too many arguments passed to `{function}`"), + labels: vec![ + (call_span, "".into()), + (arg_span, format!("unexpected argument #{}", max_arguments + 1).into()) + ], + notes: vec![ + format!("The `{function}` function accepts at most {max_arguments} argument(s)") + ], + }, + Error::WrongArgumentType { + ref function, + call_span, + arg_span, + arg_index, + ref arg_ty, + ref allowed, + } => { + let message = format!( + "wrong type passed as argument #{} to `{function}`", + arg_index + 1, + ); + let labels = vec![ + (call_span, "".into()), + (arg_span, format!("argument #{} has type `{arg_ty}`", arg_index + 1).into()) + ]; + + let mut notes = vec![]; + notes.push(format!("`{function}` accepts the following types for argument #{}:", arg_index + 1)); + notes.extend(allowed.iter().map(|ty| format!("allowed type: {ty}"))); + + ParseError { message, labels, notes } + }, + Error::InconsistentArgumentType { + ref function, + call_span, + arg_span, + arg_index, + ref arg_ty, + inconsistent_span, + inconsistent_index, + ref inconsistent_ty, + ref allowed + } => { + let message = format!( + "inconsistent type passed as argument #{} to `{function}`", + arg_index + 1, + ); + let labels = vec![ + (call_span, "".into()), + (arg_span, format!("argument #{} has type {arg_ty}", arg_index + 1).into()), + (inconsistent_span, format!( + "this argument has type {inconsistent_ty}, which constrains subsequent arguments" + ).into()), + ]; + let mut notes = vec![ + format!("Because argument #{} has type {inconsistent_ty}, only the following types", inconsistent_index + 1), + format!("(or types that automatically convert to them) are accepted for argument #{}:", arg_index + 1), + ]; + notes.extend(allowed.iter().map(|ty| format!("allowed type: {ty}"))); + + ParseError { message, labels, notes } + } Error::FunctionReturnsVoid(span) => ParseError { message: "function does not return any value".to_string(), labels: vec![(span, "".into())], diff --git a/third_party/rust/naga/src/front/wgsl/lower/construction.rs b/third_party/rust/naga/src/front/wgsl/lower/construction.rs index fe5f4655ed94..997d5a31238b 100644 --- a/third_party/rust/naga/src/front/wgsl/lower/construction.rs +++ b/third_party/rust/naga/src/front/wgsl/lower/construction.rs @@ -167,11 +167,25 @@ impl<'source> Lowerer<'source, '_> { // Empty constructor (Components::None, dst_ty) => match dst_ty { Constructor::Type((result_ty, _)) => { - return ctx.append_expression(crate::Expression::ZeroValue(result_ty), span) + expr = crate::Expression::ZeroValue(result_ty); } - Constructor::PartialVector { .. } - | Constructor::PartialMatrix { .. } - | Constructor::PartialArray => { + Constructor::PartialVector { size } => { + // vec2(), vec3(), vec4() return vectors of abstractInts; the same + // is not true of the similar constructors for matrices or arrays. + // See https://www.w3.org/TR/WGSL/#vec2-builtin et seq. + let result_ty = ctx.module.types.insert( + crate::Type { + name: None, + inner: crate::TypeInner::Vector { + size, + scalar: crate::Scalar::ABSTRACT_INT, + }, + }, + span, + ); + expr = crate::Expression::ZeroValue(result_ty); + } + Constructor::PartialMatrix { .. } | Constructor::PartialArray => { // We have no arguments from which to infer the result type, so // partial constructors aren't acceptable here. return Err(Box::new(Error::TypeNotInferable(ty_span))); @@ -536,8 +550,14 @@ impl<'source> Lowerer<'source, '_> { // ERRORS // Bad conversion (type cast) - (Components::One { span, ty_inner, .. }, constructor) => { - let from_type = ctx.type_inner_to_string(ty_inner); + ( + Components::One { + span, component, .. + }, + constructor, + ) => { + let component_ty = &ctx.typifier()[component]; + let from_type = ctx.type_resolution_to_string(component_ty); return Err(Box::new(Error::BadTypeCast { span, from_type, diff --git a/third_party/rust/naga/src/front/wgsl/lower/conversion.rs b/third_party/rust/naga/src/front/wgsl/lower/conversion.rs index d750f20b11f9..681fd9a6f43e 100644 --- a/third_party/rust/naga/src/front/wgsl/lower/conversion.rs +++ b/third_party/rust/naga/src/front/wgsl/lower/conversion.rs @@ -71,7 +71,7 @@ impl<'source> super::ExpressionContext<'source, '_, '_> { self.convert_leaf_scalar(expr, expr_span, goal_scalar) } - /// Try to convert `expr`'s leaf scalar to `goal` using automatic conversions. + /// Try to convert `expr`'s leaf scalar to `goal_scalar` using automatic conversions. /// /// If no conversions are necessary, return `expr` unchanged. /// @@ -311,17 +311,19 @@ impl<'source> super::ExpressionContext<'source, '_, '_> { I::IntoIter: Clone, // for debugging { let types = &self.module.types; - let mut inners = components - .into_iter() - .map(|&c| self.typifier()[c].inner_with(types)); + let components_iter = components.into_iter(); log::debug!( "wgsl automatic_conversion_consensus: {}", - inners + components_iter .clone() - .map(|inner| self.type_inner_to_string(inner)) + .map(|&expr| { + let res = &self.typifier()[expr]; + self.type_resolution_to_string(res) + }) .collect::>() .join(", ") ); + let mut inners = components_iter.map(|&c| self.typifier()[c].inner_with(types)); let mut best = inners.next().unwrap().scalar().ok_or(0_usize)?; for (inner, i) in inners.zip(1..) { let scalar = inner.scalar().ok_or(i)?; @@ -339,96 +341,6 @@ impl<'source> super::ExpressionContext<'source, '_, '_> { } impl crate::TypeInner { - /// Determine whether `self` automatically converts to `goal`. - /// - /// If WGSL's automatic conversions (excluding the Load Rule) will - /// convert `self` to `goal`, then return a pair `(from, to)`, - /// where `from` and `to` are the scalar types of the leaf values - /// of `self` and `goal`. - /// - /// This function assumes that `self` and `goal` are different - /// types. Callers should first check whether any conversion is - /// needed at all. - /// - /// If the automatic conversions cannot convert `self` to `goal`, - /// return `None`. - fn automatically_converts_to( - &self, - goal: &Self, - types: &crate::UniqueArena, - ) -> Option<(crate::Scalar, crate::Scalar)> { - use crate::ScalarKind as Sk; - use crate::TypeInner as Ti; - - // Automatic conversions only change the scalar type of a value's leaves - // (e.g., `vec4` to `vec4`), never the type - // constructors applied to those scalar types (e.g., never scalar to - // `vec4`, or `vec2` to `vec3`). So first we check that the type - // constructors match, extracting the leaf scalar types in the process. - let expr_scalar; - let goal_scalar; - match (self, goal) { - (&Ti::Scalar(expr), &Ti::Scalar(goal)) => { - expr_scalar = expr; - goal_scalar = goal; - } - ( - &Ti::Vector { - size: expr_size, - scalar: expr, - }, - &Ti::Vector { - size: goal_size, - scalar: goal, - }, - ) if expr_size == goal_size => { - expr_scalar = expr; - goal_scalar = goal; - } - ( - &Ti::Matrix { - rows: expr_rows, - columns: expr_columns, - scalar: expr, - }, - &Ti::Matrix { - rows: goal_rows, - columns: goal_columns, - scalar: goal, - }, - ) if expr_rows == goal_rows && expr_columns == goal_columns => { - expr_scalar = expr; - goal_scalar = goal; - } - ( - &Ti::Array { - base: expr_base, - size: expr_size, - stride: _, - }, - &Ti::Array { - base: goal_base, - size: goal_size, - stride: _, - }, - ) if expr_size == goal_size => { - return types[expr_base] - .inner - .automatically_converts_to(&types[goal_base].inner, types); - } - _ => return None, - } - - match (expr_scalar.kind, goal_scalar.kind) { - (Sk::AbstractFloat, Sk::Float) => {} - (Sk::AbstractInt, Sk::Sint | Sk::Uint | Sk::AbstractFloat | Sk::Float) => {} - _ => return None, - } - - log::trace!(" okay: expr {expr_scalar:?}, goal {goal_scalar:?}"); - Some((expr_scalar, goal_scalar)) - } - fn automatically_convertible_scalar( &self, types: &crate::UniqueArena, diff --git a/third_party/rust/naga/src/front/wgsl/lower/mod.rs b/third_party/rust/naga/src/front/wgsl/lower/mod.rs index 1fa3ecc83f03..00f222c68dd4 100644 --- a/third_party/rust/naga/src/front/wgsl/lower/mod.rs +++ b/third_party/rust/naga/src/front/wgsl/lower/mod.rs @@ -6,7 +6,8 @@ use alloc::{ }; use core::num::NonZeroU32; -use crate::common::wgsl::TypeContext; +use crate::common::wgsl::{TryToWgsl, TypeContext}; +use crate::common::ForDebugWithTypes; use crate::front::wgsl::error::{Error, ExpectedToken, InvalidAssignmentType}; use crate::front::wgsl::index::Index; use crate::front::wgsl::parse::number::Number; @@ -411,6 +412,14 @@ impl TypeContext for ExpressionContext<'_, '_, '_> { None => write!(out, "{{anonymous override {handle:?}}}"), } } + + fn write_unnamed_struct( + &self, + _: &crate::TypeInner, + _: &mut W, + ) -> core::fmt::Result { + unreachable!("the WGSL front end should always know the type name"); + } } impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { @@ -491,6 +500,19 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { } } + /// Return a wrapper around `value` suitable for formatting. + /// + /// Return a wrapper around `value` that implements + /// [`core::fmt::Display`] in a form suitable for use in + /// diagnostic messages. + fn as_diagnostic_display( + &self, + value: T, + ) -> crate::common::DiagnosticDisplay<(T, crate::proc::GlobalCtx)> { + let ctx = self.module.to_ctx(); + crate::common::DiagnosticDisplay((value, ctx)) + } + fn append_expression( &mut self, expr: crate::Expression, @@ -526,6 +548,19 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { } } + /// Return `true` if `handle` is a constant expression. + fn is_const(&self, handle: Handle) -> bool { + use ExpressionContextType as Ect; + match self.expr_type { + Ect::Runtime(ref ctx) | Ect::Constant(Some(ref ctx)) => { + ctx.local_expression_kind_tracker.is_const(handle) + } + Ect::Constant(None) | Ect::Override => { + self.global_expression_kind_tracker.is_const(handle) + } + } + } + fn get_expression_span(&self, handle: Handle) -> Span { match self.expr_type { ExpressionContextType::Runtime(ref ctx) @@ -1281,8 +1316,8 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { if !explicit_inner.equivalent(init_inner, &ectx.module.types) { return Err(Box::new(Error::InitializationTypeMismatch { name: name.span, - expected: ectx.type_inner_to_string(explicit_inner), - got: ectx.type_inner_to_string(init_inner), + expected: ectx.type_to_string(explicit_ty), + got: ectx.type_to_string(init_ty), })); } ty = explicit_ty; @@ -1490,41 +1525,39 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { let mut emitter = Emitter::default(); emitter.start(&ctx.function.expressions); - let value = - self.expression(l.init, &mut ctx.as_expression(block, &mut emitter))?; + let explicit_ty = l + .ty + .map(|ty| self.resolve_ast_type(ty, &mut ctx.as_const(block, &mut emitter))) + .transpose()?; + + let mut ectx = ctx.as_expression(block, &mut emitter); + + let (_ty, initializer) = self.type_and_init( + l.name, + Some(l.init), + explicit_ty, + AbstractRule::Concretize, + &mut ectx, + )?; + + // We passed `Some()` to `type_and_init`, so we + // will get a lowered initializer expression back. + let initializer = + initializer.expect("type_and_init did not return an initializer"); // The WGSL spec says that any expression that refers to a // `let`-bound variable is not a const expression. This // affects when errors must be reported, so we can't even // treat suitable `let` bindings as constant as an // optimization. - ctx.local_expression_kind_tracker.force_non_const(value); - - let explicit_ty = l - .ty - .map(|ty| self.resolve_ast_type(ty, &mut ctx.as_const(block, &mut emitter))) - .transpose()?; - - if let Some(ty) = explicit_ty { - let mut ctx = ctx.as_expression(block, &mut emitter); - let init_ty = ctx.register_type(value)?; - if !ctx.module.types[ty] - .inner - .equivalent(&ctx.module.types[init_ty].inner, &ctx.module.types) - { - return Err(Box::new(Error::InitializationTypeMismatch { - name: l.name.span, - expected: ctx.type_to_string(ty), - got: ctx.type_to_string(init_ty), - })); - } - } + ctx.local_expression_kind_tracker + .force_non_const(initializer); block.extend(emitter.finish(&ctx.function.expressions)); ctx.local_table - .insert(l.handle, Declared::Runtime(Typed::Plain(value))); + .insert(l.handle, Declared::Runtime(Typed::Plain(initializer))); ctx.named_expressions - .insert(value, (l.name.name.to_string(), l.name.span)); + .insert(initializer, (l.name.name.to_string(), l.name.span)); return Ok(()); } @@ -1604,7 +1637,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { c.ty.map(|ast| self.resolve_ast_type(ast, &mut ectx.as_const())) .transpose()?; - let (ty, init) = self.type_and_init( + let (_ty, init) = self.type_and_init( c.name, Some(c.init), explicit_ty, @@ -1616,13 +1649,6 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { block.extend(emitter.finish(&ctx.function.expressions)); ctx.local_table .insert(c.handle, Declared::Const(Typed::Plain(init))); - // Only add constants of non-abstract types to the named expressions - // to prevent abstract types ending up in the IR. - let is_abstract = ctx.module.types[ty].inner.is_abstract(&ctx.module.types); - if !is_abstract { - ctx.named_expressions - .insert(init, (c.name.name.to_string(), c.name.span)); - } return Ok(()); } }, @@ -2271,16 +2297,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { // We only have to explicitly do so for shifts as their operands may be // of different types - for other binary ops this is achieved by finding // the conversion consensus for both operands. - let expr_kind_tracker = match ctx.expr_type { - ExpressionContextType::Runtime(ref ctx) - | ExpressionContextType::Constant(Some(ref ctx)) => { - &ctx.local_expression_kind_tracker - } - ExpressionContextType::Constant(None) | ExpressionContextType::Override => { - &ctx.global_expression_kind_tracker - } - }; - if !expr_kind_tracker.is_const(right) { + if !ctx.is_const(right) { left = ctx.concretize(left)?; } } @@ -2444,53 +2461,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { crate::Expression::Derivative { axis, ctrl, expr } } else if let Some(fun) = conv::map_standard_fun(function.name) { - let expected = fun.argument_count() as _; - let mut args = ctx.prepare_args(arguments, expected, span); - - let arg = self.expression(args.next()?, ctx)?; - let arg1 = args - .next() - .map(|x| self.expression(x, ctx)) - .ok() - .transpose()?; - let arg2 = args - .next() - .map(|x| self.expression(x, ctx)) - .ok() - .transpose()?; - let arg3 = args - .next() - .map(|x| self.expression(x, ctx)) - .ok() - .transpose()?; - - args.finish()?; - - if fun == crate::MathFunction::Modf || fun == crate::MathFunction::Frexp { - if let Some((size, scalar)) = match *resolve_inner!(ctx, arg) { - crate::TypeInner::Scalar(scalar) => Some((None, scalar)), - crate::TypeInner::Vector { size, scalar, .. } => { - Some((Some(size), scalar)) - } - _ => None, - } { - ctx.module.generate_predeclared_type( - if fun == crate::MathFunction::Modf { - crate::PredeclaredType::ModfResult { size, scalar } - } else { - crate::PredeclaredType::FrexpResult { size, scalar } - }, - ); - } - } - - crate::Expression::Math { - fun, - arg, - arg1, - arg2, - arg3, - } + self.math_function_helper(span, fun, arguments, ctx)? } else if let Some(fun) = Texture::map(function.name) { self.texture_sample_helper(fun, arguments, span, ctx)? } else if let Some((op, cop)) = conv::map_subgroup_operation(function.name) { @@ -2973,6 +2944,252 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { } } + /// Generate a Naga IR [`Math`] expression. + /// + /// Generate Naga IR for a call to the [`MathFunction`] `fun`, whose + /// unlowered arguments are `ast_arguments`. + /// + /// The `span` argument should give the span of the function name in the + /// call expression. + /// + /// [`Math`]: crate::ir::Expression::Math + /// [`MathFunction`]: crate::ir::MathFunction + fn math_function_helper( + &mut self, + span: Span, + fun: crate::ir::MathFunction, + ast_arguments: &[Handle>], + ctx: &mut ExpressionContext<'source, '_, '_>, + ) -> Result<'source, crate::ir::Expression> { + let mut lowered_arguments = Vec::with_capacity(ast_arguments.len()); + for &arg in ast_arguments { + let lowered = self.expression_for_abstract(arg, ctx)?; + ctx.grow_types(lowered)?; + lowered_arguments.push(lowered); + } + + let fun_overloads = fun.overloads(); + let rule = self.resolve_overloads(span, fun, fun_overloads, &lowered_arguments, ctx)?; + self.apply_automatic_conversions_for_call(&rule, &mut lowered_arguments, ctx)?; + + // If this function returns a predeclared type, register it + // in `Module::special_types`. The typifier will expect to + // be able to find it there. + if let crate::proc::Conclusion::Predeclared(predeclared) = rule.conclusion { + ctx.module.generate_predeclared_type(predeclared); + } + + Ok(crate::Expression::Math { + fun, + arg: lowered_arguments[0], + arg1: lowered_arguments.get(1).cloned(), + arg2: lowered_arguments.get(2).cloned(), + arg3: lowered_arguments.get(3).cloned(), + }) + } + + /// Choose the right overload for a function call. + /// + /// Return a [`Rule`] representing the most preferred overload in + /// `overloads` to apply to `arguments`, or return an error explaining why + /// the call is not valid. + /// + /// Use `fun` to identify the function being called in error messages; + /// `span` should be the span of the function name in the call expression. + /// + /// [`Rule`]: crate::proc::Rule + fn resolve_overloads( + &self, + span: Span, + fun: F, + overloads: O, + arguments: &[Handle], + ctx: &ExpressionContext<'source, '_, '_>, + ) -> Result<'source, crate::proc::Rule> + where + O: crate::proc::OverloadSet, + F: TryToWgsl + core::fmt::Debug + Copy, + { + let mut remaining_overloads = overloads.clone(); + let min_arguments = remaining_overloads.min_arguments(); + let max_arguments = remaining_overloads.max_arguments(); + if arguments.len() < min_arguments { + return Err(Box::new(Error::WrongArgumentCount { + span, + expected: min_arguments as u32..max_arguments as u32, + found: arguments.len() as u32, + })); + } + if arguments.len() > max_arguments { + return Err(Box::new(Error::TooManyArguments { + function: fun.to_wgsl_for_diagnostics(), + call_span: span, + arg_span: ctx.get_expression_span(arguments[max_arguments]), + max_arguments: max_arguments as _, + })); + } + + log::debug!( + "Initial overloads: {:#?}", + remaining_overloads.for_debug(&ctx.module.types) + ); + + for (arg_index, &arg) in arguments.iter().enumerate() { + let arg_type_resolution = &ctx.typifier()[arg]; + let arg_inner = arg_type_resolution.inner_with(&ctx.module.types); + log::debug!( + "Supplying argument {arg_index} of type {:?}", + arg_type_resolution.for_debug(&ctx.module.types) + ); + let next_remaining_overloads = + remaining_overloads.arg(arg_index, arg_inner, &ctx.module.types); + + // If any argument is not a constant expression, then no overloads + // that accept abstract values should be considered. + // (`OverloadSet::concrete_only` is supposed to help impose this + // restriction.) However, no `MathFunction` accepts a mix of + // abstract and concrete arguments, so we don't need to worry + // about that here. + + log::debug!( + "Remaining overloads: {:#?}", + next_remaining_overloads.for_debug(&ctx.module.types) + ); + + // If the set of remaining overloads is empty, then this argument's type + // was unacceptable. Diagnose the problem and produce an error message. + if next_remaining_overloads.is_empty() { + let function = fun.to_wgsl_for_diagnostics(); + let call_span = span; + let arg_span = ctx.get_expression_span(arg); + let arg_ty = ctx.as_diagnostic_display(arg_type_resolution).to_string(); + + // Is this type *ever* permitted for the arg_index'th argument? + // For example, `bool` is never permitted for `max`. + let only_this_argument = overloads.arg(arg_index, arg_inner, &ctx.module.types); + if only_this_argument.is_empty() { + // No overload of `fun` accepts this type as the + // arg_index'th argument. Determine the set of types that + // would ever be allowed there. + let allowed: Vec = overloads + .allowed_args(arg_index, &ctx.module.to_ctx()) + .iter() + .map(|ty| ctx.type_resolution_to_string(ty)) + .collect(); + + if allowed.is_empty() { + // No overload of `fun` accepts any argument at this + // index, so it's a simple case of excess arguments. + // However, since each `MathFunction`'s overloads all + // have the same arity, we should have detected this + // earlier. + unreachable!("expected all overloads to have the same arity"); + } + + // Some overloads of `fun` do accept this many arguments, + // but none accept one of this type. + return Err(Box::new(Error::WrongArgumentType { + function, + call_span, + arg_span, + arg_index: arg_index as u32, + arg_ty, + allowed, + })); + } + + // This argument's type is accepted by some overloads---just + // not those overloads that remain, given the prior arguments. + // For example, `max` accepts `f32` as its second argument - + // but not if the first was `i32`. + + // Build a list of the types that would have been accepted here, + // given the prior arguments. + let allowed: Vec = remaining_overloads + .allowed_args(arg_index, &ctx.module.to_ctx()) + .iter() + .map(|ty| ctx.type_resolution_to_string(ty)) + .collect(); + + // Re-run the argument list to determine which prior argument + // made this one unacceptable. + let mut remaining_overloads = overloads; + for (prior_index, &prior_expr) in arguments.iter().enumerate() { + let prior_type_resolution = &ctx.typifier()[prior_expr]; + let prior_ty = prior_type_resolution.inner_with(&ctx.module.types); + remaining_overloads = + remaining_overloads.arg(prior_index, prior_ty, &ctx.module.types); + if remaining_overloads + .arg(arg_index, arg_inner, &ctx.module.types) + .is_empty() + { + // This is the argument that killed our dreams. + let inconsistent_span = ctx.get_expression_span(arguments[prior_index]); + let inconsistent_ty = + ctx.as_diagnostic_display(prior_type_resolution).to_string(); + + if allowed.is_empty() { + // Some overloads did accept `ty` at `arg_index`, but + // given the arguments up through `prior_expr`, we see + // no types acceptable at `arg_index`. This means that some + // overloads expect fewer arguments than others. However, + // each `MathFunction`'s overloads have the same arity, so this + // should be impossible. + unreachable!("expected all overloads to have the same arity"); + } + + // Report `arg`'s type as inconsistent with `prior_expr`'s + return Err(Box::new(Error::InconsistentArgumentType { + function, + call_span, + arg_span, + arg_index: arg_index as u32, + arg_ty, + inconsistent_span, + inconsistent_index: prior_index as u32, + inconsistent_ty, + allowed, + })); + } + } + unreachable!("Failed to eliminate argument type when re-tried"); + } + remaining_overloads = next_remaining_overloads; + } + + // Select the most preferred type rule for this call, + // given the argument types supplied above. + Ok(remaining_overloads.most_preferred()) + } + + /// Apply automatic type conversions for a function call. + /// + /// Apply whatever automatic conversions are needed to pass `arguments` to + /// the function overload described by `rule`. Update `arguments` to refer + /// to the converted arguments. + fn apply_automatic_conversions_for_call( + &self, + rule: &crate::proc::Rule, + arguments: &mut [Handle], + ctx: &mut ExpressionContext<'source, '_, '_>, + ) -> Result<'source, ()> { + for (i, argument) in arguments.iter_mut().enumerate() { + let goal_inner = rule.arguments[i].inner_with(&ctx.module.types); + let converted = match goal_inner.scalar_for_conversions(&ctx.module.types) { + Some(goal_scalar) => { + let arg_span = ctx.get_expression_span(*argument); + ctx.try_automatic_conversion_for_leaf_scalar(*argument, goal_scalar, arg_span)? + } + // No conversion is necessary. + None => *argument, + }; + + *argument = converted; + } + + Ok(()) + } + fn atomic_pointer( &mut self, expr: Handle>, diff --git a/third_party/rust/naga/src/front/wgsl/parse/directive/enable_extension.rs b/third_party/rust/naga/src/front/wgsl/parse/directive/enable_extension.rs index 4fa979988205..45b359a55631 100644 --- a/third_party/rust/naga/src/front/wgsl/parse/directive/enable_extension.rs +++ b/third_party/rust/naga/src/front/wgsl/parse/directive/enable_extension.rs @@ -66,6 +66,7 @@ impl EnableExtension { const F16: &'static str = "f16"; const CLIP_DISTANCES: &'static str = "clip_distances"; const DUAL_SOURCE_BLENDING: &'static str = "dual_source_blending"; + const SUBGROUPS: &'static str = "subgroups"; /// Convert from a sentinel word in WGSL into its associated [`EnableExtension`], if possible. pub(crate) fn from_ident(word: &str, span: Span) -> Result { @@ -77,6 +78,7 @@ impl EnableExtension { Self::DUAL_SOURCE_BLENDING => { Self::Implemented(ImplementedEnableExtension::DualSourceBlending) } + Self::SUBGROUPS => Self::Unimplemented(UnimplementedEnableExtension::Subgroups), _ => return Err(Box::new(Error::UnknownEnableExtension(span, word))), }) } @@ -90,6 +92,7 @@ impl EnableExtension { }, Self::Unimplemented(kind) => match kind { UnimplementedEnableExtension::ClipDistances => Self::CLIP_DISTANCES, + UnimplementedEnableExtension::Subgroups => Self::SUBGROUPS, }, } } @@ -98,18 +101,18 @@ impl EnableExtension { /// A variant of [`EnableExtension::Implemented`]. #[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)] pub enum ImplementedEnableExtension { - /// Enables the `blend_src` attribute in WGSL. - /// - /// In the WGSL standard, this corresponds to [`enable dual_source_blending;`]. - /// - /// [`enable dual_source_blending;`]: https://www.w3.org/TR/WGSL/#extension-dual_source_blending - DualSourceBlending, /// Enables `f16`/`half` primitive support in all shader languages. /// /// In the WGSL standard, this corresponds to [`enable f16;`]. /// /// [`enable f16;`]: https://www.w3.org/TR/WGSL/#extension-f16 F16, + /// Enables the `blend_src` attribute in WGSL. + /// + /// In the WGSL standard, this corresponds to [`enable dual_source_blending;`]. + /// + /// [`enable dual_source_blending;`]: https://www.w3.org/TR/WGSL/#extension-dual_source_blending + DualSourceBlending, } /// A variant of [`EnableExtension::Unimplemented`]. @@ -121,12 +124,19 @@ pub enum UnimplementedEnableExtension { /// /// [`enable clip_distances;`]: https://www.w3.org/TR/WGSL/#extension-clip_distances ClipDistances, + /// Enables subgroup built-ins in all languages. + /// + /// In the WGSL standard, this corresponds to [`enable subgroups;`]. + /// + /// [`enable subgroups;`]: https://www.w3.org/TR/WGSL/#extension-subgroups + Subgroups, } impl UnimplementedEnableExtension { pub(crate) const fn tracking_issue_num(self) -> u16 { match self { Self::ClipDistances => 6236, + Self::Subgroups => 5555, } } } diff --git a/third_party/rust/naga/src/proc/constant_evaluator.rs b/third_party/rust/naga/src/proc/constant_evaluator.rs index 406dbbef52d3..f0085a32eea4 100644 --- a/third_party/rust/naga/src/proc/constant_evaluator.rs +++ b/third_party/rust/naga/src/proc/constant_evaluator.rs @@ -363,8 +363,6 @@ struct FunctionLocalData<'a> { #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] pub enum ExpressionKind { - /// If const is also implemented as const - ImplConst, Const, Override, Runtime, @@ -392,21 +390,13 @@ impl ExpressionKindTracker { } pub fn is_const(&self, h: Handle) -> bool { - matches!( - self.type_of(h), - ExpressionKind::Const | ExpressionKind::ImplConst - ) - } - - /// Returns `true` if naga can also evaluate expression as const - pub fn is_impl_const(&self, h: Handle) -> bool { - matches!(self.type_of(h), ExpressionKind::ImplConst) + matches!(self.type_of(h), ExpressionKind::Const) } pub fn is_const_or_override(&self, h: Handle) -> bool { matches!( self.type_of(h), - ExpressionKind::Const | ExpressionKind::Override | ExpressionKind::ImplConst + ExpressionKind::Const | ExpressionKind::Override ) } @@ -427,14 +417,13 @@ impl ExpressionKindTracker { } fn type_of_with_expr(&self, expr: &Expression) -> ExpressionKind { - use crate::MathFunction as Mf; match *expr { Expression::Literal(_) | Expression::ZeroValue(_) | Expression::Constant(_) => { - ExpressionKind::ImplConst + ExpressionKind::Const } Expression::Override(_) => ExpressionKind::Override, Expression::Compose { ref components, .. } => { - let mut expr_type = ExpressionKind::ImplConst; + let mut expr_type = ExpressionKind::Const; for component in components { expr_type = expr_type.max(self.type_of(*component)) } @@ -445,16 +434,13 @@ impl ExpressionKindTracker { Expression::Access { base, index } => self.type_of(base).max(self.type_of(index)), Expression::Swizzle { vector, .. } => self.type_of(vector), Expression::Unary { expr, .. } => self.type_of(expr), - Expression::Binary { left, right, .. } => self - .type_of(left) - .max(self.type_of(right)) - .max(ExpressionKind::Const), + Expression::Binary { left, right, .. } => self.type_of(left).max(self.type_of(right)), Expression::Math { - fun, arg, arg1, arg2, arg3, + .. } => self .type_of(arg) .max( @@ -468,33 +454,8 @@ impl ExpressionKindTracker { .max( arg3.map(|arg| self.type_of(arg)) .unwrap_or(ExpressionKind::Const), - ) - .max( - if matches!( - fun, - Mf::Dot - | Mf::Outer - | Mf::Distance - | Mf::Length - | Mf::Normalize - | Mf::FaceForward - | Mf::Reflect - | Mf::Refract - | Mf::Ldexp - | Mf::Modf - | Mf::Mix - | Mf::Frexp - ) { - ExpressionKind::Const - } else { - ExpressionKind::ImplConst - }, ), - Expression::As { convert, expr, .. } => self.type_of(expr).max(if convert.is_some() { - ExpressionKind::ImplConst - } else { - ExpressionKind::Const - }), + Expression::As { expr, .. } => self.type_of(expr), Expression::Select { condition, accept, @@ -502,8 +463,7 @@ impl ExpressionKindTracker { } => self .type_of(condition) .max(self.type_of(accept)) - .max(self.type_of(reject)) - .max(ExpressionKind::Const), + .max(self.type_of(reject)), Expression::Relational { argument, .. } => self.type_of(argument), Expression::ArrayLength(expr) => self.type_of(expr), _ => ExpressionKind::Runtime, @@ -797,7 +757,6 @@ impl<'a> ConstantEvaluator<'a> { span: Span, ) -> Result, ConstantEvaluatorError> { match self.expression_kind_tracker.type_of_with_expr(&expr) { - ExpressionKind::ImplConst => self.try_eval_and_append_impl(&expr, span), ExpressionKind::Const => { let eval_result = self.try_eval_and_append_impl(&expr, span); // We should be able to evaluate `Const` expressions at this @@ -1349,9 +1308,43 @@ impl<'a> ConstantEvaluator<'a> { // vector crate::MathFunction::Cross => self.cross_product(arg, arg1.unwrap(), span), - fun => Err(ConstantEvaluatorError::NotImplemented(format!( - "{fun:?} built-in function" - ))), + // unimplemented + crate::MathFunction::Atan2 + | crate::MathFunction::Modf + | crate::MathFunction::Frexp + | crate::MathFunction::Ldexp + | crate::MathFunction::Dot + | crate::MathFunction::Outer + | crate::MathFunction::Distance + | crate::MathFunction::Length + | crate::MathFunction::Normalize + | crate::MathFunction::FaceForward + | crate::MathFunction::Reflect + | crate::MathFunction::Refract + | crate::MathFunction::Mix + | crate::MathFunction::SmoothStep + | crate::MathFunction::Inverse + | crate::MathFunction::Transpose + | crate::MathFunction::Determinant + | crate::MathFunction::QuantizeToF16 + | crate::MathFunction::ExtractBits + | crate::MathFunction::InsertBits + | crate::MathFunction::Pack4x8snorm + | crate::MathFunction::Pack4x8unorm + | crate::MathFunction::Pack2x16snorm + | crate::MathFunction::Pack2x16unorm + | crate::MathFunction::Pack2x16float + | crate::MathFunction::Pack4xI8 + | crate::MathFunction::Pack4xU8 + | crate::MathFunction::Unpack4x8snorm + | crate::MathFunction::Unpack4x8unorm + | crate::MathFunction::Unpack2x16snorm + | crate::MathFunction::Unpack2x16unorm + | crate::MathFunction::Unpack2x16float + | crate::MathFunction::Unpack4xI8 + | crate::MathFunction::Unpack4xU8 => Err(ConstantEvaluatorError::NotImplemented( + format!("{fun:?} built-in function"), + )), } } @@ -2268,10 +2261,13 @@ impl<'a> ConstantEvaluator<'a> { | BinaryOperator::And | BinaryOperator::ExclusiveOr | BinaryOperator::InclusiveOr - | BinaryOperator::LogicalAnd - | BinaryOperator::LogicalOr | BinaryOperator::ShiftLeft | BinaryOperator::ShiftRight => left_ty, + + BinaryOperator::LogicalAnd | BinaryOperator::LogicalOr => { + // Not supported on vectors + return Err(ConstantEvaluatorError::InvalidBinaryOpArgs); + } }; let components = components diff --git a/third_party/rust/naga/src/proc/index.rs b/third_party/rust/naga/src/proc/index.rs index 9f1c0ddb796b..cf6a127acedd 100644 --- a/third_party/rust/naga/src/proc/index.rs +++ b/third_party/rust/naga/src/proc/index.rs @@ -2,8 +2,10 @@ Definitions for index bounds checking. */ +use core::iter::{self, zip}; + use crate::arena::{Handle, HandleSet, UniqueArena}; -use crate::valid; +use crate::{valid, FastHashSet}; /// How should code generated by Naga do bounds checks? /// @@ -340,6 +342,128 @@ pub fn access_needs_check( Some(length) } +/// Items returned by the [`bounds_check_iter`] iterator. +#[cfg_attr(not(feature = "msl-out"), allow(dead_code))] +pub(crate) struct BoundsCheck { + /// The base of the [`Access`] or [`AccessIndex`] expression. + /// + /// [`Access`]: crate::Expression::Access + /// [`AccessIndex`]: crate::Expression::AccessIndex + pub base: Handle, + + /// The index being accessed. + pub index: GuardedIndex, + + /// The length of `base`. + pub length: IndexableLength, +} + +/// Returns an iterator of accesses within the chain of `Access` and +/// `AccessIndex` expressions starting from `chain` that may need to be +/// bounds-checked at runtime. +/// +/// Items are yielded as [`BoundsCheck`] instances. +/// +/// Accesses through a struct are omitted, since you never need a bounds check +/// for accessing a struct field. +/// +/// If `chain` isn't an `Access` or `AccessIndex` expression at all, the +/// iterator is empty. +pub(crate) fn bounds_check_iter<'a>( + mut chain: Handle, + module: &'a crate::Module, + function: &'a crate::Function, + info: &'a valid::FunctionInfo, +) -> impl Iterator + 'a { + iter::from_fn(move || { + let (next_expr, result) = match function.expressions[chain] { + crate::Expression::Access { base, index } => { + (base, Some((base, GuardedIndex::Expression(index)))) + } + crate::Expression::AccessIndex { base, index } => { + // Don't try to check indices into structs. Validation already took + // care of them, and access_needs_check doesn't handle that case. + let mut base_inner = info[base].ty.inner_with(&module.types); + if let crate::TypeInner::Pointer { base, .. } = *base_inner { + base_inner = &module.types[base].inner; + } + match *base_inner { + crate::TypeInner::Struct { .. } => (base, None), + _ => (base, Some((base, GuardedIndex::Known(index)))), + } + } + _ => return None, + }; + chain = next_expr; + Some(result) + }) + .flatten() + .filter_map(|(base, index)| { + access_needs_check(base, index, module, &function.expressions, info).map(|length| { + BoundsCheck { + base, + index, + length, + } + }) + }) +} + +/// Returns all the types which we need out-of-bounds locals for; that is, +/// all of the types which the code might attempt to get an out-of-bounds +/// pointer to, in which case we yield a pointer to the out-of-bounds local +/// of the correct type. +pub fn oob_local_types( + module: &crate::Module, + function: &crate::Function, + info: &valid::FunctionInfo, + policies: BoundsCheckPolicies, +) -> FastHashSet> { + let mut result = FastHashSet::default(); + + if policies.index != BoundsCheckPolicy::ReadZeroSkipWrite { + return result; + } + + for statement in &function.body { + // The only situation in which we end up actually needing to create an + // out-of-bounds pointer is when passing one to a function. + // + // This is because pointers are never baked; they're just inlined everywhere + // they're used. That means that loads can just return 0, and stores can just do + // nothing; functions are the only case where you actually *have* to produce a + // pointer. + if let crate::Statement::Call { + function: callee, + ref arguments, + .. + } = *statement + { + // Now go through the arguments of the function looking for pointers which need bounds checks. + for (arg_info, &arg) in zip(&module.functions[callee].arguments, arguments) { + match module.types[arg_info.ty].inner { + crate::TypeInner::ValuePointer { .. } => { + // `ValuePointer`s should only ever be used when resolving the types of + // expressions, since the arena can no longer be modified at that point; things + // in the arena should always use proper `Pointer`s. + unreachable!("`ValuePointer` found in arena") + } + crate::TypeInner::Pointer { base, .. } => { + if bounds_check_iter(arg, module, function, info) + .next() + .is_some() + { + result.insert(base); + } + } + _ => continue, + }; + } + } + } + result +} + impl GuardedIndex { /// Make a `GuardedIndex::Known` from a `GuardedIndex::Expression` if possible. /// diff --git a/third_party/rust/naga/src/proc/mod.rs b/third_party/rust/naga/src/proc/mod.rs index 787a2f1a63c4..4ca4da55478e 100644 --- a/third_party/rust/naga/src/proc/mod.rs +++ b/third_party/rust/naga/src/proc/mod.rs @@ -7,6 +7,7 @@ mod emitter; pub mod index; mod layouter; mod namer; +mod overloads; mod terminator; mod type_methods; mod typifier; @@ -18,6 +19,7 @@ pub use emitter::Emitter; pub use index::{BoundsCheckPolicies, BoundsCheckPolicy, IndexableLength, IndexableLengthError}; pub use layouter::{Alignment, LayoutError, LayoutErrorInner, Layouter, TypeLayout}; pub use namer::{EntryPointIndex, NameKey, Namer}; +pub use overloads::{Conclusion, MissingSpecialType, OverloadSet, Rule}; pub use terminator::ensure_block_returns; use thiserror::Error; pub use type_methods::min_max_float_representable_by; @@ -119,6 +121,8 @@ impl crate::Literal { (value, crate::ScalarKind::Sint, 8) => Some(Self::I64(value as _)), (1, crate::ScalarKind::Bool, crate::BOOL_WIDTH) => Some(Self::Bool(true)), (0, crate::ScalarKind::Bool, crate::BOOL_WIDTH) => Some(Self::Bool(false)), + (value, crate::ScalarKind::AbstractInt, 8) => Some(Self::AbstractInt(value as _)), + (value, crate::ScalarKind::AbstractFloat, 8) => Some(Self::AbstractFloat(value as _)), _ => None, } } diff --git a/third_party/rust/naga/src/proc/namer.rs b/third_party/rust/naga/src/proc/namer.rs index 6b831cce7902..05678242f854 100644 --- a/third_party/rust/naga/src/proc/namer.rs +++ b/third_party/rust/naga/src/proc/namer.rs @@ -21,9 +21,19 @@ pub enum NameKey { Function(Handle), FunctionArgument(Handle, u32), FunctionLocal(Handle, Handle), + + /// A local variable used by ReadZeroSkipWrite bounds-check policy + /// when it needs to produce a pointer-typed result for an OOB access. + /// These are unique per accessed type, so the second element is a + /// type handle. See docs for [`crate::back::msl`]. + FunctionOobLocal(Handle, Handle), + EntryPoint(EntryPointIndex), EntryPointLocal(EntryPointIndex, Handle), EntryPointArgument(EntryPointIndex, u32), + + /// Entry point version of `FunctionOobLocal`. + EntryPointOobLocal(EntryPointIndex, Handle), } /// This processor assigns names to all the things in a module diff --git a/third_party/rust/naga/src/proc/overloads/any_overload_set.rs b/third_party/rust/naga/src/proc/overloads/any_overload_set.rs new file mode 100644 index 000000000000..f3228bb07f37 --- /dev/null +++ b/third_party/rust/naga/src/proc/overloads/any_overload_set.rs @@ -0,0 +1,120 @@ +//! Dynamically dispatched [`OverloadSet`]s. + +use crate::common::DiagnosticDebug; +use crate::ir; +use crate::proc::overloads::{list, regular, OverloadSet, Rule}; +use crate::proc::{GlobalCtx, TypeResolution}; + +use alloc::vec::Vec; +use core::fmt; + +macro_rules! define_any_overload_set { + { $( $module:ident :: $name:ident, )* } => { + /// An [`OverloadSet`] that dynamically dispatches to concrete implementations. + #[derive(Clone)] + pub(in crate::proc::overloads) enum AnyOverloadSet { + $( + $name ( $module :: $name ), + )* + } + + $( + impl From<$module::$name> for AnyOverloadSet { + fn from(concrete: $module::$name) -> Self { + AnyOverloadSet::$name(concrete) + } + } + )* + + impl OverloadSet for AnyOverloadSet { + fn is_empty(&self) -> bool { + match *self { + $( + AnyOverloadSet::$name(ref x) => x.is_empty(), + )* + } + } + + fn min_arguments(&self) -> usize { + match *self { + $( + AnyOverloadSet::$name(ref x) => x.min_arguments(), + )* + } + } + + fn max_arguments(&self) -> usize { + match *self { + $( + AnyOverloadSet::$name(ref x) => x.max_arguments(), + )* + } + } + + fn arg( + &self, + i: usize, + ty: &ir::TypeInner, + types: &crate::UniqueArena, + ) -> Self { + match *self { + $( + AnyOverloadSet::$name(ref x) => AnyOverloadSet::$name(x.arg(i, ty, types)), + )* + } + } + + fn concrete_only(self, types: &crate::UniqueArena) -> Self { + match self { + $( + AnyOverloadSet::$name(x) => AnyOverloadSet::$name(x.concrete_only(types)), + )* + } + } + + fn most_preferred(&self) -> Rule { + match *self { + $( + AnyOverloadSet::$name(ref x) => x.most_preferred(), + )* + } + } + + fn overload_list(&self, gctx: &GlobalCtx<'_>) -> Vec { + match *self { + $( + AnyOverloadSet::$name(ref x) => x.overload_list(gctx), + )* + } + } + + fn allowed_args(&self, i: usize, gctx: &GlobalCtx<'_>) -> Vec { + match *self { + $( + AnyOverloadSet::$name(ref x) => x.allowed_args(i, gctx), + )* + } + } + + fn for_debug(&self, types: &crate::UniqueArena) -> impl fmt::Debug { + DiagnosticDebug((self, types)) + } + } + + impl fmt::Debug for DiagnosticDebug<(&AnyOverloadSet, &crate::UniqueArena)> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (set, types) = self.0; + match *set { + $( + AnyOverloadSet::$name(ref x) => DiagnosticDebug((x, types)).fmt(f), + )* + } + } + } + } +} + +define_any_overload_set! { + list::List, + regular::Regular, +} diff --git a/third_party/rust/naga/src/proc/overloads/constructor_set.rs b/third_party/rust/naga/src/proc/overloads/constructor_set.rs new file mode 100644 index 000000000000..eeb831d3931e --- /dev/null +++ b/third_party/rust/naga/src/proc/overloads/constructor_set.rs @@ -0,0 +1,174 @@ +//! A set of type constructors, represented as a bitset. + +use crate::ir; +use crate::proc::overloads::one_bits_iter::OneBitsIter; + +bitflags::bitflags! { + /// A set of type constructors. + #[derive(Copy, Clone, Debug, PartialEq)] + pub(crate) struct ConstructorSet: u16 { + const SCALAR = 1 << 0; + const VEC2 = 1 << 1; + const VEC3 = 1 << 2; + const VEC4 = 1 << 3; + const MAT2X2 = 1 << 4; + const MAT2X3 = 1 << 5; + const MAT2X4 = 1 << 6; + const MAT3X2 = 1 << 7; + const MAT3X3 = 1 << 8; + const MAT3X4 = 1 << 9; + const MAT4X2 = 1 << 10; + const MAT4X3 = 1 << 11; + const MAT4X4 = 1 << 12; + + const VECN = Self::VEC2.bits() + | Self::VEC3.bits() + | Self::VEC4.bits(); + } +} + +impl ConstructorSet { + /// Return the single-member set containing `inner`'s constructor. + pub const fn singleton(inner: &ir::TypeInner) -> ConstructorSet { + use ir::TypeInner as Ti; + use ir::VectorSize as Vs; + match *inner { + Ti::Scalar(_) => Self::SCALAR, + Ti::Vector { size, scalar: _ } => match size { + Vs::Bi => Self::VEC2, + Vs::Tri => Self::VEC3, + Vs::Quad => Self::VEC4, + }, + Ti::Matrix { + columns, + rows, + scalar: _, + } => match (columns, rows) { + (Vs::Bi, Vs::Bi) => Self::MAT2X2, + (Vs::Bi, Vs::Tri) => Self::MAT2X3, + (Vs::Bi, Vs::Quad) => Self::MAT2X4, + (Vs::Tri, Vs::Bi) => Self::MAT3X2, + (Vs::Tri, Vs::Tri) => Self::MAT3X3, + (Vs::Tri, Vs::Quad) => Self::MAT3X4, + (Vs::Quad, Vs::Bi) => Self::MAT4X2, + (Vs::Quad, Vs::Tri) => Self::MAT4X3, + (Vs::Quad, Vs::Quad) => Self::MAT4X4, + }, + _ => Self::empty(), + } + } + + pub const fn is_singleton(self) -> bool { + self.bits().is_power_of_two() + } + + /// Return an iterator over this set's members. + /// + /// Members are produced as singleton, in order from most general to least. + pub fn members(self) -> impl Iterator { + OneBitsIter::new(self.bits() as u64).map(|bit| Self::from_bits(bit as u16).unwrap()) + } + + /// Return the size of the sole element of `self`. + /// + /// # Panics + /// + /// Panic if `self` is not a singleton. + pub fn size(self) -> ConstructorSize { + use ir::VectorSize as Vs; + use ConstructorSize as Cs; + + match self { + ConstructorSet::SCALAR => Cs::Scalar, + ConstructorSet::VEC2 => Cs::Vector(Vs::Bi), + ConstructorSet::VEC3 => Cs::Vector(Vs::Tri), + ConstructorSet::VEC4 => Cs::Vector(Vs::Quad), + ConstructorSet::MAT2X2 => Cs::Matrix { + columns: Vs::Bi, + rows: Vs::Bi, + }, + ConstructorSet::MAT2X3 => Cs::Matrix { + columns: Vs::Bi, + rows: Vs::Tri, + }, + ConstructorSet::MAT2X4 => Cs::Matrix { + columns: Vs::Bi, + rows: Vs::Quad, + }, + ConstructorSet::MAT3X2 => Cs::Matrix { + columns: Vs::Tri, + rows: Vs::Bi, + }, + ConstructorSet::MAT3X3 => Cs::Matrix { + columns: Vs::Tri, + rows: Vs::Tri, + }, + ConstructorSet::MAT3X4 => Cs::Matrix { + columns: Vs::Tri, + rows: Vs::Quad, + }, + ConstructorSet::MAT4X2 => Cs::Matrix { + columns: Vs::Quad, + rows: Vs::Bi, + }, + ConstructorSet::MAT4X3 => Cs::Matrix { + columns: Vs::Quad, + rows: Vs::Tri, + }, + ConstructorSet::MAT4X4 => Cs::Matrix { + columns: Vs::Quad, + rows: Vs::Quad, + }, + _ => unreachable!("ConstructorSet was not a singleton"), + } + } +} + +/// The sizes a member of [`ConstructorSet`] might have. +#[derive(Clone, Copy)] +pub enum ConstructorSize { + /// The constructor is [`SCALAR`]. + /// + /// [`SCALAR`]: ConstructorSet::SCALAR + Scalar, + + /// The constructor is `VECN` for some `N`. + Vector(ir::VectorSize), + + /// The constructor is `MATCXR` for some `C` and `R`. + Matrix { + columns: ir::VectorSize, + rows: ir::VectorSize, + }, +} + +impl ConstructorSize { + /// Construct a [`TypeInner`] for a type with this size and the given `scalar`. + /// + /// [`TypeInner`]: ir::TypeInner + pub const fn to_inner(self, scalar: ir::Scalar) -> ir::TypeInner { + match self { + Self::Scalar => ir::TypeInner::Scalar(scalar), + Self::Vector(size) => ir::TypeInner::Vector { size, scalar }, + Self::Matrix { columns, rows } => ir::TypeInner::Matrix { + columns, + rows, + scalar, + }, + } + } +} + +macro_rules! constructor_set { + ( $( $constr:ident )|* ) => { + { + use $crate::proc::overloads::constructor_set::ConstructorSet; + ConstructorSet::empty() + $( + .union(ConstructorSet::$constr) + )* + } + } +} + +pub(in crate::proc::overloads) use constructor_set; diff --git a/third_party/rust/naga/src/proc/overloads/list.rs b/third_party/rust/naga/src/proc/overloads/list.rs new file mode 100644 index 000000000000..62a8a83cc013 --- /dev/null +++ b/third_party/rust/naga/src/proc/overloads/list.rs @@ -0,0 +1,182 @@ +//! An [`OverloadSet`] represented as a vector of rules. +//! +//! [`OverloadSet`]: crate::proc::overloads::OverloadSet + +use crate::common::{DiagnosticDebug, ForDebug, ForDebugWithTypes}; +use crate::ir; +use crate::proc::overloads::one_bits_iter::OneBitsIter; +use crate::proc::overloads::Rule; +use crate::proc::{GlobalCtx, TypeResolution}; + +use alloc::rc::Rc; +use alloc::vec::Vec; +use core::fmt; + +/// A simple list of overloads. +/// +/// Note that this type is not quite as general as it looks, in that +/// the implementation of `most_preferred` doesn't work for arbitrary +/// lists of overloads. See the documentation for [`List::rules`] for +/// details. +#[derive(Clone)] +pub(in crate::proc::overloads) struct List { + /// A bitmask of which elements of `rules` are included in the set. + members: u64, + + /// A list of type rules that are members of the set. + /// + /// These must be listed in order such that every rule in the list + /// is always more preferred than all subsequent rules in the + /// list. If there is no such arrangement of rules, then you + /// cannot use `List` to represent the overload set. + rules: Rc>, +} + +impl List { + pub(in crate::proc::overloads) fn from_rules(rules: Vec) -> List { + List { + members: len_to_full_mask(rules.len()), + rules: Rc::new(rules), + } + } + + fn members(&self) -> impl Iterator { + OneBitsIter::new(self.members).map(|mask| { + let index = mask.trailing_zeros() as usize; + (mask, &self.rules[index]) + }) + } + + fn filter(&self, mut pred: F) -> List + where + F: FnMut(&Rule) -> bool, + { + let mut filtered_members = 0; + for (mask, rule) in self.members() { + if pred(rule) { + filtered_members |= mask; + } + } + + List { + members: filtered_members, + rules: self.rules.clone(), + } + } +} + +impl crate::proc::overloads::OverloadSet for List { + fn is_empty(&self) -> bool { + self.members == 0 + } + + fn min_arguments(&self) -> usize { + self.members() + .fold(None, |best, (_, rule)| { + // This is different from `max_arguments` because + // `