Backed out 3 changesets (bug 1952126) for causing build bustages @rust.mk. CLOSED TREE
Backed out changeset 3ca834a153d2 (bug 1952126) Backed out changeset ae3227909433 (bug 1952126) Backed out changeset a5fb79875818 (bug 1952126)
This commit is contained 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=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"]
|
||||
[source."git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0"]
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]
|
||||
|
||||
86
Cargo.lock
generated
86
Cargo.lock
generated
@@ -51,7 +51,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce34de545ad29bcc00cb1b87a94c132256dcf83aa7eeb9674482568405a6ff0a"
|
||||
dependencies = [
|
||||
"alsa-sys",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"libc",
|
||||
"nix 0.26.99",
|
||||
]
|
||||
@@ -451,7 +451,7 @@ dependencies = [
|
||||
name = "bindgen"
|
||||
version = "0.69.4"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
"itertools",
|
||||
@@ -484,14 +484,14 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
|
||||
name = "bitflags"
|
||||
version = "1.999.999"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.9.0"
|
||||
version = "2.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
|
||||
checksum = "1be3f42a67d6d345ecd59f675f3f012d6974981560836e938c22b424b85ce1be"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
@@ -998,7 +998,7 @@ version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"core-foundation 0.10.0",
|
||||
"libc",
|
||||
]
|
||||
@@ -1293,7 +1293,7 @@ source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a
|
||||
dependencies = [
|
||||
"atomic",
|
||||
"audio-mixer",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"coreaudio-sys-utils",
|
||||
"cubeb-backend",
|
||||
"float-cmp",
|
||||
@@ -1623,7 +1623,7 @@ dependencies = [
|
||||
name = "dom"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"malloc_size_of",
|
||||
]
|
||||
|
||||
@@ -2682,7 +2682,7 @@ version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"gpu-alloc-types",
|
||||
]
|
||||
|
||||
@@ -2692,7 +2692,7 @@ version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2713,7 +2713,7 @@ version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"gpu-descriptor-types",
|
||||
"hashbrown 0.14.5",
|
||||
]
|
||||
@@ -2724,7 +2724,7 @@ version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3799,7 +3799,7 @@ version = "0.31.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"block",
|
||||
"core-graphics-types 0.1.999",
|
||||
"foreign-types",
|
||||
@@ -3909,7 +3909,7 @@ version = "0.22.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0cd8a9fb054833d2f402e82e256aeef544e595e45fe8fca2de6d03ed605f6647"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"debugid",
|
||||
"num-derive",
|
||||
"num-traits",
|
||||
@@ -3942,7 +3942,7 @@ version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1c75ff36a030d76801ed7ec3ea4ae45f12c0f1297f3447790288194274e9aa98"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"byteorder",
|
||||
"cfg-if",
|
||||
"crash-context",
|
||||
@@ -4237,7 +4237,7 @@ dependencies = [
|
||||
"allocator-api2",
|
||||
"arrayvec",
|
||||
"bindgen 0.69.4",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"cc",
|
||||
@@ -4423,11 +4423,11 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664"
|
||||
[[package]]
|
||||
name = "naga"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bit-set",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"cfg_aliases",
|
||||
"codespan-reporting",
|
||||
"hashbrown 0.14.5",
|
||||
@@ -4598,7 +4598,7 @@ version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"cfg-if",
|
||||
"cfg_aliases",
|
||||
"libc",
|
||||
@@ -4654,7 +4654,7 @@ dependencies = [
|
||||
name = "nsstring"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"encoding_rs",
|
||||
]
|
||||
|
||||
@@ -4874,7 +4874,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ec3b43050c38ffb9de87e17d874e9956e3a9131b343c9b7b7002597727c3891"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"thiserror 1.999.999",
|
||||
"zerocopy",
|
||||
"zerocopy-derive",
|
||||
@@ -5115,7 +5115,7 @@ version = "0.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"hex",
|
||||
]
|
||||
|
||||
@@ -5172,7 +5172,7 @@ name = "pulse"
|
||||
version = "0.3.0"
|
||||
source = "git+https://github.com/mozilla/cubeb-pulse-rs?rev=8678dcab1c287de79c4c184ccc2e065bc62b70e2#8678dcab1c287de79c4c184ccc2e065bc62b70e2"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"pulse-ffi",
|
||||
]
|
||||
|
||||
@@ -5432,7 +5432,7 @@ checksum = "2c6d906922d99c677624d2042a93f89b2b7df0f6411032237d5d99a602c2487c"
|
||||
dependencies = [
|
||||
"arrayref",
|
||||
"bincode",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"byteorder",
|
||||
"id-arena",
|
||||
"lazy_static",
|
||||
@@ -5476,7 +5476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
|
||||
dependencies = [
|
||||
"base64 0.21.3",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
]
|
||||
@@ -5519,7 +5519,7 @@ version = "0.31.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"fallible-iterator",
|
||||
"fallible-streaming-iterator",
|
||||
"hashlink",
|
||||
@@ -5593,7 +5593,7 @@ version = "0.38.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
@@ -5678,7 +5678,7 @@ dependencies = [
|
||||
name = "selectors"
|
||||
version = "0.26.0"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"cssparser",
|
||||
"derive_more 0.99.999",
|
||||
"fxhash",
|
||||
@@ -5946,7 +5946,7 @@ version = "0.3.0+sdk-1.3.268.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6056,7 +6056,7 @@ dependencies = [
|
||||
"arrayvec",
|
||||
"atomic_refcell",
|
||||
"bindgen 0.69.4",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"byteorder",
|
||||
"cssparser",
|
||||
"derive_more 0.99.999",
|
||||
@@ -6120,7 +6120,7 @@ name = "style_traits"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"app_units",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"cssparser",
|
||||
"euclid",
|
||||
"lazy_static",
|
||||
@@ -7091,7 +7091,7 @@ version = "0.219.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c771866898879073c53b565a6c7b49953795159836714ac56a5befb581227c5"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"indexmap",
|
||||
]
|
||||
|
||||
@@ -7163,7 +7163,7 @@ version = "0.62.0"
|
||||
dependencies = [
|
||||
"allocator-api2",
|
||||
"bincode",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"build-parallel",
|
||||
"byteorder",
|
||||
"derive_more 0.99.999",
|
||||
@@ -7200,7 +7200,7 @@ name = "webrender_api"
|
||||
version = "0.62.0"
|
||||
dependencies = [
|
||||
"app_units",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"byteorder",
|
||||
"crossbeam-channel",
|
||||
"euclid",
|
||||
@@ -7248,7 +7248,7 @@ dependencies = [
|
||||
name = "webrender_build"
|
||||
version = "0.0.2"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"lazy_static",
|
||||
"serde",
|
||||
]
|
||||
@@ -7275,11 +7275,11 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-core"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bit-vec",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"cfg_aliases",
|
||||
"document-features",
|
||||
"hashbrown 0.14.5",
|
||||
@@ -7303,7 +7303,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-core-deps-apple"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
dependencies = [
|
||||
"wgpu-hal",
|
||||
]
|
||||
@@ -7311,7 +7311,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-core-deps-windows-linux-android"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
dependencies = [
|
||||
"wgpu-hal",
|
||||
]
|
||||
@@ -7319,13 +7319,13 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-hal"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"arrayvec",
|
||||
"ash",
|
||||
"bit-set",
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"block",
|
||||
"cfg_aliases",
|
||||
"core-graphics-types 0.1.999",
|
||||
@@ -7354,9 +7354,9 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-types"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bitflags 2.7.0",
|
||||
"js-sys",
|
||||
"log",
|
||||
"serde",
|
||||
|
||||
@@ -17,7 +17,7 @@ default = []
|
||||
[dependencies.wgc]
|
||||
package = "wgpu-core"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
# TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182
|
||||
features = ["serde", "replay", "trace", "strict_asserts", "wgsl", "api_log_info", "indirect-validation"]
|
||||
|
||||
@@ -26,32 +26,32 @@ features = ["serde", "replay", "trace", "strict_asserts", "wgsl", "api_log_info"
|
||||
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
|
||||
package = "wgpu-core"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
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 = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
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 = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
features = ["vulkan"]
|
||||
|
||||
[dependencies.wgt]
|
||||
package = "wgpu-types"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
|
||||
[dependencies.wgh]
|
||||
package = "wgpu-hal"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
features = ["oom_panic", "device_lost_panic", "internal_error_panic"]
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
|
||||
@@ -20,11 +20,11 @@ origin:
|
||||
|
||||
# Human-readable identifier for this version/release
|
||||
# Generally "version NNN", "tag SSS", "bookmark SSS"
|
||||
release: dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c (2025-03-07T03:44:36Z).
|
||||
release: commit 93f64dc847a0e6788b17b292ae4d7d59361e3be0
|
||||
|
||||
# Revision to pull in
|
||||
# Must be a long or short commit SHA (long preferred)
|
||||
revision: dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c
|
||||
revision: 93f64dc847a0e6788b17b292ae4d7d59361e3be0
|
||||
|
||||
license: ['MIT', 'Apache-2.0']
|
||||
|
||||
|
||||
@@ -3583,12 +3583,9 @@ criteria = "safe-to-deploy"
|
||||
delta = "23.1.0 -> 24.0.0"
|
||||
|
||||
[[audits.naga]]
|
||||
who = [
|
||||
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
importable = false
|
||||
|
||||
[[audits.net2]]
|
||||
@@ -5795,12 +5792,9 @@ criteria = "safe-to-deploy"
|
||||
delta = "23.0.1 -> 24.0.0"
|
||||
|
||||
[[audits.wgpu-core]]
|
||||
who = [
|
||||
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
importable = false
|
||||
|
||||
[[audits.wgpu-hal]]
|
||||
@@ -5882,12 +5876,9 @@ criteria = "safe-to-deploy"
|
||||
delta = "23.0.1 -> 24.0.0"
|
||||
|
||||
[[audits.wgpu-hal]]
|
||||
who = [
|
||||
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
importable = false
|
||||
|
||||
[[audits.wgpu-types]]
|
||||
@@ -5964,12 +5955,9 @@ criteria = "safe-to-deploy"
|
||||
delta = "23.0.0 -> 24.0.0"
|
||||
|
||||
[[audits.wgpu-types]]
|
||||
who = [
|
||||
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
||||
importable = false
|
||||
|
||||
[[audits.whatsys]]
|
||||
|
||||
@@ -997,34 +997,6 @@ criteria = "safe-to-deploy"
|
||||
version = "0.21.0"
|
||||
notes = "This crate has no dependencies, no build.rs, and contains no unsafe code."
|
||||
|
||||
[[audits.bytecode-alliance.audits.bitflags]]
|
||||
who = "Jamey Sharp <jsharp@fastly.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "2.1.0 -> 2.2.1"
|
||||
notes = """
|
||||
This version adds unsafe impls of traits from the bytemuck crate when built
|
||||
with that library enabled, but I believe the impls satisfy the documented
|
||||
safety requirements for bytemuck. The other changes are minor.
|
||||
"""
|
||||
|
||||
[[audits.bytecode-alliance.audits.bitflags]]
|
||||
who = "Alex Crichton <alex@alexcrichton.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "2.3.2 -> 2.3.3"
|
||||
notes = """
|
||||
Nothing outside the realm of what one would expect from a bitflags generator,
|
||||
all as expected.
|
||||
"""
|
||||
|
||||
[[audits.bytecode-alliance.audits.bitflags]]
|
||||
who = "Alex Crichton <alex@alexcrichton.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "2.4.1 -> 2.6.0"
|
||||
notes = """
|
||||
Changes in how macros are invoked and various bits and pieces of macro-fu.
|
||||
Otherwise no major changes and nothing dealing with `unsafe`.
|
||||
"""
|
||||
|
||||
[[audits.bytecode-alliance.audits.block-buffer]]
|
||||
who = "Benjamin Bouvier <public@benj.me>"
|
||||
criteria = "safe-to-deploy"
|
||||
@@ -1376,31 +1348,31 @@ aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/th
|
||||
[[audits.google.audits.bitflags]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
version = "1.3.2"
|
||||
version = "2.4.2"
|
||||
notes = """
|
||||
Security review of earlier versions of the crate can be found at
|
||||
(Google-internal, sorry): go/image-crate-chromium-security-review
|
||||
Audit notes:
|
||||
|
||||
The crate exposes a function marked as `unsafe`, but doesn't use any
|
||||
`unsafe` blocks (except for tests of the single `unsafe` function). I
|
||||
think this justifies marking this crate as `ub-risk-1`.
|
||||
|
||||
Additional review comments can be found at https://crrev.com/c/4723145/31
|
||||
* I've checked for any discussion in Google-internal cl/546819168 (where audit
|
||||
of version 2.3.3 happened)
|
||||
* `src/lib.rs` contains `#![cfg_attr(not(test), forbid(unsafe_code))]`
|
||||
* There are 2 cases of `unsafe` in `src/external.rs` but they seem to be
|
||||
correct in a straightforward way - they just propagate the marker trait's
|
||||
impl (e.g. `impl bytemuck::Pod`) from the inner to the outer type
|
||||
* Additional discussion and/or notes may be found in https://crrev.com/c/5238056
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bitflags]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
who = "Adrian Taylor <adetaylor@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "2.6.0 -> 2.8.0"
|
||||
notes = "No changes related to `unsafe impl ... bytemuck` pieces from `src/external.rs`."
|
||||
delta = "2.4.2 -> 2.5.0"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bitflags]]
|
||||
who = "Daniel Cheng <dcheng@chromium.org>"
|
||||
who = "Adrian Taylor <adetaylor@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "2.8.0 -> 2.9.0"
|
||||
notes = "Adds a straightforward clear() function, but no new unsafe code."
|
||||
delta = "2.5.0 -> 2.6.0"
|
||||
notes = "The changes from the previous version are negligible and thus it retains the same properties."
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bitreader]]
|
||||
@@ -1917,13 +1889,6 @@ version = "0.1.2"
|
||||
notes = "TOML parser, forked from toml 0.5"
|
||||
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
|
||||
|
||||
[[audits.mozilla.audits.bitflags]]
|
||||
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "2.4.0 -> 2.4.1"
|
||||
notes = "Only allowing new clippy lints"
|
||||
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
|
||||
|
||||
[[audits.mozilla.audits.crossbeam-channel]]
|
||||
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
|
||||
@@ -102,10 +102,10 @@
|
||||
expected:
|
||||
if os == "win": [OK, ERROR]
|
||||
[:interpolated=false;sampleCount=1;rasterizationMask=0]
|
||||
expected: FAIL
|
||||
|
||||
[:interpolated=false;sampleCount=1;rasterizationMask=1]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:interpolated=false;sampleCount=4;rasterizationMask=0]
|
||||
expected: FAIL
|
||||
@@ -156,10 +156,10 @@
|
||||
expected: FAIL
|
||||
|
||||
[:interpolated=true;sampleCount=1;rasterizationMask=0]
|
||||
expected: FAIL
|
||||
|
||||
[:interpolated=true;sampleCount=1;rasterizationMask=1]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:interpolated=true;sampleCount=4;rasterizationMask=0]
|
||||
expected: FAIL
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
[:limitTest="atDefault";testValueName="overLimit"]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit"]
|
||||
expected:
|
||||
|
||||
@@ -72,11 +72,7 @@
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
@@ -87,11 +83,7 @@
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
@@ -108,7 +100,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -119,7 +111,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -136,7 +128,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -147,7 +139,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -166,7 +158,8 @@
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -179,7 +172,8 @@
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -199,7 +193,8 @@
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -212,7 +207,8 @@
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -230,7 +226,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -241,7 +237,6 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -258,7 +253,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -269,7 +264,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -288,7 +283,8 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -301,7 +297,8 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -321,7 +318,8 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -334,7 +332,8 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -352,7 +351,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -363,7 +362,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -380,7 +379,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -391,7 +390,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -408,7 +407,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -419,7 +418,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -436,7 +435,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -447,7 +446,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -464,7 +463,6 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -474,7 +472,6 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -490,7 +487,6 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -501,7 +497,6 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -520,8 +515,7 @@
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
@@ -534,8 +528,7 @@
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
@@ -555,8 +548,7 @@
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
@@ -569,8 +561,7 @@
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
@@ -680,7 +671,6 @@
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -688,7 +678,6 @@
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -699,7 +688,6 @@
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -707,7 +695,6 @@
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -719,8 +706,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -729,8 +715,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -742,8 +727,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -752,8 +736,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -767,7 +750,6 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
@@ -778,7 +760,6 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
@@ -792,7 +773,6 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -800,7 +780,6 @@
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -812,8 +791,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -822,8 +800,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -835,8 +812,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -845,8 +821,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -857,7 +832,6 @@
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -865,7 +839,6 @@
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -876,7 +849,6 @@
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -884,7 +856,6 @@
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -895,7 +866,6 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -903,7 +873,6 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -914,7 +883,6 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -922,7 +890,6 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected: [PASS, TIMEOUT, NOTRUN]
|
||||
@@ -958,7 +925,6 @@
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
@@ -968,7 +934,6 @@
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
@@ -986,8 +951,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
@@ -1000,8 +964,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
@@ -1021,8 +984,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
@@ -1035,8 +997,7 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
|
||||
@@ -316,15 +316,13 @@
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
|
||||
expected:
|
||||
|
||||
@@ -942,17 +942,14 @@
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||
|
||||
@@ -965,17 +962,14 @@
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
@@ -1712,181 +1706,151 @@
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
@@ -2162,541 +2126,451 @@
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||
expected:
|
||||
|
||||
@@ -785,7 +785,10 @@
|
||||
|
||||
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:*]
|
||||
implementation-status: backlog
|
||||
expected: [OK, TIMEOUT]
|
||||
expected:
|
||||
if os == "win" and debug: [OK, TIMEOUT]
|
||||
if os == "linux": [OK, TIMEOUT]
|
||||
if os == "mac": [OK, TIMEOUT]
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
@@ -864,558 +867,450 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
@@ -1441,8 +1336,6 @@
|
||||
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
|
||||
@@ -1458,101 +1351,80 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: FAIL
|
||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
|
||||
|
||||
@@ -10438,18 +10438,30 @@
|
||||
|
||||
[:format="bc2-rgba-unorm";filt="linear";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm";filt="linear";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm";filt="linear";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm";filt="nearest";mode="c"]
|
||||
expected:
|
||||
@@ -10458,78 +10470,138 @@
|
||||
|
||||
[:format="bc2-rgba-unorm";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm";filt="linear";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm";filt="linear";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm";filt="linear";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="m"]
|
||||
expected:
|
||||
@@ -10538,23 +10610,39 @@
|
||||
|
||||
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="bc4-r-snorm";filt="linear";mode="c"]
|
||||
expected:
|
||||
|
||||
@@ -852,33 +852,31 @@
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=false]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=true]
|
||||
expected:
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=false]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=true]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="m";modeV="c";offset=false]
|
||||
expected:
|
||||
@@ -912,8 +910,11 @@
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=false]
|
||||
expected:
|
||||
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=true]
|
||||
expected:
|
||||
@@ -1229,25 +1230,13 @@
|
||||
if os == "mac" and not debug: FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="c";modeV="c";offset=false]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="c";modeV="c";offset=true]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="c";modeV="m";offset=false]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="c";modeV="m";offset=true]
|
||||
expected:
|
||||
@@ -1257,18 +1246,10 @@
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="c";modeV="r";offset=false]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="c";modeV="r";offset=true]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="linear";modeU="m";modeV="c";offset=false]
|
||||
expected:
|
||||
@@ -1379,18 +1360,10 @@
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="nearest";modeU="m";modeV="m";offset=false]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="nearest";modeU="m";modeV="m";offset=true]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="depth32float";filt="nearest";modeU="m";modeV="r";offset=false]
|
||||
expected: FAIL
|
||||
|
||||
@@ -25774,7 +25774,7 @@
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "win": CRASH
|
||||
if os == "win" and debug: CRASH
|
||||
if os == "linux" and debug: CRASH
|
||||
if os == "mac": CRASH
|
||||
[:stage="c";format="astc-10x10-unorm";filt="linear";modeU="c";modeV="c";offset=false]
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:bgra8unorm_swizzle:*]
|
||||
implementation-status: backlog
|
||||
[:]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:out_of_bounds:*]
|
||||
|
||||
@@ -1,26 +1,16 @@
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,workgroupUniformLoad:types:*]
|
||||
implementation-status:
|
||||
if os == "win": backlog
|
||||
if os == "mac": backlog
|
||||
implementation-status: backlog
|
||||
[:type="ComplexStruct";wgsize=[1,128\]]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:type="ComplexStruct";wgsize=[1,1\]]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:type="ComplexStruct";wgsize=[16,16\]]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:type="ComplexStruct";wgsize=[3,7\]]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:type="SimpleStruct";wgsize=[1,128\]]
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
expected:
|
||||
if os == "win" and not debug: CRASH
|
||||
if os == "linux" and debug: [OK, CRASH]
|
||||
if os == "linux" and not debug: CRASH
|
||||
[:addressSpace="function";workgroupSize=[1,1,1\];batch__=0]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
@@ -20,14 +20,17 @@
|
||||
expected: FAIL
|
||||
|
||||
[:case="override_oob_neg"]
|
||||
expected: FAIL
|
||||
|
||||
[:case="override_oob_pos"]
|
||||
expected: FAIL
|
||||
|
||||
[:case="runtime_array_const_oob_neg"]
|
||||
|
||||
[:case="runtime_array_override_oob_neg"]
|
||||
|
||||
[:case="runtime_in_bounds"]
|
||||
expected: FAIL
|
||||
|
||||
[:case="runtime_oob_neg"]
|
||||
expected: FAIL
|
||||
|
||||
@@ -20,14 +20,17 @@
|
||||
expected: FAIL
|
||||
|
||||
[:case="override_oob_neg"]
|
||||
expected: FAIL
|
||||
|
||||
[:case="override_oob_pos"]
|
||||
expected: FAIL
|
||||
|
||||
[:case="runtime_array_const_oob_neg"]
|
||||
|
||||
[:case="runtime_array_override_oob_neg"]
|
||||
|
||||
[:case="runtime_in_bounds"]
|
||||
expected: FAIL
|
||||
|
||||
[:case="runtime_oob_neg"]
|
||||
expected: FAIL
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
expected: FAIL
|
||||
|
||||
[:op="%26%26";rhs="overflow";short_circuit=false]
|
||||
expected: FAIL
|
||||
|
||||
[:op="%26%26";rhs="overflow";short_circuit=true]
|
||||
expected: FAIL
|
||||
@@ -131,6 +132,7 @@
|
||||
expected: FAIL
|
||||
|
||||
[:op="%7C%7C";rhs="overflow";short_circuit=false]
|
||||
expected: FAIL
|
||||
|
||||
[:op="%7C%7C";rhs="overflow";short_circuit=true]
|
||||
expected: FAIL
|
||||
@@ -154,6 +156,7 @@
|
||||
expected: FAIL
|
||||
|
||||
[:op="%26%26";rhs="overflow";short_circuit=false]
|
||||
expected: FAIL
|
||||
|
||||
[:op="%26%26";rhs="overflow";short_circuit=true]
|
||||
expected: FAIL
|
||||
@@ -174,6 +177,7 @@
|
||||
expected: FAIL
|
||||
|
||||
[:op="%7C%7C";rhs="overflow";short_circuit=false]
|
||||
expected: FAIL
|
||||
|
||||
[:op="%7C%7C";rhs="overflow";short_circuit=true]
|
||||
expected: FAIL
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
[cts.https.html?q=webgpu:shader,validation,extension,readonly_and_readwrite_storage_textures:textureBarrier:*]
|
||||
implementation-status: backlog
|
||||
[:]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,extension,readonly_and_readwrite_storage_textures:var_decl:*]
|
||||
|
||||
@@ -58,8 +58,10 @@
|
||||
[:inject="module"]
|
||||
|
||||
[:inject="none"]
|
||||
expected: FAIL
|
||||
|
||||
[:inject="sibling"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,parse,shadow_builtins:shadow_hides_builtin_f16:*]
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
expected:
|
||||
if os == "win" and debug: [OK, ERROR]
|
||||
if os == "win" and not debug: ERROR
|
||||
if os == "linux" and debug: [OK, ERROR]
|
||||
if os == "linux" and not debug: ERROR
|
||||
if os == "linux": ERROR
|
||||
if os == "mac": ERROR
|
||||
[:canvasType="offscreen";prevFrameCallsite="requestAnimationFrame";getCurrentTextureAgain=false]
|
||||
|
||||
|
||||
@@ -352,7 +352,9 @@
|
||||
|
||||
|
||||
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_huge_size:*]
|
||||
implementation-status: backlog
|
||||
[:]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_unconfigured_nonzero_size:*]
|
||||
@@ -367,6 +369,7 @@
|
||||
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_zero_size:*]
|
||||
implementation-status: backlog
|
||||
[:configure=false]
|
||||
expected: FAIL
|
||||
|
||||
[:configure=true]
|
||||
expected: FAIL
|
||||
|
||||
@@ -352,7 +352,9 @@
|
||||
|
||||
|
||||
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_huge_size:*]
|
||||
implementation-status: backlog
|
||||
[:]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_unconfigured_nonzero_size:*]
|
||||
@@ -367,6 +369,7 @@
|
||||
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_zero_size:*]
|
||||
implementation-status: backlog
|
||||
[:configure=false]
|
||||
expected: FAIL
|
||||
|
||||
[:configure=true]
|
||||
expected: FAIL
|
||||
|
||||
@@ -796,7 +796,6 @@
|
||||
|
||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -963,7 +962,6 @@
|
||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
||||
expected:
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
||||
|
||||
@@ -2817,7 +2815,6 @@
|
||||
|
||||
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -2988,7 +2985,6 @@
|
||||
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
||||
expected:
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
||||
|
||||
|
||||
@@ -964,7 +964,6 @@
|
||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
||||
expected:
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
||||
|
||||
@@ -1380,8 +1379,7 @@
|
||||
if os == "win": [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false]
|
||||
expected:
|
||||
|
||||
File diff suppressed because one or more lines are too long
20
third_party/rust/bitflags/CHANGELOG.md
vendored
20
third_party/rust/bitflags/CHANGELOG.md
vendored
@@ -1,23 +1,3 @@
|
||||
# 2.9.0
|
||||
|
||||
## What's Changed
|
||||
* `Flags` trait: add `clear(&mut self)` method by @wysiwys in https://github.com/bitflags/bitflags/pull/437
|
||||
* Fix up UI tests by @KodrAus in https://github.com/bitflags/bitflags/pull/438
|
||||
|
||||
|
||||
**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0
|
||||
|
||||
# 2.8.0
|
||||
|
||||
## What's Changed
|
||||
* feat(core): Add bitflags_match macro for bitflag matching by @YuniqueUnic in https://github.com/bitflags/bitflags/pull/423
|
||||
* Finalize bitflags_match by @KodrAus in https://github.com/bitflags/bitflags/pull/431
|
||||
|
||||
## New Contributors
|
||||
* @YuniqueUnic made their first contribution in https://github.com/bitflags/bitflags/pull/423
|
||||
|
||||
**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.7.0...2.8.0
|
||||
|
||||
# 2.7.0
|
||||
|
||||
## What's Changed
|
||||
|
||||
74
third_party/rust/bitflags/Cargo.lock
generated
vendored
74
third_party/rust/bitflags/Cargo.lock
generated
vendored
@@ -13,7 +13,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.9.0"
|
||||
version = "2.7.0"
|
||||
dependencies = [
|
||||
"arbitrary",
|
||||
"bytemuck",
|
||||
@@ -39,9 +39,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck_derive"
|
||||
version = "1.8.1"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a"
|
||||
checksum = "882ce8da04f2b62f52b2485ed297687a43a8438374e7c2261a80601ecb4bac04"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -50,9 +50,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "compiler_builtins"
|
||||
version = "0.1.149"
|
||||
version = "0.1.142"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5567db738d0fcdaaa007240b051c70aa7f0f08762e489ad1072298380eb3d84c"
|
||||
checksum = "78013b42e2946a76d348a858fa5a06ca7d6b5cccdfccd660ea7a0aa4a44d40ca"
|
||||
|
||||
[[package]]
|
||||
name = "derive_arbitrary"
|
||||
@@ -67,9 +67,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
version = "1.0.2"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
||||
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
@@ -85,9 +85,9 @@ checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.7.1"
|
||||
version = "2.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
|
||||
checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown",
|
||||
@@ -107,9 +107,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.93"
|
||||
version = "1.0.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
|
||||
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -137,24 +137,24 @@ checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.19"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
|
||||
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.218"
|
||||
version = "1.0.217"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
|
||||
checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.218"
|
||||
version = "1.0.217"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
|
||||
checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -163,9 +163,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.139"
|
||||
version = "1.0.135"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6"
|
||||
checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
@@ -193,9 +193,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.98"
|
||||
version = "2.0.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
|
||||
checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -204,9 +204,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "target-triple"
|
||||
version = "0.1.4"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790"
|
||||
checksum = "42a4d50cdb458045afc8131fd91b64904da29548bcb63c7236e0844936c13078"
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
@@ -219,9 +219,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.8.20"
|
||||
version = "0.8.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
|
||||
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
@@ -240,9 +240,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml_edit"
|
||||
version = "0.22.24"
|
||||
version = "0.22.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
|
||||
checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
|
||||
dependencies = [
|
||||
"indexmap",
|
||||
"serde",
|
||||
@@ -253,9 +253,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "trybuild"
|
||||
version = "1.0.103"
|
||||
version = "1.0.101"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b812699e0c4f813b872b373a4471717d9eb550da14b311058a4d9cf4173cbca6"
|
||||
checksum = "8dcd332a5496c026f1e14b7f3d2b7bd98e509660c04239c58b0ba38a12daded4"
|
||||
dependencies = [
|
||||
"glob",
|
||||
"serde",
|
||||
@@ -268,9 +268,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.17"
|
||||
version = "1.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
|
||||
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-util"
|
||||
@@ -356,27 +356,27 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.7.3"
|
||||
version = "0.6.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1"
|
||||
checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.21"
|
||||
version = "0.8.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcf01143b2dd5d134f11f545cf9f1431b13b749695cb33bcce051e7568f99478"
|
||||
checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.21"
|
||||
version = "0.8.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712c8386f4f4299382c9abee219bee7084f78fb939d88b6840fcc1320d5f6da2"
|
||||
checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
||||
18
third_party/rust/bitflags/Cargo.toml
vendored
18
third_party/rust/bitflags/Cargo.toml
vendored
@@ -13,7 +13,7 @@
|
||||
edition = "2021"
|
||||
rust-version = "1.56.0"
|
||||
name = "bitflags"
|
||||
version = "2.9.0"
|
||||
version = "2.7.0"
|
||||
authors = ["The Rust Project Developers"]
|
||||
build = false
|
||||
exclude = [
|
||||
@@ -44,14 +44,6 @@ repository = "https://github.com/bitflags/bitflags"
|
||||
[package.metadata.docs.rs]
|
||||
features = ["example_generated"]
|
||||
|
||||
[features]
|
||||
example_generated = []
|
||||
rustc-dep-of-std = [
|
||||
"core",
|
||||
"compiler_builtins",
|
||||
]
|
||||
std = []
|
||||
|
||||
[lib]
|
||||
name = "bitflags"
|
||||
path = "src/lib.rs"
|
||||
@@ -128,3 +120,11 @@ version = "1.0.18"
|
||||
[dev-dependencies.zerocopy]
|
||||
version = "0.8"
|
||||
features = ["derive"]
|
||||
|
||||
[features]
|
||||
example_generated = []
|
||||
rustc-dep-of-std = [
|
||||
"core",
|
||||
"compiler_builtins",
|
||||
]
|
||||
std = []
|
||||
|
||||
2
third_party/rust/bitflags/README.md
vendored
2
third_party/rust/bitflags/README.md
vendored
@@ -28,7 +28,7 @@ Add this to your `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
bitflags = "2.9.0"
|
||||
bitflags = "2.7.0"
|
||||
```
|
||||
|
||||
and this to your source code:
|
||||
|
||||
100
third_party/rust/bitflags/src/lib.rs
vendored
100
third_party/rust/bitflags/src/lib.rs
vendored
@@ -17,7 +17,7 @@ Add `bitflags` to your `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
[dependencies.bitflags]
|
||||
version = "2.9.0"
|
||||
version = "2.7.0"
|
||||
```
|
||||
|
||||
## Generating flags types
|
||||
@@ -792,104 +792,6 @@ macro_rules! __impl_bitflags {
|
||||
};
|
||||
}
|
||||
|
||||
/// A macro that matches flags values, similar to Rust's `match` statement.
|
||||
///
|
||||
/// In a regular `match` statement, the syntax `Flag::A | Flag::B` is interpreted as an or-pattern,
|
||||
/// instead of the bitwise-or of `Flag::A` and `Flag::B`. This can be surprising when combined with flags types
|
||||
/// because `Flag::A | Flag::B` won't match the pattern `Flag::A | Flag::B`. This macro is an alternative to
|
||||
/// `match` for flags values that doesn't have this issue.
|
||||
///
|
||||
/// # Syntax
|
||||
///
|
||||
/// ```ignore
|
||||
/// bitflags_match!(expression, {
|
||||
/// pattern1 => result1,
|
||||
/// pattern2 => result2,
|
||||
/// ..
|
||||
/// _ => default_result,
|
||||
/// })
|
||||
/// ```
|
||||
///
|
||||
/// The final `_ => default_result` arm is required, otherwise the macro will fail to compile.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// use bitflags::{bitflags, bitflags_match};
|
||||
///
|
||||
/// bitflags! {
|
||||
/// #[derive(PartialEq)]
|
||||
/// struct Flags: u8 {
|
||||
/// const A = 1 << 0;
|
||||
/// const B = 1 << 1;
|
||||
/// const C = 1 << 2;
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// let flags = Flags::A | Flags::B;
|
||||
///
|
||||
/// bitflags_match!(flags, {
|
||||
/// Flags::A | Flags::B => println!("A and/or B are set"),
|
||||
/// _ => println!("neither A nor B are set"),
|
||||
/// })
|
||||
/// ```
|
||||
///
|
||||
/// # How it works
|
||||
///
|
||||
/// The macro expands to a series of `if` statements, checking equality between the input expression
|
||||
/// and each pattern. This allows for correct matching of bitflag combinations, which is not possible
|
||||
/// with a regular match expression due to the way bitflags are implemented.
|
||||
///
|
||||
/// Patterns are evaluated in order.
|
||||
#[macro_export]
|
||||
macro_rules! bitflags_match {
|
||||
($operation:expr, {
|
||||
$($t:tt)*
|
||||
}) => {
|
||||
// Expand to a closure so we can use `return`
|
||||
// This makes it possible to apply attributes to the "match arms"
|
||||
(|| {
|
||||
$crate::__bitflags_match!($operation, { $($t)* })
|
||||
})()
|
||||
};
|
||||
}
|
||||
|
||||
/// Expand the `bitflags_match` macro
|
||||
#[macro_export]
|
||||
#[doc(hidden)]
|
||||
macro_rules! __bitflags_match {
|
||||
// Eat an optional `,` following a block match arm
|
||||
($operation:expr, { $pattern:expr => { $($body:tt)* } , $($t:tt)+ }) => {
|
||||
$crate::__bitflags_match!($operation, { $pattern => { $($body)* } $($t)+ })
|
||||
};
|
||||
// Expand a block match arm `A => { .. }`
|
||||
($operation:expr, { $pattern:expr => { $($body:tt)* } $($t:tt)+ }) => {
|
||||
{
|
||||
if $operation == $pattern {
|
||||
return {
|
||||
$($body)*
|
||||
};
|
||||
}
|
||||
|
||||
$crate::__bitflags_match!($operation, { $($t)+ })
|
||||
}
|
||||
};
|
||||
// Expand an expression match arm `A => x,`
|
||||
($operation:expr, { $pattern:expr => $body:expr , $($t:tt)+ }) => {
|
||||
{
|
||||
if $operation == $pattern {
|
||||
return $body;
|
||||
}
|
||||
|
||||
$crate::__bitflags_match!($operation, { $($t)+ })
|
||||
}
|
||||
};
|
||||
// Expand the default case
|
||||
($operation:expr, { _ => $default:expr $(,)? }) => {
|
||||
$default
|
||||
}
|
||||
}
|
||||
|
||||
/// A macro that processed the input to `bitflags!` and shuffles attributes around
|
||||
/// based on whether or not they're "expression-safe".
|
||||
///
|
||||
|
||||
2
third_party/rust/bitflags/src/tests.rs
vendored
2
third_party/rust/bitflags/src/tests.rs
vendored
@@ -1,7 +1,5 @@
|
||||
mod all;
|
||||
mod bitflags_match;
|
||||
mod bits;
|
||||
mod clear;
|
||||
mod complement;
|
||||
mod contains;
|
||||
mod difference;
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
bitflags! {
|
||||
#[derive(PartialEq)]
|
||||
struct Flags: u8 {
|
||||
const A = 1 << 0;
|
||||
const B = 1 << 1;
|
||||
const C = 1 << 2;
|
||||
const D = 1 << 3;
|
||||
}
|
||||
}
|
||||
|
||||
fn flag_to_string(flag: Flags) -> String {
|
||||
bitflags_match!(flag, {
|
||||
Flags::A => "A".to_string(),
|
||||
Flags::B => { "B".to_string() }
|
||||
Flags::C => "C".to_string(),
|
||||
Flags::D => "D".to_string(),
|
||||
Flags::A | Flags::B => "A or B".to_string(),
|
||||
Flags::A & Flags::B => { "A and B | empty".to_string() },
|
||||
Flags::A ^ Flags::B => "A xor B".to_string(),
|
||||
Flags::A | Flags::B | Flags::C => "A or B or C".to_string(),
|
||||
Flags::A & Flags::B & Flags::C => "A and B and C".to_string(),
|
||||
Flags::A ^ Flags::B ^ Flags::C => "A xor B xor C".to_string(),
|
||||
Flags::A | Flags::B | Flags::C | Flags::D => "All flags".to_string(),
|
||||
_ => "Unknown combination".to_string()
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_single_flags() {
|
||||
assert_eq!(flag_to_string(Flags::A), "A");
|
||||
assert_eq!(flag_to_string(Flags::B), "B");
|
||||
assert_eq!(flag_to_string(Flags::C), "C");
|
||||
assert_eq!(flag_to_string(Flags::D), "D");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_or_operations() {
|
||||
assert_eq!(flag_to_string(Flags::A | Flags::B), "A or B");
|
||||
assert_eq!(
|
||||
flag_to_string(Flags::A | Flags::B | Flags::C),
|
||||
"A or B or C"
|
||||
);
|
||||
assert_eq!(
|
||||
flag_to_string(Flags::A | Flags::B | Flags::C | Flags::D),
|
||||
"All flags"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_and_operations() {
|
||||
assert_eq!(flag_to_string(Flags::A & Flags::A), "A");
|
||||
assert_eq!(flag_to_string(Flags::A & Flags::B), "A and B | empty");
|
||||
assert_eq!(
|
||||
flag_to_string(Flags::A & Flags::B & Flags::C),
|
||||
"A and B | empty"
|
||||
); // Since A, B, and C are mutually exclusive, the result of A & B & C is 0 ==> A & B & C = 0000 (i.e., empty).
|
||||
// However, in the bitflags_match! statement (actually is if {..} else if {..} .. else {..}),
|
||||
// the "A & B = 0000" condition is listed first, so 0000 will match "A & B" first,
|
||||
// resulting in the output of the "A and B | empty" branch.
|
||||
assert_eq!(
|
||||
flag_to_string(Flags::A & Flags::B & Flags::C & Flags::D),
|
||||
"A and B | empty"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_xor_operations() {
|
||||
assert_eq!(flag_to_string(Flags::A ^ Flags::B), "A or B"); // A | B = A ^ B == 0011
|
||||
assert_eq!(flag_to_string(Flags::A ^ Flags::A), "A and B | empty");
|
||||
assert_eq!(
|
||||
flag_to_string(Flags::A ^ Flags::B ^ Flags::C),
|
||||
"A or B or C"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_complex_operations() {
|
||||
assert_eq!(flag_to_string(Flags::A | (Flags::B & Flags::C)), "A");
|
||||
assert_eq!(
|
||||
flag_to_string((Flags::A | Flags::B) & (Flags::B | Flags::C)),
|
||||
"B"
|
||||
);
|
||||
assert_eq!(
|
||||
flag_to_string(Flags::A ^ (Flags::B | Flags::C)),
|
||||
"A or B or C"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_empty_and_full_flags() {
|
||||
assert_eq!(flag_to_string(Flags::empty()), "A and B | empty");
|
||||
assert_eq!(flag_to_string(Flags::all()), "All flags");
|
||||
}
|
||||
27
third_party/rust/bitflags/src/tests/clear.rs
vendored
27
third_party/rust/bitflags/src/tests/clear.rs
vendored
@@ -1,27 +0,0 @@
|
||||
use super::*;
|
||||
|
||||
use crate::Flags;
|
||||
|
||||
#[test]
|
||||
fn cases() {
|
||||
case(TestFlags::from_bits_retain(0));
|
||||
|
||||
case(TestFlags::from_bits_retain(1 << 3));
|
||||
|
||||
case(TestFlags::ABC | TestFlags::from_bits_retain(1 << 3));
|
||||
|
||||
case(TestZero::empty());
|
||||
|
||||
case(TestZero::all());
|
||||
|
||||
case(TestFlags::from_bits_retain(1 << 3) | TestFlags::all());
|
||||
}
|
||||
|
||||
#[track_caller]
|
||||
fn case<T: Flags + std::fmt::Debug>(mut flags: T)
|
||||
where
|
||||
T: std::fmt::Debug + PartialEq + Copy,
|
||||
{
|
||||
flags.clear();
|
||||
assert_eq!(flags, T::empty(), "{:?}.clear()", flags);
|
||||
}
|
||||
8
third_party/rust/bitflags/src/traits.rs
vendored
8
third_party/rust/bitflags/src/traits.rs
vendored
@@ -293,14 +293,6 @@ pub trait Flags: Sized + 'static {
|
||||
}
|
||||
}
|
||||
|
||||
/// Unsets all bits in the flags.
|
||||
fn clear(&mut self)
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
*self = Self::empty();
|
||||
}
|
||||
|
||||
/// The bitwise and (`&`) of the bits in two flags values.
|
||||
#[must_use]
|
||||
fn intersection(self, other: Self) -> Self {
|
||||
|
||||
2
third_party/rust/naga/.cargo-checksum.json
vendored
2
third_party/rust/naga/.cargo-checksum.json
vendored
File diff suppressed because one or more lines are too long
9
third_party/rust/naga/Cargo.toml
vendored
9
third_party/rust/naga/Cargo.toml
vendored
@@ -11,7 +11,7 @@
|
||||
|
||||
[package]
|
||||
edition = "2021"
|
||||
rust-version = "1.82.0"
|
||||
rust-version = "1.76"
|
||||
name = "naga"
|
||||
version = "24.0.0"
|
||||
authors = ["gfx-rs developers"]
|
||||
@@ -104,7 +104,7 @@ version = "0.8"
|
||||
default-features = false
|
||||
|
||||
[dependencies.bitflags]
|
||||
version = "2.9"
|
||||
version = "2.7"
|
||||
|
||||
[dependencies.codespan-reporting]
|
||||
version = "0.11.0"
|
||||
@@ -211,8 +211,3 @@ version = "2"
|
||||
|
||||
[build-dependencies.cfg_aliases]
|
||||
version = "0.2.1"
|
||||
|
||||
[lints.clippy]
|
||||
alloc_instead_of_core = "warn"
|
||||
std_instead_of_alloc = "warn"
|
||||
std_instead_of_core = "warn"
|
||||
|
||||
2
third_party/rust/naga/README.md
vendored
2
third_party/rust/naga/README.md
vendored
@@ -4,7 +4,7 @@
|
||||
[](https://crates.io/crates/naga)
|
||||
[](https://docs.rs/naga)
|
||||
[](https://github.com/gfx-rs/naga/actions)
|
||||

|
||||

|
||||
[](https://codecov.io/gh/gfx-rs/naga)
|
||||
|
||||
The shader translation library for the needs of [wgpu](https://github.com/gfx-rs/wgpu).
|
||||
|
||||
4
third_party/rust/naga/src/arena/handle.rs
vendored
4
third_party/rust/naga/src/arena/handle.rs
vendored
@@ -5,7 +5,7 @@
|
||||
//! [`Arena`]: super::Arena
|
||||
//! [`UniqueArena`]: super::UniqueArena
|
||||
|
||||
use core::{cmp::Ordering, fmt, hash, marker::PhantomData};
|
||||
use std::{cmp::Ordering, fmt, hash, marker::PhantomData};
|
||||
|
||||
/// An unique index in the arena array that a handle points to.
|
||||
/// The "non-max" part ensures that an `Option<Handle<T>>` has
|
||||
@@ -22,7 +22,7 @@ pub struct BadHandle {
|
||||
impl BadHandle {
|
||||
pub fn new<T>(handle: Handle<T>) -> Self {
|
||||
Self {
|
||||
kind: core::any::type_name::<T>(),
|
||||
kind: std::any::type_name::<T>(),
|
||||
index: handle.index(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ pub struct HandleSet<T> {
|
||||
members: bit_set::BitSet,
|
||||
|
||||
/// This type is indexed by values of type `T`.
|
||||
as_keys: core::marker::PhantomData<T>,
|
||||
as_keys: std::marker::PhantomData<T>,
|
||||
}
|
||||
|
||||
impl<T> HandleSet<T> {
|
||||
@@ -21,7 +21,7 @@ impl<T> HandleSet<T> {
|
||||
Self {
|
||||
len: 0,
|
||||
members: bit_set::BitSet::new(),
|
||||
as_keys: core::marker::PhantomData,
|
||||
as_keys: std::marker::PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ impl<T> HandleSet<T> {
|
||||
Self {
|
||||
len,
|
||||
members: bit_set::BitSet::with_capacity(len),
|
||||
as_keys: core::marker::PhantomData,
|
||||
as_keys: std::marker::PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ impl<T> ArenaType<T> for Arena<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: core::hash::Hash + Eq> ArenaType<T> for UniqueArena<T> {
|
||||
impl<T: std::hash::Hash + Eq> ArenaType<T> for UniqueArena<T> {
|
||||
fn len(&self) -> usize {
|
||||
self.len()
|
||||
}
|
||||
|
||||
9
third_party/rust/naga/src/arena/handlevec.rs
vendored
9
third_party/rust/naga/src/arena/handlevec.rs
vendored
@@ -1,10 +1,9 @@
|
||||
//! The [`HandleVec`] type and associated definitions.
|
||||
|
||||
use super::handle::Handle;
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use core::marker::PhantomData;
|
||||
use core::ops;
|
||||
use std::marker::PhantomData;
|
||||
use std::ops;
|
||||
|
||||
/// A [`Vec`] indexed by [`Handle`]s.
|
||||
///
|
||||
@@ -18,7 +17,7 @@ use core::ops;
|
||||
/// current length; otherwise, the insertion will panic.
|
||||
///
|
||||
/// [`insert`]: HandleVec::insert
|
||||
/// [`HashMap::insert`]: hashbrown::HashMap::insert
|
||||
/// [`HashMap::insert`]: std::collections::HashMap::insert
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct HandleVec<T, U> {
|
||||
inner: Vec<U>,
|
||||
@@ -60,7 +59,7 @@ impl<T, U> HandleVec<T, U> {
|
||||
/// the end, like [`Vec::push`]. So the index of `handle` must equal
|
||||
/// [`self.len()`].
|
||||
///
|
||||
/// [`HashMap`]: hashbrown::HashMap
|
||||
/// [`HashMap`]: std::collections::HashMap
|
||||
/// [`self.len()`]: HandleVec::len
|
||||
pub(crate) fn insert(&mut self, handle: Handle<T>, value: U) {
|
||||
assert_eq!(handle.index(), self.inner.len());
|
||||
|
||||
9
third_party/rust/naga/src/arena/mod.rs
vendored
9
third_party/rust/naga/src/arena/mod.rs
vendored
@@ -31,13 +31,12 @@ pub(crate) use handlevec::HandleVec;
|
||||
pub use range::{BadRangeError, Range};
|
||||
pub use unique_arena::UniqueArena;
|
||||
|
||||
use alloc::vec::Vec;
|
||||
use core::{fmt, ops};
|
||||
|
||||
use crate::Span;
|
||||
|
||||
use handle::Index;
|
||||
|
||||
use std::{fmt, ops};
|
||||
|
||||
/// An arena holding some kind of component (e.g., type, constant,
|
||||
/// instruction, etc.) that can be referenced.
|
||||
///
|
||||
@@ -104,7 +103,7 @@ impl<T> Arena<T> {
|
||||
|
||||
/// Drains the arena, returning an iterator over the items stored.
|
||||
pub fn drain(&mut self) -> impl DoubleEndedIterator<Item = (Handle<T>, T, Span)> {
|
||||
let arena = core::mem::take(self);
|
||||
let arena = std::mem::take(self);
|
||||
arena
|
||||
.data
|
||||
.into_iter()
|
||||
@@ -259,7 +258,7 @@ where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let data = Vec::deserialize(deserializer)?;
|
||||
let span_info = core::iter::repeat(Span::default())
|
||||
let span_info = std::iter::repeat(Span::default())
|
||||
.take(data.len())
|
||||
.collect();
|
||||
|
||||
|
||||
6
third_party/rust/naga/src/arena/range.rs
vendored
6
third_party/rust/naga/src/arena/range.rs
vendored
@@ -5,13 +5,13 @@
|
||||
//!
|
||||
//! [`Arena`]: super::Arena
|
||||
|
||||
use core::{fmt, marker::PhantomData, ops};
|
||||
|
||||
use super::{
|
||||
handle::{Handle, Index},
|
||||
Arena,
|
||||
};
|
||||
|
||||
use std::{fmt, marker::PhantomData, ops};
|
||||
|
||||
/// A strongly typed range of handles.
|
||||
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
|
||||
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
|
||||
@@ -51,7 +51,7 @@ pub struct BadRangeError {
|
||||
impl BadRangeError {
|
||||
pub fn new<T>(range: Range<T>) -> Self {
|
||||
Self {
|
||||
kind: core::any::type_name::<T>(),
|
||||
kind: std::any::type_name::<T>(),
|
||||
range: range.erase_type(),
|
||||
}
|
||||
}
|
||||
|
||||
12
third_party/rust/naga/src/arena/unique_arena.rs
vendored
12
third_party/rust/naga/src/arena/unique_arena.rs
vendored
@@ -1,10 +1,10 @@
|
||||
//! The [`UniqueArena`] type and supporting definitions.
|
||||
|
||||
use alloc::vec::Vec;
|
||||
use core::{fmt, hash, ops};
|
||||
use crate::{FastIndexSet, Span};
|
||||
|
||||
use super::handle::{BadHandle, Handle, Index};
|
||||
use crate::{FastIndexSet, Span};
|
||||
|
||||
use std::{fmt, hash, ops};
|
||||
|
||||
/// An arena whose elements are guaranteed to be unique.
|
||||
///
|
||||
@@ -84,7 +84,7 @@ impl<T> UniqueArena<T> {
|
||||
#[cfg(feature = "compact")]
|
||||
pub struct UniqueArenaDrain<'a, T> {
|
||||
inner_elts: indexmap::set::Drain<'a, T>,
|
||||
inner_spans: alloc::vec::Drain<'a, Span>,
|
||||
inner_spans: std::vec::Drain<'a, Span>,
|
||||
index: Index,
|
||||
}
|
||||
|
||||
@@ -224,9 +224,7 @@ where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let set = FastIndexSet::deserialize(deserializer)?;
|
||||
let span_info = core::iter::repeat(Span::default())
|
||||
.take(set.len())
|
||||
.collect();
|
||||
let span_info = std::iter::repeat(Span::default()).take(set.len()).collect();
|
||||
|
||||
Ok(Self { set, span_info })
|
||||
}
|
||||
|
||||
@@ -59,9 +59,8 @@
|
||||
//! [`Switch`]: crate::Statement::Switch
|
||||
//! [`SwitchCase`]: crate::SwitchCase
|
||||
|
||||
use alloc::{rc::Rc, string::String, vec::Vec};
|
||||
|
||||
use crate::proc::Namer;
|
||||
use std::rc::Rc;
|
||||
|
||||
/// A summary of the code surrounding a statement.
|
||||
enum Nesting {
|
||||
|
||||
36
third_party/rust/naga/src/back/dot/mod.rs
vendored
36
third_party/rust/naga/src/back/dot/mod.rs
vendored
@@ -7,19 +7,16 @@ of IR inspection and debugging.
|
||||
[dot]: https://graphviz.org/doc/info/lang.html
|
||||
*/
|
||||
|
||||
use alloc::{
|
||||
borrow::Cow,
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec::Vec,
|
||||
};
|
||||
use core::fmt::{Error as FmtError, Write as _};
|
||||
|
||||
use crate::{
|
||||
arena::Handle,
|
||||
valid::{FunctionInfo, ModuleInfo},
|
||||
};
|
||||
|
||||
use std::{
|
||||
borrow::Cow,
|
||||
fmt::{Error as FmtError, Write as _},
|
||||
};
|
||||
|
||||
/// Configuration options for the dot backend
|
||||
#[derive(Clone, Default)]
|
||||
pub struct Options {
|
||||
@@ -415,26 +412,26 @@ const COLORS: &[&str] = &[
|
||||
|
||||
struct Prefixed<T>(Handle<T>);
|
||||
|
||||
impl core::fmt::Display for Prefixed<crate::Expression> {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
impl std::fmt::Display for Prefixed<crate::Expression> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, "e")
|
||||
}
|
||||
}
|
||||
|
||||
impl core::fmt::Display for Prefixed<crate::LocalVariable> {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
impl std::fmt::Display for Prefixed<crate::LocalVariable> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, "l")
|
||||
}
|
||||
}
|
||||
|
||||
impl core::fmt::Display for Prefixed<crate::GlobalVariable> {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
impl std::fmt::Display for Prefixed<crate::GlobalVariable> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, "g")
|
||||
}
|
||||
}
|
||||
|
||||
impl core::fmt::Display for Prefixed<crate::Function> {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
impl std::fmt::Display for Prefixed<crate::Function> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, "f")
|
||||
}
|
||||
}
|
||||
@@ -727,11 +724,6 @@ fn write_function_expressions(
|
||||
}
|
||||
E::SubgroupBallotResult => ("SubgroupBallotResult".into(), 4),
|
||||
E::SubgroupOperationResult { .. } => ("SubgroupOperationResult".into(), 4),
|
||||
E::RayQueryVertexPositions { query, committed } => {
|
||||
edges.insert("", query);
|
||||
let ty = if committed { "Committed" } else { "Candidate" };
|
||||
(format!("get{}HitVertexPositions", ty).into(), 4)
|
||||
}
|
||||
};
|
||||
|
||||
// give uniform expressions an outline
|
||||
@@ -801,7 +793,7 @@ pub fn write(
|
||||
mod_info: Option<&ModuleInfo>,
|
||||
options: Options,
|
||||
) -> Result<String, FmtError> {
|
||||
use core::fmt::Write as _;
|
||||
use std::fmt::Write as _;
|
||||
|
||||
let mut output = String::new();
|
||||
output += "digraph Module {\n";
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
use core::fmt::Write;
|
||||
|
||||
use super::{BackendResult, Error, Version, Writer};
|
||||
use crate::{
|
||||
back::glsl::{Options, WriterFlags},
|
||||
AddressSpace, Binding, Expression, Handle, ImageClass, ImageDimension, Interpolation,
|
||||
SampleLevel, Sampling, Scalar, ScalarKind, ShaderStage, StorageFormat, Type, TypeInner,
|
||||
};
|
||||
use std::fmt::Write;
|
||||
|
||||
bitflags::bitflags! {
|
||||
/// Structure used to encode additions to GLSL that aren't supported by all versions.
|
||||
@@ -463,7 +462,7 @@ impl<W> Writer<'_, W> {
|
||||
.functions
|
||||
.iter()
|
||||
.map(|(h, f)| (&f.expressions, &info[h]))
|
||||
.chain(core::iter::once((
|
||||
.chain(std::iter::once((
|
||||
&entry_point.function.expressions,
|
||||
info.get_entry_point(entry_point_idx as usize),
|
||||
)))
|
||||
@@ -560,7 +559,7 @@ impl<W> Writer<'_, W> {
|
||||
.functions
|
||||
.iter()
|
||||
.map(|(_, f)| &f.body)
|
||||
.chain(core::iter::once(&entry_point.function.body))
|
||||
.chain(std::iter::once(&entry_point.function.body))
|
||||
{
|
||||
for (stmt, _) in blocks.span_iter() {
|
||||
match *stmt {
|
||||
|
||||
51
third_party/rust/naga/src/back/glsl/mod.rs
vendored
51
third_party/rust/naga/src/back/glsl/mod.rs
vendored
@@ -45,29 +45,19 @@ to output a [`Module`](crate::Module) into glsl
|
||||
|
||||
pub use features::Features;
|
||||
|
||||
use alloc::{
|
||||
borrow::ToOwned,
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
use core::{
|
||||
cmp::Ordering,
|
||||
fmt::{self, Error as FmtError, Write},
|
||||
mem,
|
||||
};
|
||||
|
||||
use hashbrown::hash_map;
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::{
|
||||
back::{self, Baked},
|
||||
common,
|
||||
proc::{self, ExpressionKindTracker, NameKey},
|
||||
valid, Handle, ShaderStage, TypeInner,
|
||||
};
|
||||
use features::FeaturesManager;
|
||||
use hashbrown::hash_map;
|
||||
use std::{
|
||||
cmp::Ordering,
|
||||
fmt::{self, Error as FmtError, Write},
|
||||
mem,
|
||||
};
|
||||
use thiserror::Error;
|
||||
|
||||
/// Contains the features related code and the features querying method
|
||||
mod features;
|
||||
@@ -112,7 +102,7 @@ where
|
||||
}
|
||||
|
||||
/// Mapping between resources and bindings.
|
||||
pub type BindingMap = alloc::collections::BTreeMap<crate::ResourceBinding, u8>;
|
||||
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, u8>;
|
||||
|
||||
impl crate::AtomicFunction {
|
||||
const fn to_glsl(self) -> &'static str {
|
||||
@@ -330,7 +320,7 @@ pub struct PipelineOptions {
|
||||
/// If no entry point that matches is found while creating a [`Writer`], a error will be thrown.
|
||||
pub entry_point: String,
|
||||
/// How many views to render to, if doing multiview rendering.
|
||||
pub multiview: Option<core::num::NonZeroU32>,
|
||||
pub multiview: Option<std::num::NonZeroU32>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -592,7 +582,7 @@ pub struct Writer<'a, W> {
|
||||
/// transformed to `do {} while(false);` loops.
|
||||
continue_ctx: back::continue_forward::ContinueCtx,
|
||||
/// How many views to render to, if doing multiview rendering.
|
||||
multiview: Option<core::num::NonZeroU32>,
|
||||
multiview: Option<std::num::NonZeroU32>,
|
||||
/// Mapping of varying variables to their location. Needed for reflections.
|
||||
varying: crate::FastHashMap<String, VaryingLocation>,
|
||||
}
|
||||
@@ -1083,8 +1073,8 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
| TypeInner::Struct { .. }
|
||||
| TypeInner::Image { .. }
|
||||
| TypeInner::Sampler { .. }
|
||||
| TypeInner::AccelerationStructure { .. }
|
||||
| TypeInner::RayQuery { .. }
|
||||
| TypeInner::AccelerationStructure
|
||||
| TypeInner::RayQuery
|
||||
| TypeInner::BindingArray { .. } => {
|
||||
return Err(Error::Custom(format!("Unable to write type {inner:?}")))
|
||||
}
|
||||
@@ -2213,7 +2203,8 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
self.write_stmt(sta, ctx, l2.next())?;
|
||||
}
|
||||
|
||||
if !case.fall_through && case.body.last().is_none_or(|s| !s.is_terminator())
|
||||
if !case.fall_through
|
||||
&& case.body.last().map_or(true, |s| !s.is_terminator())
|
||||
{
|
||||
writeln!(self.out, "{}break;", l2.next())?;
|
||||
}
|
||||
@@ -3447,7 +3438,7 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
TypeInner::Vector { size, .. } => write!(
|
||||
self.out,
|
||||
", vec{}(0.0), vec{0}(1.0)",
|
||||
common::vector_size_str(size)
|
||||
back::vector_size_str(size)
|
||||
)?,
|
||||
_ => write!(self.out, ", 0.0, 1.0")?,
|
||||
}
|
||||
@@ -3594,7 +3585,7 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
Mf::CountTrailingZeros => {
|
||||
match *ctx.resolve_type(arg, &self.module.types) {
|
||||
TypeInner::Vector { size, scalar, .. } => {
|
||||
let s = common::vector_size_str(size);
|
||||
let s = back::vector_size_str(size);
|
||||
if let crate::ScalarKind::Uint = scalar.kind {
|
||||
write!(self.out, "min(uvec{s}(findLSB(")?;
|
||||
self.write_expr(arg, ctx)?;
|
||||
@@ -3624,7 +3615,7 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
if self.options.version.supports_integer_functions() {
|
||||
match *ctx.resolve_type(arg, &self.module.types) {
|
||||
TypeInner::Vector { size, scalar } => {
|
||||
let s = common::vector_size_str(size);
|
||||
let s = back::vector_size_str(size);
|
||||
|
||||
if let crate::ScalarKind::Uint = scalar.kind {
|
||||
write!(self.out, "uvec{s}(ivec{s}(31) - findMSB(")?;
|
||||
@@ -3655,7 +3646,7 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
} else {
|
||||
match *ctx.resolve_type(arg, &self.module.types) {
|
||||
TypeInner::Vector { size, scalar } => {
|
||||
let s = common::vector_size_str(size);
|
||||
let s = back::vector_size_str(size);
|
||||
|
||||
if let crate::ScalarKind::Uint = scalar.kind {
|
||||
write!(self.out, "uvec{s}(")?;
|
||||
@@ -4018,8 +4009,7 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
write!(self.out, ".length())")?
|
||||
}
|
||||
// not supported yet
|
||||
Expression::RayQueryGetIntersection { .. }
|
||||
| Expression::RayQueryVertexPositions { .. } => unreachable!(),
|
||||
Expression::RayQueryGetIntersection { .. } => unreachable!(),
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@@ -4639,9 +4629,6 @@ impl<'a, W: Write> Writer<'a, W> {
|
||||
if flags.contains(crate::Barrier::SUB_GROUP) {
|
||||
writeln!(self.out, "{level}subgroupMemoryBarrier();")?;
|
||||
}
|
||||
if flags.contains(crate::Barrier::TEXTURE) {
|
||||
writeln!(self.out, "{level}memoryBarrierImage();")?;
|
||||
}
|
||||
writeln!(self.out, "{level}barrier();")?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
11
third_party/rust/naga/src/back/hlsl/conv.rs
vendored
11
third_party/rust/naga/src/back/hlsl/conv.rs
vendored
@@ -1,9 +1,8 @@
|
||||
use crate::common;
|
||||
use std::borrow::Cow;
|
||||
|
||||
use alloc::{borrow::Cow, format, string::String};
|
||||
use crate::proc::Alignment;
|
||||
|
||||
use super::Error;
|
||||
use crate::proc::Alignment;
|
||||
|
||||
impl crate::ScalarKind {
|
||||
pub(super) fn to_hlsl_cast(self) -> &'static str {
|
||||
@@ -90,7 +89,7 @@ impl crate::TypeInner {
|
||||
crate::TypeInner::Vector { size, scalar } => Cow::Owned(format!(
|
||||
"{}{}",
|
||||
scalar.to_hlsl_str()?,
|
||||
common::vector_size_str(size)
|
||||
crate::back::vector_size_str(size)
|
||||
)),
|
||||
crate::TypeInner::Matrix {
|
||||
columns,
|
||||
@@ -99,8 +98,8 @@ impl crate::TypeInner {
|
||||
} => Cow::Owned(format!(
|
||||
"{}{}x{}",
|
||||
scalar.to_hlsl_str()?,
|
||||
common::vector_size_str(columns),
|
||||
common::vector_size_str(rows),
|
||||
crate::back::vector_size_str(columns),
|
||||
crate::back::vector_size_str(rows),
|
||||
)),
|
||||
crate::TypeInner::Array {
|
||||
base,
|
||||
|
||||
38
third_party/rust/naga/src/back/hlsl/help.rs
vendored
38
third_party/rust/naga/src/back/hlsl/help.rs
vendored
@@ -26,18 +26,16 @@ int dim_1d = NagaDimensions1D(image_1d);
|
||||
```
|
||||
*/
|
||||
|
||||
use alloc::format;
|
||||
use core::fmt::Write;
|
||||
|
||||
use super::{
|
||||
super::FunctionCtx,
|
||||
writer::{
|
||||
ABS_FUNCTION, DIV_FUNCTION, EXTRACT_BITS_FUNCTION, INSERT_BITS_FUNCTION, MOD_FUNCTION,
|
||||
NEG_FUNCTION,
|
||||
},
|
||||
BackendResult, WrappedType,
|
||||
BackendResult,
|
||||
};
|
||||
use crate::{arena::Handle, proc::NameKey, ScalarKind};
|
||||
use std::fmt::Write;
|
||||
|
||||
#[derive(Clone, Copy, Debug, Hash, Eq, Ord, PartialEq, PartialOrd)]
|
||||
pub(super) struct WrappedArrayLength {
|
||||
@@ -939,7 +937,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
match module.types[ty].inner {
|
||||
crate::TypeInner::Struct { .. } | crate::TypeInner::Array { .. } => {
|
||||
let constructor = WrappedConstructor { ty };
|
||||
if self.wrapped.insert(WrappedType::Constructor(constructor)) {
|
||||
if self.wrapped.constructors.insert(constructor) {
|
||||
self.write_wrapped_constructor_function(module, constructor)?;
|
||||
}
|
||||
}
|
||||
@@ -955,7 +953,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
} => {
|
||||
if format.single_component() {
|
||||
let scalar: crate::Scalar = format.into();
|
||||
if self.wrapped.insert(WrappedType::ImageLoadScalar(scalar)) {
|
||||
if self.wrapped.image_load_scalars.insert(scalar) {
|
||||
self.write_loaded_scalar_to_storage_loaded_value(scalar)?;
|
||||
}
|
||||
}
|
||||
@@ -991,7 +989,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
for (handle, _) in expressions.iter() {
|
||||
if let crate::Expression::ZeroValue(ty) = expressions[handle] {
|
||||
let zero_value = WrappedZeroValue { ty };
|
||||
if self.wrapped.insert(WrappedType::ZeroValue(zero_value)) {
|
||||
if self.wrapped.zero_values.insert(zero_value) {
|
||||
self.write_wrapped_zero_value_function(module, zero_value)?;
|
||||
}
|
||||
}
|
||||
@@ -1038,7 +1036,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
components,
|
||||
};
|
||||
|
||||
if !self.wrapped.insert(WrappedType::Math(wrapped)) {
|
||||
if !self.wrapped.math.insert(wrapped) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1080,7 +1078,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
components,
|
||||
};
|
||||
|
||||
if !self.wrapped.insert(WrappedType::Math(wrapped)) {
|
||||
if !self.wrapped.math.insert(wrapped) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1149,7 +1147,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
components,
|
||||
};
|
||||
|
||||
if !self.wrapped.insert(WrappedType::Math(wrapped)) {
|
||||
if !self.wrapped.math.insert(wrapped) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1200,7 +1198,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
// find another solution for different bit-widths.
|
||||
match (op, scalar) {
|
||||
(crate::UnaryOperator::Negate, crate::Scalar::I32) => {
|
||||
if !self.wrapped.insert(WrappedType::UnaryOp(wrapped)) {
|
||||
if !self.wrapped.unary_op.insert(wrapped) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1261,7 +1259,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
left_ty: left_wrapped_ty,
|
||||
right_ty: right_wrapped_ty,
|
||||
};
|
||||
if !self.wrapped.insert(WrappedType::BinaryOp(wrapped)) {
|
||||
if !self.wrapped.binary_op.insert(wrapped) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1317,7 +1315,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
left_ty: left_wrapped_ty,
|
||||
right_ty: right_wrapped_ty,
|
||||
};
|
||||
if !self.wrapped.insert(WrappedType::BinaryOp(wrapped)) {
|
||||
if !self.wrapped.binary_op.insert(wrapped) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1393,7 +1391,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
writable: storage_access.contains(crate::StorageAccess::STORE),
|
||||
};
|
||||
|
||||
if self.wrapped.insert(WrappedType::ArrayLength(wal)) {
|
||||
if self.wrapped.array_lengths.insert(wal) {
|
||||
self.write_wrapped_array_length_function(wal)?;
|
||||
}
|
||||
}
|
||||
@@ -1412,7 +1410,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
_ => unreachable!("we only query images"),
|
||||
};
|
||||
|
||||
if self.wrapped.insert(WrappedType::ImageQuery(wiq)) {
|
||||
if self.wrapped.image_queries.insert(wiq) {
|
||||
self.write_wrapped_image_query_function(module, wiq, handle, func_ctx)?;
|
||||
}
|
||||
}
|
||||
@@ -1441,7 +1439,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
}
|
||||
|
||||
let constructor = WrappedConstructor { ty };
|
||||
if writer.wrapped.insert(WrappedType::Constructor(constructor)) {
|
||||
if writer.wrapped.constructors.insert(constructor) {
|
||||
writer
|
||||
.write_wrapped_constructor_function(module, constructor)?;
|
||||
}
|
||||
@@ -1450,7 +1448,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
write_wrapped_constructor(writer, base, module)?;
|
||||
|
||||
let constructor = WrappedConstructor { ty };
|
||||
if writer.wrapped.insert(WrappedType::Constructor(constructor)) {
|
||||
if writer.wrapped.constructors.insert(constructor) {
|
||||
writer
|
||||
.write_wrapped_constructor_function(module, constructor)?;
|
||||
}
|
||||
@@ -1486,7 +1484,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
let ty = base_ty_handle.unwrap();
|
||||
let access = WrappedStructMatrixAccess { ty, index };
|
||||
|
||||
if self.wrapped.insert(WrappedType::StructMatrixAccess(access)) {
|
||||
if self.wrapped.struct_matrix_access.insert(access) {
|
||||
self.write_wrapped_struct_matrix_get_function(module, access)?;
|
||||
self.write_wrapped_struct_matrix_set_function(module, access)?;
|
||||
self.write_wrapped_struct_matrix_set_vec_function(
|
||||
@@ -1715,7 +1713,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
}) = super::writer::get_inner_matrix_data(module, global.ty)
|
||||
{
|
||||
let entry = WrappedMatCx2 { columns };
|
||||
if self.wrapped.insert(WrappedType::MatCx2(entry)) {
|
||||
if self.wrapped.mat_cx2s.insert(entry) {
|
||||
self.write_mat_cx2_typedef_and_functions(entry)?;
|
||||
}
|
||||
}
|
||||
@@ -1733,7 +1731,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
}) = super::writer::get_inner_matrix_data(module, member.ty)
|
||||
{
|
||||
let entry = WrappedMatCx2 { columns };
|
||||
if self.wrapped.insert(WrappedType::MatCx2(entry)) {
|
||||
if self.wrapped.mat_cx2s.insert(entry) {
|
||||
self.write_mat_cx2_typedef_and_functions(entry)?;
|
||||
}
|
||||
}
|
||||
|
||||
52
third_party/rust/naga/src/back/hlsl/mod.rs
vendored
52
third_party/rust/naga/src/back/hlsl/mod.rs
vendored
@@ -114,9 +114,7 @@ mod ray;
|
||||
mod storage;
|
||||
mod writer;
|
||||
|
||||
use alloc::{string::String, vec::Vec};
|
||||
use core::fmt::Error as FmtError;
|
||||
|
||||
use std::fmt::Error as FmtError;
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::{back, proc};
|
||||
@@ -174,7 +172,7 @@ where
|
||||
}
|
||||
|
||||
// Using `BTreeMap` instead of `HashMap` so that we can hash itself.
|
||||
pub type BindingMap = alloc::collections::BTreeMap<crate::ResourceBinding, BindTarget>;
|
||||
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, BindTarget>;
|
||||
|
||||
/// A HLSL shader model version.
|
||||
#[allow(non_snake_case, non_camel_case_types)]
|
||||
@@ -298,7 +296,7 @@ where
|
||||
|
||||
// We use a BTreeMap here so that we can hash it.
|
||||
pub type SamplerIndexBufferBindingMap =
|
||||
alloc::collections::BTreeMap<SamplerIndexBufferKey, BindTarget>;
|
||||
std::collections::BTreeMap<SamplerIndexBufferKey, BindTarget>;
|
||||
|
||||
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
|
||||
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
|
||||
@@ -324,7 +322,7 @@ where
|
||||
Ok(map)
|
||||
}
|
||||
|
||||
pub type DynamicStorageBufferOffsetsTargets = alloc::collections::BTreeMap<u32, OffsetsBindTarget>;
|
||||
pub type DynamicStorageBufferOffsetsTargets = std::collections::BTreeMap<u32, OffsetsBindTarget>;
|
||||
|
||||
/// Shorthand result used internally by the backend
|
||||
type BackendResult = Result<(), Error>;
|
||||
@@ -389,9 +387,9 @@ impl Default for Options {
|
||||
fake_missing_bindings: true,
|
||||
special_constants_binding: None,
|
||||
sampler_heap_target: SamplerHeapBindTargets::default(),
|
||||
sampler_buffer_binding_map: alloc::collections::BTreeMap::default(),
|
||||
sampler_buffer_binding_map: std::collections::BTreeMap::default(),
|
||||
push_constants_target: None,
|
||||
dynamic_storage_buffer_offsets_targets: alloc::collections::BTreeMap::new(),
|
||||
dynamic_storage_buffer_offsets_targets: std::collections::BTreeMap::new(),
|
||||
zero_initialize_workgroup_memory: true,
|
||||
restrict_indexing: true,
|
||||
force_loop_bounding: true,
|
||||
@@ -444,23 +442,18 @@ pub enum Error {
|
||||
Override,
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Eq, Hash)]
|
||||
enum WrappedType {
|
||||
ZeroValue(help::WrappedZeroValue),
|
||||
ArrayLength(help::WrappedArrayLength),
|
||||
ImageQuery(help::WrappedImageQuery),
|
||||
ImageLoadScalar(crate::Scalar),
|
||||
Constructor(help::WrappedConstructor),
|
||||
StructMatrixAccess(help::WrappedStructMatrixAccess),
|
||||
MatCx2(help::WrappedMatCx2),
|
||||
Math(help::WrappedMath),
|
||||
UnaryOp(help::WrappedUnaryOp),
|
||||
BinaryOp(help::WrappedBinaryOp),
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct Wrapped {
|
||||
types: crate::FastHashSet<WrappedType>,
|
||||
zero_values: crate::FastHashSet<help::WrappedZeroValue>,
|
||||
array_lengths: crate::FastHashSet<help::WrappedArrayLength>,
|
||||
image_queries: crate::FastHashSet<help::WrappedImageQuery>,
|
||||
image_load_scalars: crate::FastHashSet<crate::Scalar>,
|
||||
constructors: crate::FastHashSet<help::WrappedConstructor>,
|
||||
struct_matrix_access: crate::FastHashSet<help::WrappedStructMatrixAccess>,
|
||||
mat_cx2s: crate::FastHashSet<help::WrappedMatCx2>,
|
||||
math: crate::FastHashSet<help::WrappedMath>,
|
||||
unary_op: crate::FastHashSet<help::WrappedUnaryOp>,
|
||||
binary_op: crate::FastHashSet<help::WrappedBinaryOp>,
|
||||
/// If true, the sampler heaps have been written out.
|
||||
sampler_heaps: bool,
|
||||
// Mapping from SamplerIndexBufferKey to the name the namer returned.
|
||||
@@ -468,12 +461,15 @@ struct Wrapped {
|
||||
}
|
||||
|
||||
impl Wrapped {
|
||||
fn insert(&mut self, r#type: WrappedType) -> bool {
|
||||
self.types.insert(r#type)
|
||||
}
|
||||
|
||||
fn clear(&mut self) {
|
||||
self.types.clear();
|
||||
self.array_lengths.clear();
|
||||
self.image_queries.clear();
|
||||
self.constructors.clear();
|
||||
self.struct_matrix_access.clear();
|
||||
self.mat_cx2s.clear();
|
||||
self.math.clear();
|
||||
self.unary_op.clear();
|
||||
self.binary_op.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
17
third_party/rust/naga/src/back/hlsl/ray.rs
vendored
17
third_party/rust/naga/src/back/hlsl/ray.rs
vendored
@@ -1,7 +1,6 @@
|
||||
use core::fmt::Write;
|
||||
|
||||
use crate::back::hlsl::BackendResult;
|
||||
use crate::{RayQueryIntersection, TypeInner};
|
||||
use std::fmt::Write;
|
||||
|
||||
impl<W: Write> super::Writer<'_, W> {
|
||||
// constructs hlsl RayDesc from wgsl RayDesc
|
||||
@@ -28,12 +27,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
) -> BackendResult {
|
||||
self.write_type(module, module.special_types.ray_intersection.unwrap())?;
|
||||
write!(self.out, " GetCommittedIntersection(")?;
|
||||
self.write_value_type(
|
||||
module,
|
||||
&TypeInner::RayQuery {
|
||||
vertex_return: false,
|
||||
},
|
||||
)?;
|
||||
self.write_value_type(module, &TypeInner::RayQuery)?;
|
||||
writeln!(self.out, " rq) {{")?;
|
||||
write!(self.out, " ")?;
|
||||
self.write_type(module, module.special_types.ray_intersection.unwrap())?;
|
||||
@@ -99,12 +93,7 @@ impl<W: Write> super::Writer<'_, W> {
|
||||
) -> BackendResult {
|
||||
self.write_type(module, module.special_types.ray_intersection.unwrap())?;
|
||||
write!(self.out, " GetCandidateIntersection(")?;
|
||||
self.write_value_type(
|
||||
module,
|
||||
&TypeInner::RayQuery {
|
||||
vertex_return: false,
|
||||
},
|
||||
)?;
|
||||
self.write_value_type(module, &TypeInner::RayQuery)?;
|
||||
writeln!(self.out, " rq) {{")?;
|
||||
write!(self.out, " ")?;
|
||||
self.write_type(module, module.special_types.ray_intersection.unwrap())?;
|
||||
|
||||
@@ -55,15 +55,14 @@ correct type if necessary.
|
||||
[`Load` and `Store`]: https://github.com/microsoft/DirectXShaderCompiler/wiki/ByteAddressBuffer-Load-Store-Additions
|
||||
*/
|
||||
|
||||
use alloc::format;
|
||||
use core::{fmt, mem};
|
||||
|
||||
use super::{super::FunctionCtx, BackendResult, Error};
|
||||
use crate::{
|
||||
proc::{Alignment, NameKey, TypeResolution},
|
||||
Handle,
|
||||
};
|
||||
|
||||
use std::{fmt, mem};
|
||||
|
||||
const STORE_TEMP_NAME: &str = "_value";
|
||||
|
||||
/// One step in accessing a [`Storage`] global's component or element.
|
||||
|
||||
36
third_party/rust/naga/src/back/hlsl/writer.rs
vendored
36
third_party/rust/naga/src/back/hlsl/writer.rs
vendored
@@ -1,10 +1,3 @@
|
||||
use alloc::{
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec::Vec,
|
||||
};
|
||||
use core::{fmt, mem};
|
||||
|
||||
use super::{
|
||||
help,
|
||||
help::{
|
||||
@@ -16,10 +9,10 @@ use super::{
|
||||
};
|
||||
use crate::{
|
||||
back::{self, Baked},
|
||||
common,
|
||||
proc::{self, index, ExpressionKindTracker, NameKey},
|
||||
valid, Handle, Module, RayQueryFunction, Scalar, ScalarKind, ShaderStage, TypeInner,
|
||||
};
|
||||
use std::{fmt, mem};
|
||||
|
||||
const LOCATION_SEMANTIC: &str = "LOC";
|
||||
const SPECIAL_CBUF_TYPE: &str = "NagaConstants";
|
||||
@@ -1322,7 +1315,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
self.out,
|
||||
"{}{}",
|
||||
scalar.to_hlsl_str()?,
|
||||
common::vector_size_str(size)
|
||||
back::vector_size_str(size)
|
||||
)?;
|
||||
}
|
||||
TypeInner::Matrix {
|
||||
@@ -1338,8 +1331,8 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
self.out,
|
||||
"{}{}x{}",
|
||||
scalar.to_hlsl_str()?,
|
||||
common::vector_size_str(columns),
|
||||
common::vector_size_str(rows),
|
||||
back::vector_size_str(columns),
|
||||
back::vector_size_str(rows),
|
||||
)?;
|
||||
}
|
||||
TypeInner::Image {
|
||||
@@ -1363,10 +1356,10 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
TypeInner::Array { base, size, .. } | TypeInner::BindingArray { base, size } => {
|
||||
self.write_array_size(module, base, size)?;
|
||||
}
|
||||
TypeInner::AccelerationStructure { .. } => {
|
||||
TypeInner::AccelerationStructure => {
|
||||
write!(self.out, "RaytracingAccelerationStructure")?;
|
||||
}
|
||||
TypeInner::RayQuery { .. } => {
|
||||
TypeInner::RayQuery => {
|
||||
// these are constant flags, there are dynamic flags also but constant flags are not supported by naga
|
||||
write!(self.out, "RayQuery<RAY_FLAG_NONE>")?;
|
||||
}
|
||||
@@ -1541,7 +1534,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
|
||||
match module.types[local.ty].inner {
|
||||
// from https://microsoft.github.io/DirectX-Specs/d3d/Raytracing.html#tracerayinline-example-1 it seems that ray queries shouldn't be zeroed
|
||||
TypeInner::RayQuery { .. } => {}
|
||||
TypeInner::RayQuery => {}
|
||||
_ => {
|
||||
write!(self.out, " = ")?;
|
||||
// Write the local initializer if needed
|
||||
@@ -1722,14 +1715,14 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
}
|
||||
|
||||
let last_case = &cases[end_case_idx];
|
||||
if last_case.body.last().is_none_or(|s| !s.is_terminator()) {
|
||||
if last_case.body.last().map_or(true, |s| !s.is_terminator()) {
|
||||
writeln!(self.out, "{indent_level_2}break;")?;
|
||||
}
|
||||
} else {
|
||||
for sta in case.body.iter() {
|
||||
self.write_stmt(module, sta, func_ctx, indent_level_2)?;
|
||||
}
|
||||
if !case.fall_through && case.body.last().is_none_or(|s| !s.is_terminator()) {
|
||||
if !case.fall_through && case.body.last().map_or(true, |s| !s.is_terminator()) {
|
||||
writeln!(self.out, "{indent_level_2}break;")?;
|
||||
}
|
||||
}
|
||||
@@ -3341,7 +3334,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
self.out,
|
||||
"{}{}(",
|
||||
scalar.to_hlsl_str()?,
|
||||
common::vector_size_str(size)
|
||||
back::vector_size_str(size)
|
||||
)?;
|
||||
}
|
||||
TypeInner::Scalar(_) => {
|
||||
@@ -3352,8 +3345,8 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
self.out,
|
||||
"{}{}x{}(",
|
||||
scalar.to_hlsl_str()?,
|
||||
common::vector_size_str(columns),
|
||||
common::vector_size_str(rows)
|
||||
back::vector_size_str(columns),
|
||||
back::vector_size_str(rows)
|
||||
)?;
|
||||
}
|
||||
_ => {
|
||||
@@ -3954,8 +3947,6 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
write!(self.out, ")")?;
|
||||
}
|
||||
}
|
||||
// Not supported yet
|
||||
Expression::RayQueryVertexPositions { .. } => unreachable!(),
|
||||
// Nothing to do here, since call expression already cached
|
||||
Expression::CallResult(_)
|
||||
| Expression::AtomicResult { .. }
|
||||
@@ -4139,9 +4130,6 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
|
||||
if barrier.contains(crate::Barrier::SUB_GROUP) {
|
||||
// Does not exist in DirectX
|
||||
}
|
||||
if barrier.contains(crate::Barrier::TEXTURE) {
|
||||
writeln!(self.out, "{level}DeviceMemoryBarrierWithGroupSync();")?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
23
third_party/rust/naga/src/back/mod.rs
vendored
23
third_party/rust/naga/src/back/mod.rs
vendored
@@ -3,8 +3,6 @@ Backend functions that export shader [`Module`](super::Module)s into binary and
|
||||
*/
|
||||
#![allow(dead_code)] // can be dead if none of the enabled backends need it
|
||||
|
||||
use alloc::string::String;
|
||||
|
||||
use crate::proc::ExpressionKindTracker;
|
||||
|
||||
#[cfg(dot_out)]
|
||||
@@ -37,15 +35,15 @@ pub type NeedBakeExpressions = crate::FastHashSet<crate::Handle<crate::Expressio
|
||||
/// A type for displaying expression handles as baking identifiers.
|
||||
///
|
||||
/// Given an [`Expression`] [`Handle`] `h`, `Baked(h)` implements
|
||||
/// [`core::fmt::Display`], showing the handle's index prefixed by
|
||||
/// [`std::fmt::Display`], showing the handle's index prefixed by
|
||||
/// `_e`.
|
||||
///
|
||||
/// [`Expression`]: crate::Expression
|
||||
/// [`Handle`]: crate::Handle
|
||||
struct Baked(crate::Handle<crate::Expression>);
|
||||
|
||||
impl core::fmt::Display for Baked {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
impl std::fmt::Display for Baked {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, "_e")
|
||||
}
|
||||
}
|
||||
@@ -69,8 +67,8 @@ impl Level {
|
||||
}
|
||||
}
|
||||
|
||||
impl core::fmt::Display for Level {
|
||||
fn fmt(&self, formatter: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> {
|
||||
impl std::fmt::Display for Level {
|
||||
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
||||
(0..self.0).try_for_each(|_| formatter.write_str(INDENT))
|
||||
}
|
||||
}
|
||||
@@ -250,13 +248,22 @@ pub const fn binary_operation_str(op: crate::BinaryOperator) -> &'static str {
|
||||
}
|
||||
}
|
||||
|
||||
/// Helper function that returns the string corresponding to the [`VectorSize`](crate::VectorSize)
|
||||
const fn vector_size_str(size: crate::VectorSize) -> &'static str {
|
||||
match size {
|
||||
crate::VectorSize::Bi => "2",
|
||||
crate::VectorSize::Tri => "3",
|
||||
crate::VectorSize::Quad => "4",
|
||||
}
|
||||
}
|
||||
|
||||
impl crate::TypeInner {
|
||||
/// Returns true if this is a handle to a type rather than the type directly.
|
||||
pub const fn is_handle(&self) -> bool {
|
||||
match *self {
|
||||
crate::TypeInner::Image { .. }
|
||||
| crate::TypeInner::Sampler { .. }
|
||||
| crate::TypeInner::AccelerationStructure { .. } => true,
|
||||
| crate::TypeInner::AccelerationStructure => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
13
third_party/rust/naga/src/back/msl/mod.rs
vendored
13
third_party/rust/naga/src/back/msl/mod.rs
vendored
@@ -31,14 +31,8 @@ holding the result.
|
||||
|
||||
*/
|
||||
|
||||
use alloc::{
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec::Vec,
|
||||
};
|
||||
use core::fmt::{Error as FmtError, Write};
|
||||
|
||||
use crate::{arena::Handle, proc::index, valid::ModuleInfo};
|
||||
use std::fmt::{Error as FmtError, Write};
|
||||
|
||||
mod keywords;
|
||||
pub mod sampler;
|
||||
@@ -91,7 +85,7 @@ where
|
||||
}
|
||||
|
||||
// Using `BTreeMap` instead of `HashMap` so that we can hash itself.
|
||||
pub type BindingMap = alloc::collections::BTreeMap<crate::ResourceBinding, BindTarget>;
|
||||
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, BindTarget>;
|
||||
|
||||
#[derive(Clone, Debug, Default, Hash, Eq, PartialEq)]
|
||||
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
|
||||
@@ -112,7 +106,7 @@ pub struct EntryPointResources {
|
||||
pub sizes_buffer: Option<Slot>,
|
||||
}
|
||||
|
||||
pub type EntryPointResourceMap = alloc::collections::BTreeMap<String, EntryPointResources>;
|
||||
pub type EntryPointResourceMap = std::collections::BTreeMap<String, EntryPointResources>;
|
||||
|
||||
enum ResolvedBinding {
|
||||
BuiltIn(crate::BuiltIn),
|
||||
@@ -729,5 +723,6 @@ pub fn write_string(
|
||||
|
||||
#[test]
|
||||
fn test_error_size() {
|
||||
use std::mem::size_of;
|
||||
assert_eq!(size_of::<Error>(), 32);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
use core::{num::NonZeroU32, ops::Range};
|
||||
|
||||
#[cfg(feature = "deserialize")]
|
||||
use serde::Deserialize;
|
||||
#[cfg(feature = "serialize")]
|
||||
use serde::Serialize;
|
||||
use std::{num::NonZeroU32, ops::Range};
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
#[cfg_attr(feature = "serialize", derive(Serialize))]
|
||||
@@ -159,8 +158,8 @@ impl Eq for InlineSampler {}
|
||||
|
||||
#[allow(renamed_and_removed_lints)]
|
||||
#[allow(clippy::derive_hash_xor_eq)]
|
||||
impl core::hash::Hash for InlineSampler {
|
||||
fn hash<H: core::hash::Hasher>(&self, hasher: &mut H) {
|
||||
impl std::hash::Hash for InlineSampler {
|
||||
fn hash<H: std::hash::Hasher>(&self, hasher: &mut H) {
|
||||
self.coord.hash(hasher);
|
||||
self.address.hash(hasher);
|
||||
self.border_color.hash(hasher);
|
||||
|
||||
69
third_party/rust/naga/src/back/msl/writer.rs
vendored
69
third_party/rust/naga/src/back/msl/writer.rs
vendored
@@ -1,25 +1,16 @@
|
||||
use alloc::{
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
use core::{
|
||||
fmt::{Display, Error as FmtError, Formatter, Write},
|
||||
iter,
|
||||
};
|
||||
|
||||
use super::{sampler as sm, Error, LocationMode, Options, PipelineOptions, TranslationInfo};
|
||||
use crate::{
|
||||
arena::{Handle, HandleSet},
|
||||
back::{self, Baked},
|
||||
common,
|
||||
proc::{self, index, ExpressionKindTracker, NameKey, TypeResolution},
|
||||
valid, FastHashMap, FastHashSet,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
use core::ptr;
|
||||
use std::ptr;
|
||||
use std::{
|
||||
fmt::{Display, Error as FmtError, Formatter, Write},
|
||||
iter,
|
||||
};
|
||||
|
||||
/// Shorthand result used internally by the backend
|
||||
type BackendResult = Result<(), Error>;
|
||||
@@ -81,7 +72,7 @@ fn put_numeric_type(
|
||||
"{}::{}{}",
|
||||
NAMESPACE,
|
||||
scalar.to_msl_name(),
|
||||
common::vector_size_str(rows)
|
||||
back::vector_size_str(rows)
|
||||
)
|
||||
}
|
||||
(scalar, &[rows, columns]) => {
|
||||
@@ -90,8 +81,8 @@ fn put_numeric_type(
|
||||
"{}::{}{}x{}",
|
||||
NAMESPACE,
|
||||
scalar.to_msl_name(),
|
||||
common::vector_size_str(columns),
|
||||
common::vector_size_str(rows)
|
||||
back::vector_size_str(columns),
|
||||
back::vector_size_str(rows)
|
||||
)
|
||||
}
|
||||
(_, _) => Ok(()), // not meaningful
|
||||
@@ -111,13 +102,13 @@ const CLAMPED_LOD_LOAD_PREFIX: &str = "clamped_lod_e";
|
||||
|
||||
/// Wrapper for identifier names for clamped level-of-detail values
|
||||
///
|
||||
/// Values of this type implement [`core::fmt::Display`], formatting as
|
||||
/// Values of this type implement [`std::fmt::Display`], formatting as
|
||||
/// the name of the variable used to hold the cached clamped
|
||||
/// level-of-detail value for an `ImageLoad` expression.
|
||||
struct ClampedLod(Handle<crate::Expression>);
|
||||
|
||||
impl Display for ClampedLod {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, CLAMPED_LOD_LOAD_PREFIX)
|
||||
}
|
||||
}
|
||||
@@ -132,14 +123,14 @@ impl Display for ClampedLod {
|
||||
///
|
||||
/// If `global` is a [`Handle`] for a [`GlobalVariable`] that contains a
|
||||
/// runtime-sized array, then the value `ArraySize(global)` implements
|
||||
/// [`core::fmt::Display`], formatting as the name of the struct member carrying
|
||||
/// [`std::fmt::Display`], formatting as the name of the struct member carrying
|
||||
/// the number of elements in that runtime-sized array.
|
||||
///
|
||||
/// [`GlobalVariable`]: crate::GlobalVariable
|
||||
struct ArraySizeMember(Handle<crate::GlobalVariable>);
|
||||
|
||||
impl Display for ArraySizeMember {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
self.0.write_prefixed(f, "size")
|
||||
}
|
||||
}
|
||||
@@ -290,16 +281,10 @@ impl Display for TypeContext<'_> {
|
||||
crate::TypeInner::Sampler { comparison: _ } => {
|
||||
write!(out, "{NAMESPACE}::sampler")
|
||||
}
|
||||
crate::TypeInner::AccelerationStructure { vertex_return } => {
|
||||
if vertex_return {
|
||||
unimplemented!("metal does not support vertex ray hit return")
|
||||
}
|
||||
crate::TypeInner::AccelerationStructure => {
|
||||
write!(out, "{RT_NAMESPACE}::instance_acceleration_structure")
|
||||
}
|
||||
crate::TypeInner::RayQuery { vertex_return } => {
|
||||
if vertex_return {
|
||||
unimplemented!("metal does not support vertex ray hit return")
|
||||
}
|
||||
crate::TypeInner::RayQuery => {
|
||||
write!(out, "{RAY_QUERY_TYPE}")
|
||||
}
|
||||
crate::TypeInner::BindingArray { base, .. } => {
|
||||
@@ -576,8 +561,8 @@ impl crate::Type {
|
||||
// handle types may be different, depending on the global var access, so we always inline them
|
||||
Ti::Image { .. }
|
||||
| Ti::Sampler { .. }
|
||||
| Ti::AccelerationStructure { .. }
|
||||
| Ti::RayQuery { .. }
|
||||
| Ti::AccelerationStructure
|
||||
| Ti::RayQuery
|
||||
| Ti::BindingArray { .. } => false,
|
||||
}
|
||||
}
|
||||
@@ -1409,7 +1394,7 @@ impl<W: Write> Writer<W> {
|
||||
.to_msl_name();
|
||||
match context.resolve_type(arg) {
|
||||
&crate::TypeInner::Vector { size, .. } => {
|
||||
let size = common::vector_size_str(size);
|
||||
let size = back::vector_size_str(size);
|
||||
write!(self.out, "{scalar}{size}(-1), {scalar}{size}(1)")?;
|
||||
}
|
||||
_ => {
|
||||
@@ -2134,7 +2119,7 @@ impl<W: Write> Writer<W> {
|
||||
// or metal will complain that select is ambiguous
|
||||
match *inner {
|
||||
crate::TypeInner::Vector { size, scalar } => {
|
||||
let size = common::vector_size_str(size);
|
||||
let size = back::vector_size_str(size);
|
||||
let name = scalar.to_msl_name();
|
||||
write!(self.out, "{name}{size}")?;
|
||||
}
|
||||
@@ -2262,7 +2247,7 @@ impl<W: Write> Writer<W> {
|
||||
crate::TypeInner::Vector { size, .. } => write!(
|
||||
self.out,
|
||||
"{NAMESPACE}::float{size}({NAMESPACE}::half{size}(",
|
||||
size = common::vector_size_str(size),
|
||||
size = back::vector_size_str(size),
|
||||
)?,
|
||||
_ => unreachable!(
|
||||
"Correct TypeInner for QuantizeToF16 should be already validated"
|
||||
@@ -2365,9 +2350,6 @@ impl<W: Write> Writer<W> {
|
||||
write!(self.out, ")")?;
|
||||
}
|
||||
}
|
||||
crate::Expression::RayQueryVertexPositions { .. } => {
|
||||
unimplemented!()
|
||||
}
|
||||
crate::Expression::RayQueryGetIntersection {
|
||||
query,
|
||||
committed: _,
|
||||
@@ -3241,7 +3223,8 @@ impl<W: Write> Writer<W> {
|
||||
}
|
||||
|
||||
self.put_block(lcase.next(), &case.body, context)?;
|
||||
if !case.fall_through && case.body.last().is_none_or(|s| !s.is_terminator())
|
||||
if !case.fall_through
|
||||
&& case.body.last().map_or(true, |s| !s.is_terminator())
|
||||
{
|
||||
writeln!(self.out, "{}break;", lcase.next())?;
|
||||
}
|
||||
@@ -3825,12 +3808,12 @@ impl<W: Write> Writer<W> {
|
||||
let mut uses_ray_query = false;
|
||||
for (_, ty) in module.types.iter() {
|
||||
match ty.inner {
|
||||
crate::TypeInner::AccelerationStructure { .. } => {
|
||||
crate::TypeInner::AccelerationStructure => {
|
||||
if options.lang_version < (2, 4) {
|
||||
return Err(Error::UnsupportedRayTracing);
|
||||
}
|
||||
}
|
||||
crate::TypeInner::RayQuery { .. } => {
|
||||
crate::TypeInner::RayQuery => {
|
||||
if options.lang_version < (2, 4) {
|
||||
return Err(Error::UnsupportedRayTracing);
|
||||
}
|
||||
@@ -6531,12 +6514,6 @@ template <typename A>
|
||||
"{level}{NAMESPACE}::simdgroup_barrier({NAMESPACE}::mem_flags::mem_threadgroup);",
|
||||
)?;
|
||||
}
|
||||
if flags.contains(crate::Barrier::TEXTURE) {
|
||||
writeln!(
|
||||
self.out,
|
||||
"{level}{NAMESPACE}::threadgroup_barrier({NAMESPACE}::mem_flags::mem_texture);",
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,3 @@
|
||||
use alloc::{
|
||||
borrow::Cow,
|
||||
string::{String, ToString},
|
||||
};
|
||||
use core::mem;
|
||||
|
||||
use hashbrown::HashSet;
|
||||
use thiserror::Error;
|
||||
|
||||
use super::PipelineConstants;
|
||||
use crate::{
|
||||
arena::HandleVec,
|
||||
@@ -15,6 +6,9 @@ use crate::{
|
||||
Arena, Block, Constant, Expression, Function, Handle, Literal, Module, Override, Range, Scalar,
|
||||
Span, Statement, TypeInner, WithSpan,
|
||||
};
|
||||
use hashbrown::HashSet;
|
||||
use std::{borrow::Cow, mem};
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug, Clone)]
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
@@ -249,7 +243,7 @@ fn process_pending(
|
||||
),
|
||||
))
|
||||
} else {
|
||||
Ok(core::num::NonZeroU32::new(n).unwrap())
|
||||
Ok(std::num::NonZeroU32::new(n).unwrap())
|
||||
}
|
||||
})
|
||||
.map_err(|_| {
|
||||
@@ -638,12 +632,6 @@ fn adjust_expr(new_pos: &HandleVec<Expression, Handle<Expression>>, expr: &mut E
|
||||
| Expression::WorkGroupUniformLoadResult { ty: _ }
|
||||
| Expression::SubgroupBallotResult
|
||||
| Expression::SubgroupOperationResult { .. } => {}
|
||||
Expression::RayQueryVertexPositions {
|
||||
ref mut query,
|
||||
committed: _,
|
||||
} => {
|
||||
adjust(query);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
78
third_party/rust/naga/src/back/spv/block.rs
vendored
78
third_party/rust/naga/src/back/spv/block.rs
vendored
@@ -2,16 +2,13 @@
|
||||
Implementations for `BlockContext` methods.
|
||||
*/
|
||||
|
||||
use alloc::vec::Vec;
|
||||
|
||||
use spirv::Word;
|
||||
|
||||
use super::{
|
||||
index::BoundsCheckResult, selection::Selection, Block, BlockContext, Dimension, Error,
|
||||
Instruction, LocalType, LookupType, NumericType, ResultMember, WrappedFunction, Writer,
|
||||
WriterFlags,
|
||||
};
|
||||
use crate::{arena::Handle, proc::index::GuardedIndex, Statement};
|
||||
use spirv::Word;
|
||||
|
||||
fn get_dimension(type_inner: &crate::TypeInner) -> Dimension {
|
||||
match *type_inner {
|
||||
@@ -1582,7 +1579,7 @@ impl BlockContext<'_> {
|
||||
|
||||
const VEC_LENGTH: u8 = 4;
|
||||
let parts: [_; VEC_LENGTH as usize] =
|
||||
core::array::from_fn(|_| self.gen_id());
|
||||
std::array::from_fn(|_| self.gen_id());
|
||||
for (i, part_id) in parts.into_iter().enumerate() {
|
||||
let index = self
|
||||
.writer
|
||||
@@ -1930,13 +1927,6 @@ impl BlockContext<'_> {
|
||||
));
|
||||
id
|
||||
}
|
||||
crate::Expression::RayQueryVertexPositions { query, committed } => {
|
||||
self.writer.require_any(
|
||||
"RayQueryVertexPositions",
|
||||
&[spirv::Capability::RayQueryPositionFetchKHR],
|
||||
)?;
|
||||
self.write_ray_query_return_vertex_position(query, block, committed)
|
||||
}
|
||||
};
|
||||
|
||||
self.cached[expr_handle] = id;
|
||||
@@ -2240,60 +2230,26 @@ impl BlockContext<'_> {
|
||||
}
|
||||
|
||||
fn spill_to_internal_variable(&mut self, base: Handle<crate::Expression>, block: &mut Block) {
|
||||
use indexmap::map::Entry;
|
||||
|
||||
// Make sure we have an internal variable to spill `base` to.
|
||||
let spill_variable_id = match self.function.spilled_composites.entry(base) {
|
||||
Entry::Occupied(preexisting) => preexisting.get().id,
|
||||
Entry::Vacant(vacant) => {
|
||||
// Generate a new internal variable of the appropriate
|
||||
// type for `base`.
|
||||
let pointer_type_id = self.writer.get_resolution_pointer_id(
|
||||
&self.fun_info[base].ty,
|
||||
spirv::StorageClass::Function,
|
||||
);
|
||||
let id = self.writer.id_gen.next();
|
||||
vacant.insert(super::LocalVariable {
|
||||
id,
|
||||
instruction: Instruction::variable(
|
||||
pointer_type_id,
|
||||
id,
|
||||
spirv::StorageClass::Function,
|
||||
None,
|
||||
),
|
||||
});
|
||||
id
|
||||
}
|
||||
// Generate an internal variable of the appropriate type for `base`.
|
||||
let variable_id = self.writer.id_gen.next();
|
||||
let pointer_type_id = self
|
||||
.writer
|
||||
.get_resolution_pointer_id(&self.fun_info[base].ty, spirv::StorageClass::Function);
|
||||
let variable = super::LocalVariable {
|
||||
id: variable_id,
|
||||
instruction: Instruction::variable(
|
||||
pointer_type_id,
|
||||
variable_id,
|
||||
spirv::StorageClass::Function,
|
||||
None,
|
||||
),
|
||||
};
|
||||
|
||||
// Perform the store even if we already had a spill variable for `base`.
|
||||
// Consider this code:
|
||||
//
|
||||
// var x = ...;
|
||||
// var y = ...;
|
||||
// var z = ...;
|
||||
// for (i = 0; i<2; i++) {
|
||||
// let a = array(i, i, i);
|
||||
// if (i == 0) {
|
||||
// x += a[y];
|
||||
// } else [
|
||||
// x += a[z];
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// The value of `a` needs to be spilled so we can subscript it with `y` and `z`.
|
||||
//
|
||||
// When we generate SPIR-V for `a[y]`, we will create the spill
|
||||
// variable, and store `a`'s value in it.
|
||||
//
|
||||
// When we generate SPIR-V for `a[z]`, we will notice that the spill
|
||||
// variable for `a` has already been declared, but it is still essential
|
||||
// that we store `a` into it, so that `a[z]` sees this iteration's value
|
||||
// of `a`.
|
||||
let base_id = self.cached[base];
|
||||
block
|
||||
.body
|
||||
.push(Instruction::store(spill_variable_id, base_id, None));
|
||||
.push(Instruction::store(variable.id, base_id, None));
|
||||
self.function.spilled_composites.insert(base, variable);
|
||||
}
|
||||
|
||||
/// Generate an access to a spilled temporary, if necessary.
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use spirv::Word;
|
||||
|
||||
use crate::{Handle, UniqueArena};
|
||||
use spirv::Word;
|
||||
|
||||
pub(super) fn bytes_to_words(bytes: &[u8]) -> Vec<Word> {
|
||||
bytes
|
||||
|
||||
3
third_party/rust/naga/src/back/spv/image.rs
vendored
3
third_party/rust/naga/src/back/spv/image.rs
vendored
@@ -2,13 +2,12 @@
|
||||
Generating SPIR-V for image operations.
|
||||
*/
|
||||
|
||||
use spirv::Word;
|
||||
|
||||
use super::{
|
||||
selection::{MergeTuple, Selection},
|
||||
Block, BlockContext, Error, IdGenerator, Instruction, LocalType, LookupType, NumericType,
|
||||
};
|
||||
use crate::arena::Handle;
|
||||
use spirv::Word;
|
||||
|
||||
/// Information about a vector of coordinates.
|
||||
///
|
||||
|
||||
2
third_party/rust/naga/src/back/spv/index.rs
vendored
2
third_party/rust/naga/src/back/spv/index.rs
vendored
@@ -351,7 +351,7 @@ impl BlockContext<'_> {
|
||||
// If both are known, we can compute the index to be used
|
||||
// right now.
|
||||
if let (GuardedIndex::Known(index), MaybeKnown::Known(max_index)) = (index, max_index) {
|
||||
let restricted = core::cmp::min(index, max_index);
|
||||
let restricted = std::cmp::min(index, max_index);
|
||||
return Ok(BoundsCheckResult::KnownInBounds(restricted));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use spirv::{Op, Word};
|
||||
|
||||
use super::{block::DebugInfoInner, helpers};
|
||||
use spirv::{Op, Word};
|
||||
|
||||
pub(super) enum Signedness {
|
||||
Unsigned = 0,
|
||||
@@ -795,20 +792,6 @@ impl super::Instruction {
|
||||
instruction
|
||||
}
|
||||
|
||||
pub(super) fn ray_query_return_vertex_position(
|
||||
result_type_id: Word,
|
||||
id: Word,
|
||||
query: Word,
|
||||
intersection: Word,
|
||||
) -> Self {
|
||||
let mut instruction = Self::new(Op::RayQueryGetIntersectionTriangleVertexPositionsKHR);
|
||||
instruction.set_type(result_type_id);
|
||||
instruction.set_result(id);
|
||||
instruction.add_operand(query);
|
||||
instruction.add_operand(intersection);
|
||||
instruction
|
||||
}
|
||||
|
||||
pub(super) fn ray_query_get_intersection(
|
||||
op: Op,
|
||||
result_type_id: Word,
|
||||
|
||||
10
third_party/rust/naga/src/back/spv/layout.rs
vendored
10
third_party/rust/naga/src/back/spv/layout.rs
vendored
@@ -1,12 +1,6 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
use core::iter;
|
||||
|
||||
use spirv::{Op, Word, MAGIC_NUMBER};
|
||||
|
||||
use super::{Instruction, LogicalLayout, PhysicalLayout};
|
||||
|
||||
#[cfg(test)]
|
||||
use alloc::format;
|
||||
use spirv::{Op, Word, MAGIC_NUMBER};
|
||||
use std::iter;
|
||||
|
||||
// https://github.com/KhronosGroup/SPIRV-Headers/pull/195
|
||||
const GENERATOR: Word = 28;
|
||||
|
||||
33
third_party/rust/naga/src/back/spv/mod.rs
vendored
33
third_party/rust/naga/src/back/spv/mod.rs
vendored
@@ -18,15 +18,13 @@ mod writer;
|
||||
|
||||
pub use spirv::{Capability, SourceLanguage};
|
||||
|
||||
use alloc::{string::String, vec::Vec};
|
||||
use core::ops;
|
||||
|
||||
use spirv::Word;
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::arena::{Handle, HandleVec};
|
||||
use crate::proc::{BoundsCheckPolicies, TypeResolution};
|
||||
|
||||
use spirv::Word;
|
||||
use std::ops;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct PhysicalLayout {
|
||||
magic_number: Word,
|
||||
@@ -149,17 +147,12 @@ struct Function {
|
||||
/// List of local variables used as a counters to ensure that all loops are bounded.
|
||||
force_loop_bounding_vars: Vec<LocalVariable>,
|
||||
|
||||
/// A map from a Naga expression to the temporary SPIR-V variable we have
|
||||
/// spilled its value to, if any.
|
||||
///
|
||||
/// Naga IR lets us apply [`Access`] expressions to expressions whose value
|
||||
/// is an array or matrix---not a pointer to such---but SPIR-V doesn't have
|
||||
/// instructions that can do the same. So when we encounter such code, we
|
||||
/// spill the expression's value to a generated temporary variable. That, we
|
||||
/// can obtain a pointer to, and then use an `OpAccessChain` instruction to
|
||||
/// do whatever series of [`Access`] and [`AccessIndex`] operations we need
|
||||
/// (with bounds checks). Finally, we generate an `OpLoad` to get the final
|
||||
/// value.
|
||||
/// A map taking an expression that yields a composite value (array, matrix)
|
||||
/// to the temporary variables we have spilled it to, if any. Spilling
|
||||
/// allows us to render an arbitrary chain of [`Access`] and [`AccessIndex`]
|
||||
/// expressions as an `OpAccessChain` and an `OpLoad` (plus bounds checks).
|
||||
/// This supports dynamic indexing of by-value arrays and matrices, which
|
||||
/// SPIR-V does not.
|
||||
///
|
||||
/// [`Access`]: crate::Expression::Access
|
||||
/// [`AccessIndex`]: crate::Expression::AccessIndex
|
||||
@@ -488,8 +481,8 @@ impl LocalType {
|
||||
class,
|
||||
} => LocalType::Image(LocalImageType::from_inner(dim, arrayed, class)),
|
||||
crate::TypeInner::Sampler { comparison: _ } => LocalType::Sampler,
|
||||
crate::TypeInner::AccelerationStructure { .. } => LocalType::AccelerationStructure,
|
||||
crate::TypeInner::RayQuery { .. } => LocalType::RayQuery,
|
||||
crate::TypeInner::AccelerationStructure => LocalType::AccelerationStructure,
|
||||
crate::TypeInner::RayQuery => LocalType::RayQuery,
|
||||
crate::TypeInner::Array { .. }
|
||||
| crate::TypeInner::Struct { .. }
|
||||
| crate::TypeInner::BindingArray { .. } => return None,
|
||||
@@ -859,7 +852,7 @@ pub struct BindingInfo {
|
||||
}
|
||||
|
||||
// Using `BTreeMap` instead of `HashMap` so that we can hash itself.
|
||||
pub type BindingMap = alloc::collections::BTreeMap<crate::ResourceBinding, BindingInfo>;
|
||||
pub type BindingMap = std::collections::BTreeMap<crate::ResourceBinding, BindingInfo>;
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum ZeroInitializeWorkgroupMemoryMode {
|
||||
|
||||
50
third_party/rust/naga/src/back/spv/ray.rs
vendored
50
third_party/rust/naga/src/back/spv/ray.rs
vendored
@@ -2,8 +2,6 @@
|
||||
Generating SPIR-V for ray query operations.
|
||||
*/
|
||||
|
||||
use alloc::vec;
|
||||
|
||||
use super::{
|
||||
Block, BlockContext, Function, FunctionArgument, Instruction, LocalType, LookupFunctionType,
|
||||
LookupType, NumericType, Writer,
|
||||
@@ -116,8 +114,17 @@ impl Writer {
|
||||
class: spirv::StorageClass::Function,
|
||||
}));
|
||||
|
||||
let argument_type_id = self.get_ray_query_pointer_id(ir_module);
|
||||
|
||||
let rq_ty = ir_module
|
||||
.types
|
||||
.get(&Type {
|
||||
name: None,
|
||||
inner: TypeInner::RayQuery,
|
||||
})
|
||||
.expect("ray_query type should have been populated by the variable passed into this!");
|
||||
let argument_type_id = self.get_type_id(LookupType::Local(LocalType::Pointer {
|
||||
base: rq_ty,
|
||||
class: spirv::StorageClass::Function,
|
||||
}));
|
||||
let func_ty = self.get_function_type(LookupFunctionType {
|
||||
parameter_type_ids: vec![argument_type_id],
|
||||
return_type_id: intersection_type_id,
|
||||
@@ -617,39 +624,4 @@ impl BlockContext<'_> {
|
||||
crate::RayQueryFunction::Terminate => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn write_ray_query_return_vertex_position(
|
||||
&mut self,
|
||||
query: Handle<crate::Expression>,
|
||||
block: &mut Block,
|
||||
is_committed: bool,
|
||||
) -> spirv::Word {
|
||||
let query_id = self.cached[query];
|
||||
let id = self.gen_id();
|
||||
let result = self
|
||||
.ir_module
|
||||
.special_types
|
||||
.ray_vertex_return
|
||||
.expect("type should have been populated");
|
||||
let intersection_id =
|
||||
self.writer
|
||||
.get_constant_scalar(crate::Literal::U32(if is_committed {
|
||||
spirv::RayQueryIntersection::RayQueryCommittedIntersectionKHR
|
||||
} else {
|
||||
spirv::RayQueryIntersection::RayQueryCandidateIntersectionKHR
|
||||
} as _));
|
||||
block
|
||||
.body
|
||||
.push(Instruction::ray_query_return_vertex_position(
|
||||
*self
|
||||
.writer
|
||||
.lookup_type
|
||||
.get(&LookupType::Handle(result))
|
||||
.expect("type should have been populated"),
|
||||
id,
|
||||
query_id,
|
||||
intersection_id,
|
||||
));
|
||||
id
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
Reusing collections' previous allocations.
|
||||
*/
|
||||
|
||||
use alloc::vec::Vec;
|
||||
|
||||
/// A value that can be reset to its initial state, retaining its current allocations.
|
||||
///
|
||||
/// Naga attempts to lower the cost of SPIR-V generation by allowing clients to
|
||||
@@ -61,7 +59,7 @@ impl<K, S: Clone> Recyclable for indexmap::IndexSet<K, S> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<K: Ord, V> Recyclable for alloc::collections::BTreeMap<K, V> {
|
||||
impl<K: Ord, V> Recyclable for std::collections::BTreeMap<K, V> {
|
||||
fn recycle(mut self) -> Self {
|
||||
self.clear();
|
||||
self
|
||||
|
||||
@@ -57,11 +57,8 @@ pointer for the duration of its lifetime. To obtain the block for generating
|
||||
code in the selection's body, call the `Selection::block` method.
|
||||
*/
|
||||
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use spirv::Word;
|
||||
|
||||
use super::{Block, BlockContext, Instruction};
|
||||
use spirv::Word;
|
||||
|
||||
/// A private struct recording what we know about the selection construct so far.
|
||||
pub(super) struct Selection<'b, M: MergeTuple> {
|
||||
@@ -128,7 +125,7 @@ impl<'b, M: MergeTuple> Selection<'b, M> {
|
||||
let merge_label = self.make_merge_label(ctx);
|
||||
let next_label = ctx.gen_id();
|
||||
ctx.function.consume(
|
||||
core::mem::replace(self.block, Block::new(next_label)),
|
||||
std::mem::replace(self.block, Block::new(next_label)),
|
||||
Instruction::branch_conditional(cond, next_label, merge_label),
|
||||
);
|
||||
}
|
||||
@@ -163,7 +160,7 @@ impl<'b, M: MergeTuple> Selection<'b, M> {
|
||||
// Emit the final branch and transition to the merge block.
|
||||
values.push((final_values, block.label_id));
|
||||
ctx.function.consume(
|
||||
core::mem::replace(block, Block::new(merge_label)),
|
||||
std::mem::replace(block, Block::new(merge_label)),
|
||||
Instruction::branch(merge_label),
|
||||
);
|
||||
|
||||
|
||||
67
third_party/rust/naga/src/back/spv/writer.rs
vendored
67
third_party/rust/naga/src/back/spv/writer.rs
vendored
@@ -1,12 +1,3 @@
|
||||
use alloc::{
|
||||
string::{String, ToString},
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
|
||||
use hashbrown::hash_map::Entry;
|
||||
use spirv::Word;
|
||||
|
||||
use super::{
|
||||
block::DebugInfoInner,
|
||||
helpers::{contains_builtin, global_needs_wrapper, map_storage_class},
|
||||
@@ -21,6 +12,8 @@ use crate::{
|
||||
proc::{Alignment, TypeResolution},
|
||||
valid::{FunctionInfo, ModuleInfo},
|
||||
};
|
||||
use hashbrown::hash_map::Entry;
|
||||
use spirv::Word;
|
||||
|
||||
struct FunctionInterface<'a> {
|
||||
varying_ids: &'a mut Vec<Word>,
|
||||
@@ -104,12 +97,12 @@ impl Writer {
|
||||
/// `Recyclable::recycle` requires ownership of the value, not just
|
||||
/// `&mut`; see the trait documentation. But we need to use this method
|
||||
/// from functions like `Writer::write`, which only have `&mut Writer`.
|
||||
/// Workarounds include unsafe code (`core::ptr::read`, then `write`, ugh)
|
||||
/// Workarounds include unsafe code (`std::ptr::read`, then `write`, ugh)
|
||||
/// or something like a `Default` impl that returns an oddly-initialized
|
||||
/// `Writer`, which is worse.
|
||||
fn reset(&mut self) {
|
||||
use super::recyclable::Recyclable;
|
||||
use core::mem::take;
|
||||
use std::mem::take;
|
||||
|
||||
let mut id_gen = IdGenerator::default();
|
||||
let gl450_ext_inst_id = id_gen.next();
|
||||
@@ -251,30 +244,6 @@ impl Writer {
|
||||
}))
|
||||
}
|
||||
|
||||
pub(super) fn get_ray_query_pointer_id(&mut self, module: &crate::Module) -> Word {
|
||||
let rq_ty = module
|
||||
.types
|
||||
.get(&crate::Type {
|
||||
name: None,
|
||||
inner: crate::TypeInner::RayQuery {
|
||||
vertex_return: false,
|
||||
},
|
||||
})
|
||||
.or_else(|| {
|
||||
module.types.get(&crate::Type {
|
||||
name: None,
|
||||
inner: crate::TypeInner::RayQuery {
|
||||
vertex_return: true,
|
||||
},
|
||||
})
|
||||
})
|
||||
.expect("ray_query type should have been populated by the variable passed into this!");
|
||||
self.get_type_id(LookupType::Local(LocalType::Pointer {
|
||||
base: rq_ty,
|
||||
class: spirv::StorageClass::Function,
|
||||
}))
|
||||
}
|
||||
|
||||
/// Return a SPIR-V type for a pointer to `resolution`.
|
||||
///
|
||||
/// The given `resolution` must be one that we can represent
|
||||
@@ -898,10 +867,10 @@ impl Writer {
|
||||
fun_info: info,
|
||||
function: &mut function,
|
||||
// Re-use the cached expression table from prior functions.
|
||||
cached: core::mem::take(&mut self.saved_cached),
|
||||
cached: std::mem::take(&mut self.saved_cached),
|
||||
|
||||
// Steal the Writer's temp list for a bit.
|
||||
temp_list: core::mem::take(&mut self.temp_list),
|
||||
temp_list: std::mem::take(&mut self.temp_list),
|
||||
force_loop_bounding: self.force_loop_bounding,
|
||||
writer: self,
|
||||
expression_constness: super::ExpressionConstnessTracker::from_arena(
|
||||
@@ -937,7 +906,7 @@ impl Writer {
|
||||
id,
|
||||
spirv::StorageClass::Function,
|
||||
init_word.or_else(|| match ir_module.types[variable.ty].inner {
|
||||
crate::TypeInner::RayQuery { .. } => None,
|
||||
crate::TypeInner::RayQuery => None,
|
||||
_ => {
|
||||
let type_id = context.get_type_id(LookupType::Handle(variable.ty));
|
||||
Some(context.writer.write_constant_null(type_id))
|
||||
@@ -1162,10 +1131,10 @@ impl Writer {
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
crate::TypeInner::AccelerationStructure { .. } => {
|
||||
crate::TypeInner::AccelerationStructure => {
|
||||
self.require_any("Acceleration Structure", &[spirv::Capability::RayQueryKHR])?;
|
||||
}
|
||||
crate::TypeInner::RayQuery { .. } => {
|
||||
crate::TypeInner::RayQuery => {
|
||||
self.require_any("Ray Query", &[spirv::Capability::RayQueryKHR])?;
|
||||
}
|
||||
crate::TypeInner::Atomic(crate::Scalar { width: 8, kind: _ }) => {
|
||||
@@ -1348,8 +1317,8 @@ impl Writer {
|
||||
| crate::TypeInner::ValuePointer { .. }
|
||||
| crate::TypeInner::Image { .. }
|
||||
| crate::TypeInner::Sampler { .. }
|
||||
| crate::TypeInner::AccelerationStructure { .. }
|
||||
| crate::TypeInner::RayQuery { .. } => unreachable!(),
|
||||
| crate::TypeInner::AccelerationStructure
|
||||
| crate::TypeInner::RayQuery => unreachable!(),
|
||||
};
|
||||
|
||||
instruction.to_words(&mut self.logical_layout.declarations);
|
||||
@@ -1602,10 +1571,6 @@ impl Writer {
|
||||
spirv::MemorySemantics::WORKGROUP_MEMORY,
|
||||
flags.contains(crate::Barrier::WORK_GROUP),
|
||||
);
|
||||
semantics.set(
|
||||
spirv::MemorySemantics::IMAGE_MEMORY,
|
||||
flags.contains(crate::Barrier::TEXTURE),
|
||||
);
|
||||
let exec_scope_id = if flags.contains(crate::Barrier::SUB_GROUP) {
|
||||
self.get_index_constant(spirv::Scope::Subgroup as u32)
|
||||
} else {
|
||||
@@ -2223,13 +2188,9 @@ impl Writer {
|
||||
.any(|arg| has_view_index_check(ir_module, arg.binding.as_ref(), arg.ty));
|
||||
let mut has_ray_query = ir_module.special_types.ray_desc.is_some()
|
||||
| ir_module.special_types.ray_intersection.is_some();
|
||||
let has_vertex_return = ir_module.special_types.ray_vertex_return.is_some();
|
||||
|
||||
for (_, &crate::Type { ref inner, .. }) in ir_module.types.iter() {
|
||||
// spirv does not know whether these have vertex return - that is done by us
|
||||
if let &crate::TypeInner::AccelerationStructure { .. }
|
||||
| &crate::TypeInner::RayQuery { .. } = inner
|
||||
{
|
||||
if let &crate::TypeInner::AccelerationStructure | &crate::TypeInner::RayQuery = inner {
|
||||
has_ray_query = true
|
||||
}
|
||||
}
|
||||
@@ -2247,10 +2208,6 @@ impl Writer {
|
||||
Instruction::extension("SPV_KHR_ray_query")
|
||||
.to_words(&mut self.logical_layout.extensions)
|
||||
}
|
||||
if has_vertex_return {
|
||||
Instruction::extension("SPV_KHR_ray_tracing_position_fetch")
|
||||
.to_words(&mut self.logical_layout.extensions);
|
||||
}
|
||||
Instruction::type_void(self.void_type).to_words(&mut self.logical_layout.declarations);
|
||||
Instruction::ext_inst_import(self.gl450_ext_inst_id, "GLSL.std.450")
|
||||
.to_words(&mut self.logical_layout.ext_inst_imports);
|
||||
|
||||
43
third_party/rust/naga/src/back/wgsl/mod.rs
vendored
43
third_party/rust/naga/src/back/wgsl/mod.rs
vendored
@@ -7,59 +7,22 @@ Backend for [WGSL][wgsl] (WebGPU Shading Language).
|
||||
mod polyfill;
|
||||
mod writer;
|
||||
|
||||
use alloc::format;
|
||||
use alloc::string::String;
|
||||
|
||||
use thiserror::Error;
|
||||
|
||||
pub use writer::{Writer, WriterFlags};
|
||||
|
||||
use crate::common::wgsl;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error(transparent)]
|
||||
FmtError(#[from] core::fmt::Error),
|
||||
FmtError(#[from] std::fmt::Error),
|
||||
#[error("{0}")]
|
||||
Custom(String),
|
||||
#[error("{0}")]
|
||||
Unimplemented(String), // TODO: Error used only during development
|
||||
#[error("Unsupported math function: {0:?}")]
|
||||
UnsupportedMathFunction(crate::MathFunction),
|
||||
#[error("Unsupported relational function: {0:?}")]
|
||||
UnsupportedRelationalFunction(crate::RelationalFunction),
|
||||
#[error("Unsupported {kind}: {value}")]
|
||||
Unsupported {
|
||||
/// What kind of unsupported thing this is: interpolation, builtin, etc.
|
||||
kind: &'static str,
|
||||
|
||||
/// The debug form of the Naga IR value that this backend can't express.
|
||||
value: String,
|
||||
},
|
||||
}
|
||||
|
||||
impl Error {
|
||||
/// Produce an [`Unsupported`] error for `value`.
|
||||
///
|
||||
/// [`Unsupported`]: Error::Unsupported
|
||||
fn unsupported<T: core::fmt::Debug>(kind: &'static str, value: T) -> Error {
|
||||
Error::Unsupported {
|
||||
kind,
|
||||
value: format!("{value:?}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
trait ToWgslIfImplemented {
|
||||
fn to_wgsl_if_implemented(self) -> Result<&'static str, Error>;
|
||||
}
|
||||
|
||||
impl<T> ToWgslIfImplemented for T
|
||||
where
|
||||
T: wgsl::TryToWgsl + core::fmt::Debug + Copy,
|
||||
{
|
||||
fn to_wgsl_if_implemented(self) -> Result<&'static str, Error> {
|
||||
self.try_to_wgsl()
|
||||
.ok_or_else(|| Error::unsupported(T::DESCRIPTION, self))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn write_string(
|
||||
|
||||
420
third_party/rust/naga/src/back/wgsl/writer.rs
vendored
420
third_party/rust/naga/src/back/wgsl/writer.rs
vendored
@@ -1,23 +1,11 @@
|
||||
use alloc::{
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
use core::fmt::Write;
|
||||
|
||||
use super::Error;
|
||||
use super::ToWgslIfImplemented as _;
|
||||
use crate::back::wgsl::polyfill::InversePolyfill;
|
||||
use crate::{
|
||||
back::{self, Baked},
|
||||
common::{
|
||||
self,
|
||||
wgsl::{address_space_str, ToWgsl, TryToWgsl},
|
||||
},
|
||||
proc::{self, ExpressionKindTracker, NameKey},
|
||||
valid, Handle, Module, ShaderStage, TypeInner,
|
||||
};
|
||||
use std::fmt::Write;
|
||||
|
||||
/// Shorthand result used internally by the backend
|
||||
type BackendResult = Result<(), Error>;
|
||||
@@ -80,6 +68,7 @@ pub struct Writer<W> {
|
||||
names: crate::FastHashMap<NameKey, String>,
|
||||
namer: proc::Namer,
|
||||
named_expressions: crate::NamedExpressions,
|
||||
ep_results: Vec<(ShaderStage, Handle<crate::Type>)>,
|
||||
required_polyfills: crate::FastIndexSet<InversePolyfill>,
|
||||
}
|
||||
|
||||
@@ -91,6 +80,7 @@ impl<W: Write> Writer<W> {
|
||||
names: crate::FastHashMap::default(),
|
||||
namer: proc::Namer::default(),
|
||||
named_expressions: crate::NamedExpressions::default(),
|
||||
ep_results: vec![],
|
||||
required_polyfills: crate::FastIndexSet::default(),
|
||||
}
|
||||
}
|
||||
@@ -107,6 +97,7 @@ impl<W: Write> Writer<W> {
|
||||
&mut self.names,
|
||||
);
|
||||
self.named_expressions.clear();
|
||||
self.ep_results.clear();
|
||||
self.required_polyfills.clear();
|
||||
}
|
||||
|
||||
@@ -127,6 +118,13 @@ impl<W: Write> Writer<W> {
|
||||
|
||||
self.reset(module);
|
||||
|
||||
// Save all ep result types
|
||||
for ep in &module.entry_points {
|
||||
if let Some(ref result) = ep.function.result {
|
||||
self.ep_results.push((ep.stage, result.ty));
|
||||
}
|
||||
}
|
||||
|
||||
// Write all structs
|
||||
for (handle, ty) in module.types.iter() {
|
||||
if let TypeInner::Struct { ref members, .. } = ty.inner {
|
||||
@@ -219,6 +217,29 @@ impl<W: Write> Writer<W> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Helper method used to write struct name
|
||||
///
|
||||
/// # Notes
|
||||
/// Adds no trailing or leading whitespace
|
||||
fn write_struct_name(&mut self, module: &Module, handle: Handle<crate::Type>) -> BackendResult {
|
||||
if module.types[handle].name.is_none() {
|
||||
if let Some(&(stage, _)) = self.ep_results.iter().find(|&&(_, ty)| ty == handle) {
|
||||
let name = match stage {
|
||||
ShaderStage::Compute => "ComputeOutput",
|
||||
ShaderStage::Fragment => "FragmentOutput",
|
||||
ShaderStage::Vertex => "VertexOutput",
|
||||
};
|
||||
|
||||
write!(self.out, "{name}")?;
|
||||
return Ok(());
|
||||
}
|
||||
}
|
||||
|
||||
write!(self.out, "{}", self.names[&NameKey::Type(handle)])?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Helper method used to write
|
||||
/// [functions](https://gpuweb.github.io/gpuweb/wgsl/#functions)
|
||||
///
|
||||
@@ -321,7 +342,7 @@ impl<W: Write> Writer<W> {
|
||||
Attribute::Location(id) => write!(self.out, "@location({id}) ")?,
|
||||
Attribute::SecondBlendSource => write!(self.out, "@second_blend_source ")?,
|
||||
Attribute::BuiltIn(builtin_attrib) => {
|
||||
let builtin = builtin_attrib.to_wgsl_if_implemented()?;
|
||||
let builtin = builtin_str(builtin_attrib)?;
|
||||
write!(self.out, "@builtin({builtin}) ")?;
|
||||
}
|
||||
Attribute::Stage(shader_stage) => {
|
||||
@@ -344,18 +365,24 @@ impl<W: Write> Writer<W> {
|
||||
Attribute::Invariant => write!(self.out, "@invariant ")?,
|
||||
Attribute::Interpolate(interpolation, sampling) => {
|
||||
if sampling.is_some() && sampling != Some(crate::Sampling::Center) {
|
||||
let interpolation = interpolation
|
||||
.unwrap_or(crate::Interpolation::Perspective)
|
||||
.to_wgsl();
|
||||
let sampling = sampling.unwrap_or(crate::Sampling::Center).to_wgsl();
|
||||
write!(self.out, "@interpolate({interpolation}, {sampling}) ")?;
|
||||
write!(
|
||||
self.out,
|
||||
"@interpolate({}, {}) ",
|
||||
interpolation_str(
|
||||
interpolation.unwrap_or(crate::Interpolation::Perspective)
|
||||
),
|
||||
sampling_str(sampling.unwrap_or(crate::Sampling::Center))
|
||||
)?;
|
||||
} else if interpolation.is_some()
|
||||
&& interpolation != Some(crate::Interpolation::Perspective)
|
||||
{
|
||||
let interpolation = interpolation
|
||||
.unwrap_or(crate::Interpolation::Perspective)
|
||||
.to_wgsl();
|
||||
write!(self.out, "@interpolate({interpolation}) ")?;
|
||||
write!(
|
||||
self.out,
|
||||
"@interpolate({}) ",
|
||||
interpolation_str(
|
||||
interpolation.unwrap_or(crate::Interpolation::Perspective)
|
||||
)
|
||||
)?;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -373,7 +400,8 @@ impl<W: Write> Writer<W> {
|
||||
handle: Handle<crate::Type>,
|
||||
members: &[crate::StructMember],
|
||||
) -> BackendResult {
|
||||
write!(self.out, "struct {}", self.names[&NameKey::Type(handle)])?;
|
||||
write!(self.out, "struct ")?;
|
||||
self.write_struct_name(module, handle)?;
|
||||
write!(self.out, " {{")?;
|
||||
writeln!(self.out)?;
|
||||
for (index, member) in members.iter().enumerate() {
|
||||
@@ -404,9 +432,7 @@ impl<W: Write> Writer<W> {
|
||||
fn write_type(&mut self, module: &Module, ty: Handle<crate::Type>) -> BackendResult {
|
||||
let inner = &module.types[ty].inner;
|
||||
match *inner {
|
||||
TypeInner::Struct { .. } => {
|
||||
write!(self.out, "{}", self.names[&NameKey::Type(ty)])?;
|
||||
}
|
||||
TypeInner::Struct { .. } => self.write_struct_name(module, ty)?,
|
||||
ref other => self.write_value_type(module, other)?,
|
||||
}
|
||||
|
||||
@@ -422,8 +448,8 @@ impl<W: Write> Writer<W> {
|
||||
TypeInner::Vector { size, scalar } => write!(
|
||||
self.out,
|
||||
"vec{}<{}>",
|
||||
common::vector_size_str(size),
|
||||
scalar.to_wgsl_if_implemented()?,
|
||||
back::vector_size_str(size),
|
||||
scalar_kind_str(scalar),
|
||||
)?,
|
||||
TypeInner::Sampler { comparison: false } => {
|
||||
write!(self.out, "sampler")?;
|
||||
@@ -439,13 +465,13 @@ impl<W: Write> Writer<W> {
|
||||
// More about texture types: https://gpuweb.github.io/gpuweb/wgsl/#sampled-texture-type
|
||||
use crate::ImageClass as Ic;
|
||||
|
||||
let dim_str = dim.to_wgsl();
|
||||
let dim_str = image_dimension_str(dim);
|
||||
let arrayed_str = if arrayed { "_array" } else { "" };
|
||||
let (class_str, multisampled_str, format_str, storage_str) = match class {
|
||||
Ic::Sampled { kind, multi } => (
|
||||
"",
|
||||
if multi { "multisampled_" } else { "" },
|
||||
crate::Scalar { kind, width: 4 }.to_wgsl_if_implemented()?,
|
||||
scalar_kind_str(crate::Scalar { kind, width: 4 }),
|
||||
"",
|
||||
),
|
||||
Ic::Depth { multi } => {
|
||||
@@ -454,7 +480,7 @@ impl<W: Write> Writer<W> {
|
||||
Ic::Storage { format, access } => (
|
||||
"storage_",
|
||||
"",
|
||||
format.to_wgsl(),
|
||||
storage_format_str(format),
|
||||
if access.contains(crate::StorageAccess::ATOMIC) {
|
||||
",atomic"
|
||||
} else if access
|
||||
@@ -478,10 +504,10 @@ impl<W: Write> Writer<W> {
|
||||
}
|
||||
}
|
||||
TypeInner::Scalar(scalar) => {
|
||||
write!(self.out, "{}", scalar.to_wgsl_if_implemented()?)?;
|
||||
write!(self.out, "{}", scalar_kind_str(scalar))?;
|
||||
}
|
||||
TypeInner::Atomic(scalar) => {
|
||||
write!(self.out, "atomic<{}>", scalar.to_wgsl_if_implemented()?)?;
|
||||
write!(self.out, "atomic<{}>", scalar_kind_str(scalar))?;
|
||||
}
|
||||
TypeInner::Array {
|
||||
base,
|
||||
@@ -531,9 +557,9 @@ impl<W: Write> Writer<W> {
|
||||
write!(
|
||||
self.out,
|
||||
"mat{}x{}<{}>",
|
||||
common::vector_size_str(columns),
|
||||
common::vector_size_str(rows),
|
||||
scalar.to_wgsl_if_implemented()?
|
||||
back::vector_size_str(columns),
|
||||
back::vector_size_str(rows),
|
||||
scalar_kind_str(scalar)
|
||||
)?;
|
||||
}
|
||||
TypeInner::Pointer { base, space } => {
|
||||
@@ -559,12 +585,7 @@ impl<W: Write> Writer<W> {
|
||||
} => {
|
||||
let (address, maybe_access) = address_space_str(space);
|
||||
if let Some(space) = address {
|
||||
write!(
|
||||
self.out,
|
||||
"ptr<{}, {}",
|
||||
space,
|
||||
scalar.to_wgsl_if_implemented()?
|
||||
)?;
|
||||
write!(self.out, "ptr<{}, {}", space, scalar_kind_str(scalar))?;
|
||||
if let Some(access) = maybe_access {
|
||||
write!(self.out, ", {access}")?;
|
||||
}
|
||||
@@ -586,8 +607,8 @@ impl<W: Write> Writer<W> {
|
||||
self.out,
|
||||
"ptr<{}, vec{}<{}>",
|
||||
space,
|
||||
common::vector_size_str(size),
|
||||
scalar.to_wgsl_if_implemented()?
|
||||
back::vector_size_str(size),
|
||||
scalar_kind_str(scalar)
|
||||
)?;
|
||||
if let Some(access) = maybe_access {
|
||||
write!(self.out, ", {access}")?;
|
||||
@@ -600,10 +621,7 @@ impl<W: Write> Writer<W> {
|
||||
}
|
||||
write!(self.out, ">")?;
|
||||
}
|
||||
TypeInner::AccelerationStructure { vertex_return } => {
|
||||
let caps = if vertex_return { "<vertex_return>" } else { "" };
|
||||
write!(self.out, "acceleration_structure{}", caps)?
|
||||
}
|
||||
TypeInner::AccelerationStructure => write!(self.out, "acceleration_structure")?,
|
||||
_ => {
|
||||
return Err(Error::Unimplemented(format!("write_value_type {inner:?}")));
|
||||
}
|
||||
@@ -955,10 +973,6 @@ impl<W: Write> Writer<W> {
|
||||
if barrier.contains(crate::Barrier::SUB_GROUP) {
|
||||
writeln!(self.out, "{level}subgroupBarrier();")?;
|
||||
}
|
||||
|
||||
if barrier.contains(crate::Barrier::TEXTURE) {
|
||||
writeln!(self.out, "{level}textureBarrier();")?;
|
||||
}
|
||||
}
|
||||
Statement::RayQuery { .. } => unreachable!(),
|
||||
Statement::SubgroupBallot { result, predicate } => {
|
||||
@@ -1303,7 +1317,7 @@ impl<W: Write> Writer<W> {
|
||||
write!(self.out, ")")?
|
||||
}
|
||||
Expression::Splat { size, value } => {
|
||||
let size = common::vector_size_str(size);
|
||||
let size = back::vector_size_str(size);
|
||||
write!(self.out, "vec{size}(")?;
|
||||
write_expression(self, value)?;
|
||||
write!(self.out, ")")?;
|
||||
@@ -1595,12 +1609,12 @@ impl<W: Write> Writer<W> {
|
||||
kind,
|
||||
width: convert.unwrap_or(scalar.width),
|
||||
};
|
||||
let scalar_kind_str = scalar.to_wgsl_if_implemented()?;
|
||||
let scalar_kind_str = scalar_kind_str(scalar);
|
||||
write!(
|
||||
self.out,
|
||||
"mat{}x{}<{}>",
|
||||
common::vector_size_str(columns),
|
||||
common::vector_size_str(rows),
|
||||
back::vector_size_str(columns),
|
||||
back::vector_size_str(rows),
|
||||
scalar_kind_str
|
||||
)?;
|
||||
}
|
||||
@@ -1612,8 +1626,8 @@ impl<W: Write> Writer<W> {
|
||||
kind,
|
||||
width: convert.unwrap_or(width),
|
||||
};
|
||||
let vector_size_str = common::vector_size_str(size);
|
||||
let scalar_kind_str = scalar.to_wgsl_if_implemented()?;
|
||||
let vector_size_str = back::vector_size_str(size);
|
||||
let scalar_kind_str = scalar_kind_str(scalar);
|
||||
if convert.is_some() {
|
||||
write!(self.out, "vec{vector_size_str}<{scalar_kind_str}>")?;
|
||||
} else {
|
||||
@@ -1625,7 +1639,7 @@ impl<W: Write> Writer<W> {
|
||||
kind,
|
||||
width: convert.unwrap_or(width),
|
||||
};
|
||||
let scalar_kind_str = scalar.to_wgsl_if_implemented()?;
|
||||
let scalar_kind_str = scalar_kind_str(scalar);
|
||||
if convert.is_some() {
|
||||
write!(self.out, "{scalar_kind_str}")?
|
||||
} else {
|
||||
@@ -1683,19 +1697,98 @@ impl<W: Write> Writer<W> {
|
||||
InversePolyfill(InversePolyfill),
|
||||
}
|
||||
|
||||
let function = match fun.try_to_wgsl() {
|
||||
Some(name) => Function::Regular(name),
|
||||
None => match fun {
|
||||
Mf::Inverse => {
|
||||
let ty = func_ctx.resolve_type(arg, &module.types);
|
||||
let Some(overload) = InversePolyfill::find_overload(ty) else {
|
||||
return Err(Error::unsupported("math function", fun));
|
||||
};
|
||||
let function = match fun {
|
||||
Mf::Abs => Function::Regular("abs"),
|
||||
Mf::Min => Function::Regular("min"),
|
||||
Mf::Max => Function::Regular("max"),
|
||||
Mf::Clamp => Function::Regular("clamp"),
|
||||
Mf::Saturate => Function::Regular("saturate"),
|
||||
// trigonometry
|
||||
Mf::Cos => Function::Regular("cos"),
|
||||
Mf::Cosh => Function::Regular("cosh"),
|
||||
Mf::Sin => Function::Regular("sin"),
|
||||
Mf::Sinh => Function::Regular("sinh"),
|
||||
Mf::Tan => Function::Regular("tan"),
|
||||
Mf::Tanh => Function::Regular("tanh"),
|
||||
Mf::Acos => Function::Regular("acos"),
|
||||
Mf::Asin => Function::Regular("asin"),
|
||||
Mf::Atan => Function::Regular("atan"),
|
||||
Mf::Atan2 => Function::Regular("atan2"),
|
||||
Mf::Asinh => Function::Regular("asinh"),
|
||||
Mf::Acosh => Function::Regular("acosh"),
|
||||
Mf::Atanh => Function::Regular("atanh"),
|
||||
Mf::Radians => Function::Regular("radians"),
|
||||
Mf::Degrees => Function::Regular("degrees"),
|
||||
// decomposition
|
||||
Mf::Ceil => Function::Regular("ceil"),
|
||||
Mf::Floor => Function::Regular("floor"),
|
||||
Mf::Round => Function::Regular("round"),
|
||||
Mf::Fract => Function::Regular("fract"),
|
||||
Mf::Trunc => Function::Regular("trunc"),
|
||||
Mf::Modf => Function::Regular("modf"),
|
||||
Mf::Frexp => Function::Regular("frexp"),
|
||||
Mf::Ldexp => Function::Regular("ldexp"),
|
||||
// exponent
|
||||
Mf::Exp => Function::Regular("exp"),
|
||||
Mf::Exp2 => Function::Regular("exp2"),
|
||||
Mf::Log => Function::Regular("log"),
|
||||
Mf::Log2 => Function::Regular("log2"),
|
||||
Mf::Pow => Function::Regular("pow"),
|
||||
// geometry
|
||||
Mf::Dot => Function::Regular("dot"),
|
||||
Mf::Cross => Function::Regular("cross"),
|
||||
Mf::Distance => Function::Regular("distance"),
|
||||
Mf::Length => Function::Regular("length"),
|
||||
Mf::Normalize => Function::Regular("normalize"),
|
||||
Mf::FaceForward => Function::Regular("faceForward"),
|
||||
Mf::Reflect => Function::Regular("reflect"),
|
||||
Mf::Refract => Function::Regular("refract"),
|
||||
// computational
|
||||
Mf::Sign => Function::Regular("sign"),
|
||||
Mf::Fma => Function::Regular("fma"),
|
||||
Mf::Mix => Function::Regular("mix"),
|
||||
Mf::Step => Function::Regular("step"),
|
||||
Mf::SmoothStep => Function::Regular("smoothstep"),
|
||||
Mf::Sqrt => Function::Regular("sqrt"),
|
||||
Mf::InverseSqrt => Function::Regular("inverseSqrt"),
|
||||
Mf::Transpose => Function::Regular("transpose"),
|
||||
Mf::Determinant => Function::Regular("determinant"),
|
||||
Mf::QuantizeToF16 => Function::Regular("quantizeToF16"),
|
||||
// bits
|
||||
Mf::CountTrailingZeros => Function::Regular("countTrailingZeros"),
|
||||
Mf::CountLeadingZeros => Function::Regular("countLeadingZeros"),
|
||||
Mf::CountOneBits => Function::Regular("countOneBits"),
|
||||
Mf::ReverseBits => Function::Regular("reverseBits"),
|
||||
Mf::ExtractBits => Function::Regular("extractBits"),
|
||||
Mf::InsertBits => Function::Regular("insertBits"),
|
||||
Mf::FirstTrailingBit => Function::Regular("firstTrailingBit"),
|
||||
Mf::FirstLeadingBit => Function::Regular("firstLeadingBit"),
|
||||
// data packing
|
||||
Mf::Pack4x8snorm => Function::Regular("pack4x8snorm"),
|
||||
Mf::Pack4x8unorm => Function::Regular("pack4x8unorm"),
|
||||
Mf::Pack2x16snorm => Function::Regular("pack2x16snorm"),
|
||||
Mf::Pack2x16unorm => Function::Regular("pack2x16unorm"),
|
||||
Mf::Pack2x16float => Function::Regular("pack2x16float"),
|
||||
Mf::Pack4xI8 => Function::Regular("pack4xI8"),
|
||||
Mf::Pack4xU8 => Function::Regular("pack4xU8"),
|
||||
// data unpacking
|
||||
Mf::Unpack4x8snorm => Function::Regular("unpack4x8snorm"),
|
||||
Mf::Unpack4x8unorm => Function::Regular("unpack4x8unorm"),
|
||||
Mf::Unpack2x16snorm => Function::Regular("unpack2x16snorm"),
|
||||
Mf::Unpack2x16unorm => Function::Regular("unpack2x16unorm"),
|
||||
Mf::Unpack2x16float => Function::Regular("unpack2x16float"),
|
||||
Mf::Unpack4xI8 => Function::Regular("unpack4xI8"),
|
||||
Mf::Unpack4xU8 => Function::Regular("unpack4xU8"),
|
||||
Mf::Inverse => {
|
||||
let typ = func_ctx.resolve_type(arg, &module.types);
|
||||
|
||||
Function::InversePolyfill(overload)
|
||||
}
|
||||
_ => return Err(Error::unsupported("math function", fun)),
|
||||
},
|
||||
let Some(overload) = InversePolyfill::find_overload(typ) else {
|
||||
return Err(Error::UnsupportedMathFunction(fun));
|
||||
};
|
||||
|
||||
Function::InversePolyfill(overload)
|
||||
}
|
||||
Mf::Outer => return Err(Error::UnsupportedMathFunction(fun)),
|
||||
};
|
||||
|
||||
match function {
|
||||
@@ -1786,8 +1879,7 @@ impl<W: Write> Writer<W> {
|
||||
write!(self.out, ")")?
|
||||
}
|
||||
// Not supported yet
|
||||
Expression::RayQueryGetIntersection { .. }
|
||||
| Expression::RayQueryVertexPositions { .. } => unreachable!(),
|
||||
Expression::RayQueryGetIntersection { .. } => unreachable!(),
|
||||
// Nothing to do here, since call expression already cached
|
||||
Expression::CallResult(_)
|
||||
| Expression::AtomicResult { .. }
|
||||
@@ -1877,6 +1969,186 @@ impl<W: Write> Writer<W> {
|
||||
}
|
||||
}
|
||||
|
||||
fn builtin_str(built_in: crate::BuiltIn) -> Result<&'static str, Error> {
|
||||
use crate::BuiltIn as Bi;
|
||||
|
||||
Ok(match built_in {
|
||||
Bi::VertexIndex => "vertex_index",
|
||||
Bi::InstanceIndex => "instance_index",
|
||||
Bi::Position { .. } => "position",
|
||||
Bi::FrontFacing => "front_facing",
|
||||
Bi::FragDepth => "frag_depth",
|
||||
Bi::LocalInvocationId => "local_invocation_id",
|
||||
Bi::LocalInvocationIndex => "local_invocation_index",
|
||||
Bi::GlobalInvocationId => "global_invocation_id",
|
||||
Bi::WorkGroupId => "workgroup_id",
|
||||
Bi::NumWorkGroups => "num_workgroups",
|
||||
Bi::SampleIndex => "sample_index",
|
||||
Bi::SampleMask => "sample_mask",
|
||||
Bi::PrimitiveIndex => "primitive_index",
|
||||
Bi::ViewIndex => "view_index",
|
||||
Bi::NumSubgroups => "num_subgroups",
|
||||
Bi::SubgroupId => "subgroup_id",
|
||||
Bi::SubgroupSize => "subgroup_size",
|
||||
Bi::SubgroupInvocationId => "subgroup_invocation_id",
|
||||
Bi::BaseInstance
|
||||
| Bi::BaseVertex
|
||||
| Bi::ClipDistance
|
||||
| Bi::CullDistance
|
||||
| Bi::PointSize
|
||||
| Bi::PointCoord
|
||||
| Bi::WorkGroupSize
|
||||
| Bi::DrawID => return Err(Error::Custom(format!("Unsupported builtin {built_in:?}"))),
|
||||
})
|
||||
}
|
||||
|
||||
const fn image_dimension_str(dim: crate::ImageDimension) -> &'static str {
|
||||
use crate::ImageDimension as IDim;
|
||||
|
||||
match dim {
|
||||
IDim::D1 => "1d",
|
||||
IDim::D2 => "2d",
|
||||
IDim::D3 => "3d",
|
||||
IDim::Cube => "cube",
|
||||
}
|
||||
}
|
||||
|
||||
const fn scalar_kind_str(scalar: crate::Scalar) -> &'static str {
|
||||
use crate::Scalar;
|
||||
use crate::ScalarKind as Sk;
|
||||
|
||||
match scalar {
|
||||
Scalar {
|
||||
kind: Sk::Float,
|
||||
width: 8,
|
||||
} => "f64",
|
||||
Scalar {
|
||||
kind: Sk::Float,
|
||||
width: 4,
|
||||
} => "f32",
|
||||
Scalar {
|
||||
kind: Sk::Sint,
|
||||
width: 4,
|
||||
} => "i32",
|
||||
Scalar {
|
||||
kind: Sk::Uint,
|
||||
width: 4,
|
||||
} => "u32",
|
||||
Scalar {
|
||||
kind: Sk::Sint,
|
||||
width: 8,
|
||||
} => "i64",
|
||||
Scalar {
|
||||
kind: Sk::Uint,
|
||||
width: 8,
|
||||
} => "u64",
|
||||
Scalar {
|
||||
kind: Sk::Bool,
|
||||
width: 1,
|
||||
} => "bool",
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
const fn storage_format_str(format: crate::StorageFormat) -> &'static str {
|
||||
use crate::StorageFormat as Sf;
|
||||
|
||||
match format {
|
||||
Sf::R8Unorm => "r8unorm",
|
||||
Sf::R8Snorm => "r8snorm",
|
||||
Sf::R8Uint => "r8uint",
|
||||
Sf::R8Sint => "r8sint",
|
||||
Sf::R16Uint => "r16uint",
|
||||
Sf::R16Sint => "r16sint",
|
||||
Sf::R16Float => "r16float",
|
||||
Sf::Rg8Unorm => "rg8unorm",
|
||||
Sf::Rg8Snorm => "rg8snorm",
|
||||
Sf::Rg8Uint => "rg8uint",
|
||||
Sf::Rg8Sint => "rg8sint",
|
||||
Sf::R32Uint => "r32uint",
|
||||
Sf::R32Sint => "r32sint",
|
||||
Sf::R32Float => "r32float",
|
||||
Sf::Rg16Uint => "rg16uint",
|
||||
Sf::Rg16Sint => "rg16sint",
|
||||
Sf::Rg16Float => "rg16float",
|
||||
Sf::Rgba8Unorm => "rgba8unorm",
|
||||
Sf::Rgba8Snorm => "rgba8snorm",
|
||||
Sf::Rgba8Uint => "rgba8uint",
|
||||
Sf::Rgba8Sint => "rgba8sint",
|
||||
Sf::Bgra8Unorm => "bgra8unorm",
|
||||
Sf::Rgb10a2Uint => "rgb10a2uint",
|
||||
Sf::Rgb10a2Unorm => "rgb10a2unorm",
|
||||
Sf::Rg11b10Ufloat => "rg11b10float",
|
||||
Sf::R64Uint => "r64uint",
|
||||
Sf::Rg32Uint => "rg32uint",
|
||||
Sf::Rg32Sint => "rg32sint",
|
||||
Sf::Rg32Float => "rg32float",
|
||||
Sf::Rgba16Uint => "rgba16uint",
|
||||
Sf::Rgba16Sint => "rgba16sint",
|
||||
Sf::Rgba16Float => "rgba16float",
|
||||
Sf::Rgba32Uint => "rgba32uint",
|
||||
Sf::Rgba32Sint => "rgba32sint",
|
||||
Sf::Rgba32Float => "rgba32float",
|
||||
Sf::R16Unorm => "r16unorm",
|
||||
Sf::R16Snorm => "r16snorm",
|
||||
Sf::Rg16Unorm => "rg16unorm",
|
||||
Sf::Rg16Snorm => "rg16snorm",
|
||||
Sf::Rgba16Unorm => "rgba16unorm",
|
||||
Sf::Rgba16Snorm => "rgba16snorm",
|
||||
}
|
||||
}
|
||||
|
||||
/// Helper function that returns the string corresponding to the WGSL interpolation qualifier
|
||||
const fn interpolation_str(interpolation: crate::Interpolation) -> &'static str {
|
||||
use crate::Interpolation as I;
|
||||
|
||||
match interpolation {
|
||||
I::Perspective => "perspective",
|
||||
I::Linear => "linear",
|
||||
I::Flat => "flat",
|
||||
}
|
||||
}
|
||||
|
||||
/// Return the WGSL auxiliary qualifier for the given sampling value.
|
||||
const fn sampling_str(sampling: crate::Sampling) -> &'static str {
|
||||
use crate::Sampling as S;
|
||||
|
||||
match sampling {
|
||||
S::Center => "",
|
||||
S::Centroid => "centroid",
|
||||
S::Sample => "sample",
|
||||
S::First => "first",
|
||||
S::Either => "either",
|
||||
}
|
||||
}
|
||||
|
||||
const fn address_space_str(
|
||||
space: crate::AddressSpace,
|
||||
) -> (Option<&'static str>, Option<&'static str>) {
|
||||
use crate::AddressSpace as As;
|
||||
|
||||
(
|
||||
Some(match space {
|
||||
As::Private => "private",
|
||||
As::Uniform => "uniform",
|
||||
As::Storage { access } => {
|
||||
if access.contains(crate::StorageAccess::ATOMIC) {
|
||||
return (Some("storage"), Some("atomic"));
|
||||
} else if access.contains(crate::StorageAccess::STORE) {
|
||||
return (Some("storage"), Some("read_write"));
|
||||
} else {
|
||||
"storage"
|
||||
}
|
||||
}
|
||||
As::PushConstant => "push_constant",
|
||||
As::WorkGroup => "workgroup",
|
||||
As::Handle => return (None, None),
|
||||
As::Function => "function",
|
||||
}),
|
||||
None,
|
||||
)
|
||||
}
|
||||
|
||||
fn map_binding_to_attribute(binding: &crate::Binding) -> Vec<Attribute> {
|
||||
match *binding {
|
||||
crate::Binding::BuiltIn(built_in) => {
|
||||
|
||||
10
third_party/rust/naga/src/block.rs
vendored
10
third_party/rust/naga/src/block.rs
vendored
@@ -1,7 +1,5 @@
|
||||
use alloc::vec::Vec;
|
||||
use core::ops::{Deref, DerefMut, RangeBounds};
|
||||
|
||||
use crate::{Span, Statement};
|
||||
use std::ops::{Deref, DerefMut, RangeBounds};
|
||||
|
||||
/// A code block is a vector of statements, with maybe a vector of spans.
|
||||
#[derive(Debug, Clone, Default)]
|
||||
@@ -23,7 +21,7 @@ impl Block {
|
||||
}
|
||||
|
||||
pub fn from_vec(body: Vec<Statement>) -> Self {
|
||||
let span_info = core::iter::repeat(Span::default())
|
||||
let span_info = std::iter::repeat(Span::default())
|
||||
.take(body.len())
|
||||
.collect();
|
||||
Self { body, span_info }
|
||||
@@ -107,9 +105,9 @@ impl DerefMut for Block {
|
||||
|
||||
impl<'a> IntoIterator for &'a Block {
|
||||
type Item = &'a Statement;
|
||||
type IntoIter = core::slice::Iter<'a, Statement>;
|
||||
type IntoIter = std::slice::Iter<'a, Statement>;
|
||||
|
||||
fn into_iter(self) -> core::slice::Iter<'a, Statement> {
|
||||
fn into_iter(self) -> std::slice::Iter<'a, Statement> {
|
||||
self.iter()
|
||||
}
|
||||
}
|
||||
|
||||
9
third_party/rust/naga/src/common/mod.rs
vendored
9
third_party/rust/naga/src/common/mod.rs
vendored
@@ -1,12 +1,3 @@
|
||||
//! Code common to the front and backends for specific languages.
|
||||
|
||||
pub mod wgsl;
|
||||
|
||||
/// 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 {
|
||||
crate::VectorSize::Bi => "2",
|
||||
crate::VectorSize::Tri => "3",
|
||||
crate::VectorSize::Quad => "4",
|
||||
}
|
||||
}
|
||||
|
||||
317
third_party/rust/naga/src/common/wgsl.rs
vendored
317
third_party/rust/naga/src/common/wgsl.rs
vendored
@@ -1,6 +1,6 @@
|
||||
//! Code shared between the WGSL front and back ends.
|
||||
|
||||
use core::fmt::{self, Display, Formatter};
|
||||
use std::fmt::{self, Display, Formatter};
|
||||
|
||||
use crate::diagnostic_filter::{
|
||||
FilterableTriggeringRule, Severity, StandardFilterableTriggeringRule,
|
||||
@@ -67,318 +67,3 @@ impl StandardFilterableTriggeringRule {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Types that can return the WGSL source representation of their
|
||||
/// values as a `'static` string.
|
||||
///
|
||||
/// This trait is specifically for types whose WGSL forms are simple
|
||||
/// enough that they can always be returned as a static string.
|
||||
///
|
||||
/// - If only some values have a WGSL representation, consider
|
||||
/// implementing [`TryToWgsl`] instead.
|
||||
///
|
||||
/// - If a type's WGSL form requires dynamic formatting, so that
|
||||
/// returning a `&'static str` isn't feasible, consider implementing
|
||||
/// [`std::fmt::Display`] on some wrapper type instead.
|
||||
pub trait ToWgsl: Sized {
|
||||
/// Return WGSL source code representation of `self`.
|
||||
fn to_wgsl(self) -> &'static str;
|
||||
}
|
||||
|
||||
/// Types that may be able to return the WGSL source representation
|
||||
/// for their values as a `'static' string.
|
||||
///
|
||||
/// This trait is specifically for types whose values are either
|
||||
/// simple enough that their WGSL form can be represented a static
|
||||
/// string, or aren't representable in WGSL at all.
|
||||
///
|
||||
/// - If all values in the type have `&'static str` representations in
|
||||
/// WGSL, consider implementing [`ToWgsl`] instead.
|
||||
///
|
||||
/// - If a type's WGSL form requires dynamic formatting, so that
|
||||
/// returning a `&'static str` isn't feasible, consider implementing
|
||||
/// [`std::fmt::Display`] on some wrapper type instead.
|
||||
pub trait TryToWgsl: Sized {
|
||||
/// Return the WGSL form of `self` as a `'static` string.
|
||||
///
|
||||
/// If `self` doesn't have a representation in WGSL (standard or
|
||||
/// as extended by Naga), then return `None`.
|
||||
fn try_to_wgsl(self) -> Option<&'static str>;
|
||||
|
||||
/// What kind of WGSL thing `Self` represents.
|
||||
const DESCRIPTION: &'static str;
|
||||
}
|
||||
|
||||
impl TryToWgsl for crate::MathFunction {
|
||||
const DESCRIPTION: &'static str = "math function";
|
||||
|
||||
fn try_to_wgsl(self) -> Option<&'static str> {
|
||||
use crate::MathFunction as Mf;
|
||||
|
||||
Some(match self {
|
||||
Mf::Abs => "abs",
|
||||
Mf::Min => "min",
|
||||
Mf::Max => "max",
|
||||
Mf::Clamp => "clamp",
|
||||
Mf::Saturate => "saturate",
|
||||
Mf::Cos => "cos",
|
||||
Mf::Cosh => "cosh",
|
||||
Mf::Sin => "sin",
|
||||
Mf::Sinh => "sinh",
|
||||
Mf::Tan => "tan",
|
||||
Mf::Tanh => "tanh",
|
||||
Mf::Acos => "acos",
|
||||
Mf::Asin => "asin",
|
||||
Mf::Atan => "atan",
|
||||
Mf::Atan2 => "atan2",
|
||||
Mf::Asinh => "asinh",
|
||||
Mf::Acosh => "acosh",
|
||||
Mf::Atanh => "atanh",
|
||||
Mf::Radians => "radians",
|
||||
Mf::Degrees => "degrees",
|
||||
Mf::Ceil => "ceil",
|
||||
Mf::Floor => "floor",
|
||||
Mf::Round => "round",
|
||||
Mf::Fract => "fract",
|
||||
Mf::Trunc => "trunc",
|
||||
Mf::Modf => "modf",
|
||||
Mf::Frexp => "frexp",
|
||||
Mf::Ldexp => "ldexp",
|
||||
Mf::Exp => "exp",
|
||||
Mf::Exp2 => "exp2",
|
||||
Mf::Log => "log",
|
||||
Mf::Log2 => "log2",
|
||||
Mf::Pow => "pow",
|
||||
Mf::Dot => "dot",
|
||||
Mf::Cross => "cross",
|
||||
Mf::Distance => "distance",
|
||||
Mf::Length => "length",
|
||||
Mf::Normalize => "normalize",
|
||||
Mf::FaceForward => "faceForward",
|
||||
Mf::Reflect => "reflect",
|
||||
Mf::Refract => "refract",
|
||||
Mf::Sign => "sign",
|
||||
Mf::Fma => "fma",
|
||||
Mf::Mix => "mix",
|
||||
Mf::Step => "step",
|
||||
Mf::SmoothStep => "smoothstep",
|
||||
Mf::Sqrt => "sqrt",
|
||||
Mf::InverseSqrt => "inverseSqrt",
|
||||
Mf::Transpose => "transpose",
|
||||
Mf::Determinant => "determinant",
|
||||
Mf::QuantizeToF16 => "quantizeToF16",
|
||||
Mf::CountTrailingZeros => "countTrailingZeros",
|
||||
Mf::CountLeadingZeros => "countLeadingZeros",
|
||||
Mf::CountOneBits => "countOneBits",
|
||||
Mf::ReverseBits => "reverseBits",
|
||||
Mf::ExtractBits => "extractBits",
|
||||
Mf::InsertBits => "insertBits",
|
||||
Mf::FirstTrailingBit => "firstTrailingBit",
|
||||
Mf::FirstLeadingBit => "firstLeadingBit",
|
||||
Mf::Pack4x8snorm => "pack4x8snorm",
|
||||
Mf::Pack4x8unorm => "pack4x8unorm",
|
||||
Mf::Pack2x16snorm => "pack2x16snorm",
|
||||
Mf::Pack2x16unorm => "pack2x16unorm",
|
||||
Mf::Pack2x16float => "pack2x16float",
|
||||
Mf::Pack4xI8 => "pack4xI8",
|
||||
Mf::Pack4xU8 => "pack4xU8",
|
||||
Mf::Unpack4x8snorm => "unpack4x8snorm",
|
||||
Mf::Unpack4x8unorm => "unpack4x8unorm",
|
||||
Mf::Unpack2x16snorm => "unpack2x16snorm",
|
||||
Mf::Unpack2x16unorm => "unpack2x16unorm",
|
||||
Mf::Unpack2x16float => "unpack2x16float",
|
||||
Mf::Unpack4xI8 => "unpack4xI8",
|
||||
Mf::Unpack4xU8 => "unpack4xU8",
|
||||
|
||||
// Non-standard math functions.
|
||||
Mf::Inverse | Mf::Outer => return None,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl TryToWgsl for crate::BuiltIn {
|
||||
const DESCRIPTION: &'static str = "builtin value";
|
||||
|
||||
fn try_to_wgsl(self) -> Option<&'static str> {
|
||||
use crate::BuiltIn as Bi;
|
||||
Some(match self {
|
||||
Bi::Position { .. } => "position",
|
||||
Bi::ViewIndex => "view_index",
|
||||
Bi::InstanceIndex => "instance_index",
|
||||
Bi::VertexIndex => "vertex_index",
|
||||
Bi::FragDepth => "frag_depth",
|
||||
Bi::FrontFacing => "front_facing",
|
||||
Bi::PrimitiveIndex => "primitive_index",
|
||||
Bi::SampleIndex => "sample_index",
|
||||
Bi::SampleMask => "sample_mask",
|
||||
Bi::GlobalInvocationId => "global_invocation_id",
|
||||
Bi::LocalInvocationId => "local_invocation_id",
|
||||
Bi::LocalInvocationIndex => "local_invocation_index",
|
||||
Bi::WorkGroupId => "workgroup_id",
|
||||
Bi::NumWorkGroups => "num_workgroups",
|
||||
Bi::NumSubgroups => "num_subgroups",
|
||||
Bi::SubgroupId => "subgroup_id",
|
||||
Bi::SubgroupSize => "subgroup_size",
|
||||
Bi::SubgroupInvocationId => "subgroup_invocation_id",
|
||||
|
||||
// Non-standard built-ins.
|
||||
Bi::BaseInstance
|
||||
| Bi::BaseVertex
|
||||
| Bi::ClipDistance
|
||||
| Bi::CullDistance
|
||||
| Bi::PointSize
|
||||
| Bi::DrawID
|
||||
| Bi::PointCoord
|
||||
| Bi::WorkGroupSize => return None,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWgsl for crate::Interpolation {
|
||||
fn to_wgsl(self) -> &'static str {
|
||||
match self {
|
||||
crate::Interpolation::Perspective => "perspective",
|
||||
crate::Interpolation::Linear => "linear",
|
||||
crate::Interpolation::Flat => "flat",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWgsl for crate::Sampling {
|
||||
fn to_wgsl(self) -> &'static str {
|
||||
match self {
|
||||
crate::Sampling::Center => "center",
|
||||
crate::Sampling::Centroid => "centroid",
|
||||
crate::Sampling::Sample => "sample",
|
||||
crate::Sampling::First => "first",
|
||||
crate::Sampling::Either => "either",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWgsl for crate::StorageFormat {
|
||||
fn to_wgsl(self) -> &'static str {
|
||||
use crate::StorageFormat as Sf;
|
||||
|
||||
match self {
|
||||
Sf::R8Unorm => "r8unorm",
|
||||
Sf::R8Snorm => "r8snorm",
|
||||
Sf::R8Uint => "r8uint",
|
||||
Sf::R8Sint => "r8sint",
|
||||
Sf::R16Uint => "r16uint",
|
||||
Sf::R16Sint => "r16sint",
|
||||
Sf::R16Float => "r16float",
|
||||
Sf::Rg8Unorm => "rg8unorm",
|
||||
Sf::Rg8Snorm => "rg8snorm",
|
||||
Sf::Rg8Uint => "rg8uint",
|
||||
Sf::Rg8Sint => "rg8sint",
|
||||
Sf::R32Uint => "r32uint",
|
||||
Sf::R32Sint => "r32sint",
|
||||
Sf::R32Float => "r32float",
|
||||
Sf::Rg16Uint => "rg16uint",
|
||||
Sf::Rg16Sint => "rg16sint",
|
||||
Sf::Rg16Float => "rg16float",
|
||||
Sf::Rgba8Unorm => "rgba8unorm",
|
||||
Sf::Rgba8Snorm => "rgba8snorm",
|
||||
Sf::Rgba8Uint => "rgba8uint",
|
||||
Sf::Rgba8Sint => "rgba8sint",
|
||||
Sf::Bgra8Unorm => "bgra8unorm",
|
||||
Sf::Rgb10a2Uint => "rgb10a2uint",
|
||||
Sf::Rgb10a2Unorm => "rgb10a2unorm",
|
||||
Sf::Rg11b10Ufloat => "rg11b10float",
|
||||
Sf::R64Uint => "r64uint",
|
||||
Sf::Rg32Uint => "rg32uint",
|
||||
Sf::Rg32Sint => "rg32sint",
|
||||
Sf::Rg32Float => "rg32float",
|
||||
Sf::Rgba16Uint => "rgba16uint",
|
||||
Sf::Rgba16Sint => "rgba16sint",
|
||||
Sf::Rgba16Float => "rgba16float",
|
||||
Sf::Rgba32Uint => "rgba32uint",
|
||||
Sf::Rgba32Sint => "rgba32sint",
|
||||
Sf::Rgba32Float => "rgba32float",
|
||||
Sf::R16Unorm => "r16unorm",
|
||||
Sf::R16Snorm => "r16snorm",
|
||||
Sf::Rg16Unorm => "rg16unorm",
|
||||
Sf::Rg16Snorm => "rg16snorm",
|
||||
Sf::Rgba16Unorm => "rgba16unorm",
|
||||
Sf::Rgba16Snorm => "rgba16snorm",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TryToWgsl for crate::Scalar {
|
||||
const DESCRIPTION: &'static str = "scalar type";
|
||||
|
||||
fn try_to_wgsl(self) -> Option<&'static str> {
|
||||
use crate::Scalar;
|
||||
|
||||
Some(match self {
|
||||
Scalar::F64 => "f64",
|
||||
Scalar::F32 => "f32",
|
||||
Scalar::I32 => "i32",
|
||||
Scalar::U32 => "u32",
|
||||
Scalar::I64 => "i64",
|
||||
Scalar::U64 => "u64",
|
||||
Scalar::BOOL => "bool",
|
||||
_ => return None,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWgsl for crate::ImageDimension {
|
||||
fn to_wgsl(self) -> &'static str {
|
||||
use crate::ImageDimension as IDim;
|
||||
|
||||
match self {
|
||||
IDim::D1 => "1d",
|
||||
IDim::D2 => "2d",
|
||||
IDim::D3 => "3d",
|
||||
IDim::Cube => "cube",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Return the WGSL address space and access mode strings for `space`.
|
||||
///
|
||||
/// Why don't we implement [`ToWgsl`] for [`AddressSpace`]?
|
||||
///
|
||||
/// In WGSL, the full form of a pointer type is `ptr<AS, T, AM>`, where:
|
||||
/// - `AS` is the address space,
|
||||
/// - `T` is the store type, and
|
||||
/// - `AM` is the access mode.
|
||||
///
|
||||
/// Since the type `T` intervenes between the address space and the
|
||||
/// access mode, there isn't really any individual WGSL grammar
|
||||
/// production that corresponds to an [`AddressSpace`], so [`ToWgsl`]
|
||||
/// is too simple-minded for this case.
|
||||
///
|
||||
/// Furthermore, we want to write `var<AS[, AM]>` for most address
|
||||
/// spaces, but we want to just write `var foo: T` for handle types.
|
||||
///
|
||||
/// [`AddressSpace`]: crate::AddressSpace
|
||||
pub const fn address_space_str(
|
||||
space: crate::AddressSpace,
|
||||
) -> (Option<&'static str>, Option<&'static str>) {
|
||||
use crate::AddressSpace as As;
|
||||
|
||||
(
|
||||
Some(match space {
|
||||
As::Private => "private",
|
||||
As::Uniform => "uniform",
|
||||
As::Storage { access } => {
|
||||
if access.contains(crate::StorageAccess::ATOMIC) {
|
||||
return (Some("storage"), Some("atomic"));
|
||||
} else if access.contains(crate::StorageAccess::STORE) {
|
||||
return (Some("storage"), Some("read_write"));
|
||||
} else {
|
||||
"storage"
|
||||
}
|
||||
}
|
||||
As::PushConstant => "push_constant",
|
||||
As::WorkGroup => "workgroup",
|
||||
As::Handle => return (None, None),
|
||||
As::Function => "function",
|
||||
}),
|
||||
None,
|
||||
)
|
||||
}
|
||||
|
||||
10
third_party/rust/naga/src/compact/expressions.rs
vendored
10
third_party/rust/naga/src/compact/expressions.rs
vendored
@@ -185,12 +185,6 @@ impl ExpressionTracer<'_> {
|
||||
Iq::NumLevels | Iq::NumLayers | Iq::NumSamples => {}
|
||||
}
|
||||
}
|
||||
Ex::RayQueryVertexPositions {
|
||||
query,
|
||||
committed: _,
|
||||
} => {
|
||||
self.expressions_used.insert(query);
|
||||
}
|
||||
Ex::Unary { op: _, expr } => {
|
||||
self.expressions_used.insert(expr);
|
||||
}
|
||||
@@ -408,10 +402,6 @@ impl ModuleMap {
|
||||
ref mut query,
|
||||
committed: _,
|
||||
} => adjust(query),
|
||||
Ex::RayQueryVertexPositions {
|
||||
ref mut query,
|
||||
committed: _,
|
||||
} => adjust(query),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ impl FunctionMap {
|
||||
self.expressions.adjust(&mut handle);
|
||||
reuse.insert(handle, name);
|
||||
}
|
||||
core::mem::swap(&mut function.named_expressions, reuse);
|
||||
std::mem::swap(&mut function.named_expressions, reuse);
|
||||
assert!(reuse.is_empty());
|
||||
|
||||
// Adjust statements.
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
use alloc::vec::Vec;
|
||||
|
||||
use crate::arena::{Arena, Handle, HandleSet, Range};
|
||||
|
||||
type Index = crate::non_max_u32::NonMaxU32;
|
||||
@@ -14,7 +12,7 @@ pub struct HandleMap<T> {
|
||||
new_index: Vec<Option<Index>>,
|
||||
|
||||
/// This type is indexed by values of type `T`.
|
||||
as_keys: core::marker::PhantomData<T>,
|
||||
as_keys: std::marker::PhantomData<T>,
|
||||
}
|
||||
|
||||
impl<T: 'static> HandleMap<T> {
|
||||
@@ -36,7 +34,7 @@ impl<T: 'static> HandleMap<T> {
|
||||
}
|
||||
})
|
||||
.collect(),
|
||||
as_keys: core::marker::PhantomData,
|
||||
as_keys: std::marker::PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +50,7 @@ impl<T: 'static> HandleMap<T> {
|
||||
pub fn try_adjust(&self, old: Handle<T>) -> Option<Handle<T>> {
|
||||
log::trace!(
|
||||
"adjusting {} handle [{}] -> [{:?}]",
|
||||
core::any::type_name::<T>(),
|
||||
std::any::type_name::<T>(),
|
||||
old.index(),
|
||||
self.new_index[old.index()]
|
||||
);
|
||||
|
||||
16
third_party/rust/naga/src/compact/mod.rs
vendored
16
third_party/rust/naga/src/compact/mod.rs
vendored
@@ -4,15 +4,10 @@ mod handle_set_map;
|
||||
mod statements;
|
||||
mod types;
|
||||
|
||||
use alloc::vec::Vec;
|
||||
|
||||
use crate::arena::HandleSet;
|
||||
use crate::{arena, compact::functions::FunctionTracer};
|
||||
use handle_set_map::HandleMap;
|
||||
|
||||
#[cfg(test)]
|
||||
use alloc::{format, string::ToString};
|
||||
|
||||
/// Remove unused types, expressions, and constants from `module`.
|
||||
///
|
||||
/// Assume that the following are used by definition:
|
||||
@@ -317,7 +312,6 @@ impl<'module> ModuleTracer<'module> {
|
||||
let crate::SpecialTypes {
|
||||
ref ray_desc,
|
||||
ref ray_intersection,
|
||||
ref ray_vertex_return,
|
||||
ref predeclared_types,
|
||||
} = *special_types;
|
||||
|
||||
@@ -327,9 +321,6 @@ impl<'module> ModuleTracer<'module> {
|
||||
if let Some(ray_intersection) = *ray_intersection {
|
||||
self.types_used.insert(ray_intersection);
|
||||
}
|
||||
if let Some(ray_vertex_return) = *ray_vertex_return {
|
||||
self.types_used.insert(ray_vertex_return);
|
||||
}
|
||||
for (_, &handle) in predeclared_types {
|
||||
self.types_used.insert(handle);
|
||||
}
|
||||
@@ -353,7 +344,7 @@ impl<'module> ModuleTracer<'module> {
|
||||
let mut max_dep = Vec::with_capacity(self.module.types.len());
|
||||
let mut previous = None;
|
||||
for (_handle, ty) in self.module.types.iter() {
|
||||
previous = core::cmp::max(
|
||||
previous = std::cmp::max(
|
||||
previous,
|
||||
match ty.inner {
|
||||
crate::TypeInner::Array { size, .. }
|
||||
@@ -466,7 +457,6 @@ impl ModuleMap {
|
||||
let crate::SpecialTypes {
|
||||
ref mut ray_desc,
|
||||
ref mut ray_intersection,
|
||||
ref mut ray_vertex_return,
|
||||
ref mut predeclared_types,
|
||||
} = *special;
|
||||
|
||||
@@ -477,10 +467,6 @@ impl ModuleMap {
|
||||
self.types.adjust(ray_intersection);
|
||||
}
|
||||
|
||||
if let Some(ref mut ray_vertex_return) = *ray_vertex_return {
|
||||
self.types.adjust(ray_vertex_return);
|
||||
}
|
||||
|
||||
for handle in predeclared_types.values_mut() {
|
||||
self.types.adjust(handle);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use super::functions::FunctionTracer;
|
||||
use super::FunctionMap;
|
||||
use crate::arena::Handle;
|
||||
|
||||
8
third_party/rust/naga/src/compact/types.rs
vendored
8
third_party/rust/naga/src/compact/types.rs
vendored
@@ -20,8 +20,8 @@ impl TypeTracer<'_> {
|
||||
| Ti::ValuePointer { .. }
|
||||
| Ti::Image { .. }
|
||||
| Ti::Sampler { .. }
|
||||
| Ti::AccelerationStructure { .. }
|
||||
| Ti::RayQuery { .. } => {}
|
||||
| Ti::AccelerationStructure
|
||||
| Ti::RayQuery => {}
|
||||
|
||||
// Types that do contain handles.
|
||||
Ti::Array {
|
||||
@@ -75,8 +75,8 @@ impl ModuleMap {
|
||||
| Ti::ValuePointer { .. }
|
||||
| Ti::Image { .. }
|
||||
| Ti::Sampler { .. }
|
||||
| Ti::AccelerationStructure { .. }
|
||||
| Ti::RayQuery { .. } => {}
|
||||
| Ti::AccelerationStructure
|
||||
| Ti::RayQuery => {}
|
||||
|
||||
// Types that do contain handles.
|
||||
Ti::Pointer {
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
//! [`DiagnosticFilter`]s and supporting functionality.
|
||||
|
||||
use alloc::boxed::Box;
|
||||
|
||||
use crate::{Arena, Handle};
|
||||
|
||||
#[cfg(feature = "wgsl-in")]
|
||||
use crate::Span;
|
||||
use crate::{Arena, Handle};
|
||||
#[cfg(feature = "arbitrary")]
|
||||
use arbitrary::Arbitrary;
|
||||
#[cfg(feature = "wgsl-in")]
|
||||
|
||||
3
third_party/rust/naga/src/error.rs
vendored
3
third_party/rust/naga/src/error.rs
vendored
@@ -1,5 +1,4 @@
|
||||
use alloc::{boxed::Box, string::String, vec::Vec};
|
||||
use core::{error::Error, fmt};
|
||||
use std::{error::Error, fmt};
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct ShaderError<E> {
|
||||
|
||||
@@ -30,9 +30,7 @@
|
||||
//! [`Struct`]: TypeInner::Struct
|
||||
//! [`Load`]: crate::Expression::Load
|
||||
//! [`Store`]: crate::Statement::Store
|
||||
|
||||
use alloc::{format, sync::Arc};
|
||||
use core::sync::atomic::AtomicUsize;
|
||||
use std::sync::{atomic::AtomicUsize, Arc};
|
||||
|
||||
use crate::{GlobalVariable, Handle, Module, Type, TypeInner};
|
||||
|
||||
@@ -53,9 +51,9 @@ pub enum Error {
|
||||
#[derive(Clone, Default)]
|
||||
struct Padding(Arc<AtomicUsize>);
|
||||
|
||||
impl core::fmt::Display for Padding {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
for _ in 0..self.0.load(core::sync::atomic::Ordering::Relaxed) {
|
||||
impl std::fmt::Display for Padding {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
for _ in 0..self.0.load(std::sync::atomic::Ordering::Relaxed) {
|
||||
f.write_str(" ")?;
|
||||
}
|
||||
Ok(())
|
||||
@@ -64,25 +62,25 @@ impl core::fmt::Display for Padding {
|
||||
|
||||
impl Drop for Padding {
|
||||
fn drop(&mut self) {
|
||||
let _ = self.0.fetch_sub(1, core::sync::atomic::Ordering::Relaxed);
|
||||
let _ = self.0.fetch_sub(1, std::sync::atomic::Ordering::Relaxed);
|
||||
}
|
||||
}
|
||||
|
||||
impl Padding {
|
||||
fn trace(&self, msg: impl core::fmt::Display, t: impl core::fmt::Debug) {
|
||||
fn trace(&self, msg: impl std::fmt::Display, t: impl std::fmt::Debug) {
|
||||
format!("{msg} {t:#?}")
|
||||
.split('\n')
|
||||
.for_each(|ln| log::trace!("{self}{ln}"));
|
||||
}
|
||||
|
||||
fn debug(&self, msg: impl core::fmt::Display, t: impl core::fmt::Debug) {
|
||||
fn debug(&self, msg: impl std::fmt::Display, t: impl std::fmt::Debug) {
|
||||
format!("{msg} {t:#?}")
|
||||
.split('\n')
|
||||
.for_each(|ln| log::debug!("{self}{ln}"));
|
||||
}
|
||||
|
||||
fn inc_padding(&self) -> Padding {
|
||||
let _ = self.0.fetch_add(1, core::sync::atomic::Ordering::Relaxed);
|
||||
let _ = self.0.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
|
||||
self.clone()
|
||||
}
|
||||
}
|
||||
|
||||
3
third_party/rust/naga/src/front/glsl/ast.rs
vendored
3
third_party/rust/naga/src/front/glsl/ast.rs
vendored
@@ -1,5 +1,4 @@
|
||||
use alloc::{borrow::Cow, string::String, vec::Vec};
|
||||
use core::fmt;
|
||||
use std::{borrow::Cow, fmt};
|
||||
|
||||
use super::{builtins::MacroCall, Span};
|
||||
use crate::{
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use super::{
|
||||
ast::{
|
||||
BuiltinVariations, FunctionDeclaration, FunctionKind, Overload, ParameterInfo,
|
||||
|
||||
26
third_party/rust/naga/src/front/glsl/context.rs
vendored
26
third_party/rust/naga/src/front/glsl/context.rs
vendored
@@ -1,6 +1,3 @@
|
||||
use alloc::{format, string::String, vec::Vec};
|
||||
use core::ops::Index;
|
||||
|
||||
use super::{
|
||||
ast::{
|
||||
GlobalLookup, GlobalLookupKind, HirExpr, HirExprKind, ParameterInfo, ParameterQualifier,
|
||||
@@ -15,6 +12,7 @@ use crate::{
|
||||
Expression, FastHashMap, FunctionArgument, Handle, Literal, LocalVariable, RelationalFunction,
|
||||
Scalar, Span, Statement, Type, TypeInner, VectorSize,
|
||||
};
|
||||
use std::ops::Index;
|
||||
|
||||
/// The position at which an expression is, used while lowering
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
@@ -138,10 +136,10 @@ impl<'a> Context<'a> {
|
||||
F: FnOnce(&mut Self) -> Result<R>,
|
||||
{
|
||||
self.emit_restart();
|
||||
let old_body = core::mem::replace(&mut self.body, Block::new());
|
||||
let old_body = std::mem::replace(&mut self.body, Block::new());
|
||||
let res = cb(self);
|
||||
self.emit_restart();
|
||||
let new_body = core::mem::replace(&mut self.body, old_body);
|
||||
let new_body = std::mem::replace(&mut self.body, old_body);
|
||||
res.map(|r| (new_body, r))
|
||||
}
|
||||
|
||||
@@ -150,10 +148,10 @@ impl<'a> Context<'a> {
|
||||
F: FnOnce(&mut Self) -> Result<()>,
|
||||
{
|
||||
self.emit_restart();
|
||||
let old_body = core::mem::replace(&mut self.body, body);
|
||||
let old_body = std::mem::replace(&mut self.body, body);
|
||||
let res = cb(self);
|
||||
self.emit_restart();
|
||||
let body = core::mem::replace(&mut self.body, old_body);
|
||||
let body = std::mem::replace(&mut self.body, old_body);
|
||||
res.map(|_| body)
|
||||
}
|
||||
|
||||
@@ -1105,14 +1103,14 @@ impl<'a> Context<'a> {
|
||||
.and_then(|scalar| Some((type_power(scalar)?, scalar))),
|
||||
) {
|
||||
match accept_power.cmp(&reject_power) {
|
||||
core::cmp::Ordering::Less => {
|
||||
std::cmp::Ordering::Less => {
|
||||
accept_body = self.with_body(accept_body, |ctx| {
|
||||
ctx.conversion(&mut accept, accept_meta, reject_scalar)?;
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
core::cmp::Ordering::Equal => {}
|
||||
core::cmp::Ordering::Greater => {
|
||||
std::cmp::Ordering::Equal => {}
|
||||
std::cmp::Ordering::Greater => {
|
||||
reject_body = self.with_body(reject_body, |ctx| {
|
||||
ctx.conversion(&mut reject, reject_meta, accept_scalar)?;
|
||||
Ok(())
|
||||
@@ -1258,7 +1256,7 @@ impl<'a> Context<'a> {
|
||||
right = self.add_expression(
|
||||
Expression::Compose {
|
||||
ty,
|
||||
components: core::iter::repeat(right).take(cols as usize).collect(),
|
||||
components: std::iter::repeat(right).take(cols as usize).collect(),
|
||||
},
|
||||
meta,
|
||||
)?;
|
||||
@@ -1430,11 +1428,11 @@ impl<'a> Context<'a> {
|
||||
right_components.and_then(|scalar| Some((type_power(scalar)?, scalar))),
|
||||
) {
|
||||
match left_power.cmp(&right_power) {
|
||||
core::cmp::Ordering::Less => {
|
||||
std::cmp::Ordering::Less => {
|
||||
self.conversion(left, left_meta, right_scalar)?;
|
||||
}
|
||||
core::cmp::Ordering::Equal => {}
|
||||
core::cmp::Ordering::Greater => {
|
||||
std::cmp::Ordering::Equal => {}
|
||||
std::cmp::Ordering::Greater => {
|
||||
self.conversion(right, right_meta, left_scalar)?;
|
||||
}
|
||||
}
|
||||
|
||||
27
third_party/rust/naga/src/front/glsl/error.rs
vendored
27
third_party/rust/naga/src/front/glsl/error.rs
vendored
@@ -1,21 +1,14 @@
|
||||
use alloc::{
|
||||
borrow::Cow,
|
||||
string::{String, ToString},
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
|
||||
use super::token::TokenValue;
|
||||
use crate::SourceLocation;
|
||||
use crate::{proc::ConstantEvaluatorError, Span};
|
||||
use codespan_reporting::diagnostic::{Diagnostic, Label};
|
||||
use codespan_reporting::files::SimpleFile;
|
||||
use codespan_reporting::term;
|
||||
use pp_rs::token::PreprocessorError;
|
||||
use std::borrow::Cow;
|
||||
use termcolor::{NoColor, WriteColor};
|
||||
use thiserror::Error;
|
||||
|
||||
use super::token::TokenValue;
|
||||
use crate::SourceLocation;
|
||||
use crate::{proc::ConstantEvaluatorError, Span};
|
||||
|
||||
fn join_with_comma(list: &[ExpectedToken]) -> String {
|
||||
let mut string = "".to_string();
|
||||
for (i, val) in list.iter().enumerate() {
|
||||
@@ -52,8 +45,8 @@ impl From<TokenValue> for ExpectedToken {
|
||||
ExpectedToken::Token(token)
|
||||
}
|
||||
}
|
||||
impl core::fmt::Display for ExpectedToken {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
||||
impl std::fmt::Display for ExpectedToken {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match *self {
|
||||
ExpectedToken::Token(ref token) => write!(f, "{token:?}"),
|
||||
ExpectedToken::TypeName => write!(f, "a type"),
|
||||
@@ -187,14 +180,14 @@ impl ParseErrors {
|
||||
}
|
||||
}
|
||||
|
||||
impl core::fmt::Display for ParseErrors {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||
impl std::fmt::Display for ParseErrors {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
self.errors.iter().try_for_each(|e| write!(f, "{e:?}"))
|
||||
}
|
||||
}
|
||||
|
||||
impl core::error::Error for ParseErrors {
|
||||
fn source(&self) -> Option<&(dyn core::error::Error + 'static)> {
|
||||
impl std::error::Error for ParseErrors {
|
||||
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
use alloc::{
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
use core::iter;
|
||||
|
||||
use super::{
|
||||
ast::*,
|
||||
builtins::{inject_builtin, sampled_to_depth},
|
||||
@@ -19,6 +11,7 @@ use crate::{
|
||||
Expression, Function, FunctionArgument, FunctionResult, Handle, Literal, LocalVariable, Scalar,
|
||||
ScalarKind, Span, Statement, StructMember, Type, TypeInner,
|
||||
};
|
||||
use std::iter;
|
||||
|
||||
/// Struct detailing a store operation that must happen after a function call
|
||||
struct ProxyWrite {
|
||||
@@ -289,7 +282,7 @@ impl Frontend {
|
||||
|
||||
for i in 0..columns as u32 {
|
||||
if i < ori_cols as u32 {
|
||||
use core::cmp::Ordering;
|
||||
use std::cmp::Ordering;
|
||||
|
||||
let vector = ctx.add_expression(
|
||||
Expression::AccessIndex {
|
||||
@@ -1237,7 +1230,7 @@ impl Frontend {
|
||||
+ 3,
|
||||
);
|
||||
|
||||
let global_init_body = core::mem::replace(&mut ctx.body, body);
|
||||
let global_init_body = std::mem::replace(&mut ctx.body, body);
|
||||
|
||||
for arg in self.entry_args.iter() {
|
||||
if arg.storage != StorageQualifier::Input {
|
||||
|
||||
13
third_party/rust/naga/src/front/glsl/lex.rs
vendored
13
third_party/rust/naga/src/front/glsl/lex.rs
vendored
@@ -1,16 +1,13 @@
|
||||
use alloc::string::String;
|
||||
|
||||
use pp_rs::{
|
||||
pp::Preprocessor,
|
||||
token::{PreprocessorError, Punct, TokenValue as PPTokenValue},
|
||||
};
|
||||
|
||||
use super::{
|
||||
ast::Precision,
|
||||
token::{Directive, DirectiveKind, Token, TokenValue},
|
||||
types::parse_type,
|
||||
};
|
||||
use crate::{FastHashMap, Span, StorageAccess};
|
||||
use pp_rs::{
|
||||
pp::Preprocessor,
|
||||
token::{PreprocessorError, Punct, TokenValue as PPTokenValue},
|
||||
};
|
||||
|
||||
#[derive(Debug)]
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
@@ -203,8 +200,6 @@ impl Iterator for Lexer<'_> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use alloc::vec;
|
||||
|
||||
use pp_rs::token::{Integer, Location, Token as PPToken, TokenValue as PPTokenValue};
|
||||
|
||||
use super::{
|
||||
|
||||
10
third_party/rust/naga/src/front/glsl/mod.rs
vendored
10
third_party/rust/naga/src/front/glsl/mod.rs
vendored
@@ -16,8 +16,6 @@ pub use ast::{Precision, Profile};
|
||||
pub use error::{Error, ErrorKind, ExpectedToken, ParseErrors};
|
||||
pub use token::TokenValue;
|
||||
|
||||
use alloc::{string::String, vec::Vec};
|
||||
|
||||
use crate::{proc::Layouter, FastHashMap, FastHashSet, Handle, Module, ShaderStage, Span, Type};
|
||||
use ast::{EntryArg, FunctionDeclaration, GlobalLookup};
|
||||
use parser::ParsingContext;
|
||||
@@ -36,7 +34,7 @@ mod token;
|
||||
mod types;
|
||||
mod variables;
|
||||
|
||||
type Result<T> = core::result::Result<T, Error>;
|
||||
type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
/// Per-shader options passed to [`parse`](Frontend::parse).
|
||||
///
|
||||
@@ -198,7 +196,7 @@ impl Frontend {
|
||||
&mut self,
|
||||
options: &Options,
|
||||
source: &str,
|
||||
) -> core::result::Result<Module, ParseErrors> {
|
||||
) -> std::result::Result<Module, ParseErrors> {
|
||||
self.reset(options.stage);
|
||||
|
||||
let lexer = lex::Lexer::new(source, &options.defines);
|
||||
@@ -209,12 +207,12 @@ impl Frontend {
|
||||
if self.errors.is_empty() {
|
||||
Ok(module)
|
||||
} else {
|
||||
Err(core::mem::take(&mut self.errors).into())
|
||||
Err(std::mem::take(&mut self.errors).into())
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
self.errors.push(e);
|
||||
Err(core::mem::take(&mut self.errors).into())
|
||||
Err(std::mem::take(&mut self.errors).into())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,6 @@ The OpenGl spec (the layout rules are defined by the OpenGl spec in section
|
||||
equivalent to bytes.
|
||||
*/
|
||||
|
||||
use alloc::vec::Vec;
|
||||
|
||||
use super::{
|
||||
ast::StructLayout,
|
||||
error::{Error, ErrorKind},
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
use alloc::{string::String, vec};
|
||||
use core::iter::Peekable;
|
||||
|
||||
use pp_rs::token::{PreprocessorError, Token as PPToken, TokenValue as PPTokenValue};
|
||||
|
||||
use super::{
|
||||
ast::{FunctionKind, Profile, TypeQualifiers},
|
||||
context::{Context, ExprPos},
|
||||
@@ -15,6 +10,8 @@ use super::{
|
||||
Frontend, Result,
|
||||
};
|
||||
use crate::{arena::Handle, proc::U32EvalError, Expression, Module, Span, Type};
|
||||
use pp_rs::token::{PreprocessorError, Token as PPToken, TokenValue as PPTokenValue};
|
||||
use std::iter::Peekable;
|
||||
|
||||
mod declarations;
|
||||
mod expressions;
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
use alloc::{string::String, vec, vec::Vec};
|
||||
|
||||
use super::{DeclarationContext, ParsingContext, Result};
|
||||
use crate::{
|
||||
front::glsl::{
|
||||
ast::{
|
||||
@@ -20,6 +17,8 @@ use crate::{
|
||||
Type, TypeInner,
|
||||
};
|
||||
|
||||
use super::{DeclarationContext, ParsingContext, Result};
|
||||
|
||||
/// Helper method used to retrieve the child type of `ty` at
|
||||
/// index `i`.
|
||||
///
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
use core::num::NonZeroU32;
|
||||
use std::num::NonZeroU32;
|
||||
|
||||
use crate::{
|
||||
front::glsl::{
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
|
||||
use crate::front::glsl::context::ExprPos;
|
||||
use crate::front::glsl::Span;
|
||||
use crate::Literal;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
use alloc::{vec, vec::Vec};
|
||||
use core::num::NonZeroU32;
|
||||
use std::num::NonZeroU32;
|
||||
|
||||
use crate::{
|
||||
front::glsl::{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user