Backed out 3 changesets (bug 1952126) for causing build bustages @rust.mk. CLOSED TREE

Backed out changeset fbdd03d1d3f9 (bug 1952126)
Backed out changeset 3d5dd1dc4785 (bug 1952126)
Backed out changeset 7329ea9d5b5b (bug 1952126)
This commit is contained in:
Goloman Adrian
2025-03-07 00:36:08 +02:00
parent a2fda0b662
commit 98cb43095f
204 changed files with 1347 additions and 3758 deletions

View File

@@ -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=cc1e26a7998a371d89fd50edbb015fd6a70c2347"]
[source."git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0"]
git = "https://github.com/gfx-rs/wgpu"
rev = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
replace-with = "vendored-sources"
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]

86
Cargo.lock generated
View File

@@ -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=cc1e26a7998a371d89fd50edbb015fd6a70c2347#cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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=cc1e26a7998a371d89fd50edbb015fd6a70c2347#cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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=cc1e26a7998a371d89fd50edbb015fd6a70c2347#cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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=cc1e26a7998a371d89fd50edbb015fd6a70c2347#cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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=cc1e26a7998a371d89fd50edbb015fd6a70c2347#cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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=cc1e26a7998a371d89fd50edbb015fd6a70c2347#cc1e26a7998a371d89fd50edbb015fd6a70c2347"
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.7.0",
"js-sys",
"log",
"serde",

View File

@@ -17,7 +17,7 @@ default = []
[dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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 = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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 = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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 = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
features = ["vulkan"]
[dependencies.wgt]
package = "wgpu-types"
git = "https://github.com/gfx-rs/wgpu"
rev = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
[dependencies.wgh]
package = "wgpu-hal"
git = "https://github.com/gfx-rs/wgpu"
rev = "cc1e26a7998a371d89fd50edbb015fd6a70c2347"
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
features = ["oom_panic", "device_lost_panic", "internal_error_panic"]
[target.'cfg(windows)'.dependencies]

View File

@@ -20,11 +20,11 @@ origin:
# Human-readable identifier for this version/release
# Generally "version NNN", "tag SSS", "bookmark SSS"
release: cc1e26a7998a371d89fd50edbb015fd6a70c2347 (2025-03-06T03:36:21Z).
release: commit 93f64dc847a0e6788b17b292ae4d7d59361e3be0
# Revision to pull in
# Must be a long or short commit SHA (long preferred)
revision: cc1e26a7998a371d89fd50edbb015fd6a70c2347
revision: 93f64dc847a0e6788b17b292ae4d7d59361e3be0
license: ['MIT', 'Apache-2.0']

View File

@@ -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:cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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:cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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:cc1e26a7998a371d89fd50edbb015fd6a70c2347"
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:cc1e26a7998a371d89fd50edbb015fd6a70c2347"
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
importable = false
[[audits.whatsys]]

View File

@@ -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"

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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]

View File

@@ -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:

View File

@@ -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

View File

@@ -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]

View File

@@ -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:*]

View File

@@ -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\]]

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:*]

View File

@@ -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:*]

View File

@@ -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]

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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

View File

@@ -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
View File

@@ -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",

View File

@@ -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 = []

View File

@@ -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:

View File

@@ -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".
///

View File

@@ -1,7 +1,5 @@
mod all;
mod bitflags_match;
mod bits;
mod clear;
mod complement;
mod contains;
mod difference;

View File

@@ -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");
}

View File

@@ -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);
}

View File

@@ -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 {

File diff suppressed because one or more lines are too long

View File

@@ -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"

View File

@@ -4,7 +4,7 @@
[![Crates.io](https://img.shields.io/crates/v/naga.svg?label=naga)](https://crates.io/crates/naga)
[![Docs.rs](https://docs.rs/naga/badge.svg)](https://docs.rs/naga)
[![Build Status](https://github.com/gfx-rs/naga/workflows/pipeline/badge.svg)](https://github.com/gfx-rs/naga/actions)
![MSRV](https://img.shields.io/badge/rustc-1.82-blue.svg)
![MSRV](https://img.shields.io/badge/rustc-1.76+-blue.svg)
[![codecov.io](https://codecov.io/gh/gfx-rs/naga/branch/master/graph/badge.svg?token=9VOKYO8BM2)](https://codecov.io/gh/gfx-rs/naga)
The shader translation library for the needs of [wgpu](https://github.com/gfx-rs/wgpu).

View File

@@ -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(),
}
}

View File

@@ -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()
}

View File

@@ -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());

View File

@@ -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();

View File

@@ -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(),
}
}

View File

@@ -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 })
}

View File

@@ -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 {

View File

@@ -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";

View File

@@ -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 {

View File

@@ -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(())
}

View File

@@ -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,

View File

@@ -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)?;
}
}

View File

@@ -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();
}
}

View File

@@ -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())?;

View File

@@ -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.

View File

@@ -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(())
}
}

View File

@@ -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,
}
}

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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(())
}
}

View File

@@ -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);
}
}
}

View File

@@ -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.

View File

@@ -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

View File

@@ -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.
///

View File

@@ -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));
}

View File

@@ -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,

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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
}
}

View File

@@ -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

View File

@@ -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),
);

View File

@@ -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);

View File

@@ -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(

View File

@@ -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) => {

View File

@@ -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()
}
}

View File

@@ -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",
}
}

View File

@@ -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,
)
}

View File

@@ -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),
}
}

View File

@@ -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.

View File

@@ -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()]
);

View File

@@ -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);
}

View File

@@ -1,5 +1,3 @@
use alloc::{vec, vec::Vec};
use super::functions::FunctionTracer;
use super::FunctionMap;
use crate::arena::Handle;

View File

@@ -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 {

View File

@@ -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")]

View File

@@ -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> {

View File

@@ -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()
}
}

View File

@@ -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::{

View File

@@ -1,5 +1,3 @@
use alloc::{vec, vec::Vec};
use super::{
ast::{
BuiltinVariations, FunctionDeclaration, FunctionKind, Overload, ParameterInfo,

View File

@@ -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)?;
}
}

View File

@@ -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
}
}

View File

@@ -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 {

View File

@@ -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::{

View File

@@ -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())
}
}
}

View File

@@ -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},

View File

@@ -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;

View File

@@ -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`.
///

View File

@@ -1,5 +1,4 @@
use alloc::{vec, vec::Vec};
use core::num::NonZeroU32;
use std::num::NonZeroU32;
use crate::{
front::glsl::{

View File

@@ -1,5 +1,3 @@
use alloc::{vec, vec::Vec};
use crate::front::glsl::context::ExprPos;
use crate::front::glsl::Span;
use crate::Literal;

View File

@@ -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