Bug 1956123 - build(webgpu): update WGPU to c7c79a0dc9356081a884b5518d1c08ce7a09c7c5 r=webgpu-reviewers,supply-chain-reviewers,nical
Notable WebGPU CTS changes:
- Demotions from tier 2 to tier 3:
- `webgpu:shader,execution,expression,unary,{i32,u32}_conversion:f32:*` started regressing on Windows.
- Promotions to tier 2 from tier 3:
- Across all platforms:
- `webgpu:shader,execution,expression,call,builtin,cross:f32:*`
- `webgpu:shader,execution,expression,unary,i32_conversion:abstract_float:*`
- `webgpu:shader,execution,expression,unary,u32_conversion:abstract_float:*`
- `webgpu:shader,execution,limits:nesting_depth_braces:*`
- `webgpu:shader,validation,expression,call,builtin,value_constructor:vector_copy:*`
- `webgpu:shader,validation,expression,call,builtin,value_constructor:vector_elementwise:*`
- `webgpu:shader,validation,expression,call,builtin,value_constructor:vector_mixed:*`
- `webgpu:shader,validation,expression,call,builtin,value_constructor:scalar_zero_value:*` was promoted on Linux and Windows, but stays in macOS on account of failing `f16` functionality. My guess is that these failures are also present on the other platforms, but we don't see the because `shader-f16` is not aviailable on our other CI platforms yet.
- From macOS, completing the set of all platforms passing:
- `f16` functionality, which, again, was likely not visible on our other CI platforms before:
- `webgpu:shader,execution,expression,call,builtin,cross:f16:*`
- `webgpu:shader,validation,decl,override:type:*`
- `webgpu:api,validation,capability_checks,limits,maxUniformBufferBindingSize:createBindGroup,at_over:*`
was promoted on Windows.
Differential Revision: https://phabricator.services.mozilla.com/D243593
This commit is contained in:
@@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust"
|
||||
rev = "43c22248d136c8b38fe42ea709d08da6355cf04b"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c"]
|
||||
[source."git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"]
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]
|
||||
|
||||
51
Cargo.lock
generated
51
Cargo.lock
generated
@@ -642,6 +642,26 @@ version = "3.15.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.22.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
|
||||
dependencies = [
|
||||
"bytemuck_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck_derive"
|
||||
version = "1.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.5.0"
|
||||
@@ -929,12 +949,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codespan-reporting"
|
||||
version = "0.11.1"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
|
||||
checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"termcolor",
|
||||
"unicode-width 0.1.999",
|
||||
"unicode-width 0.2.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4507,7 +4528,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664"
|
||||
[[package]]
|
||||
name = "naga"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c#c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bit-set",
|
||||
@@ -4524,7 +4545,6 @@ dependencies = [
|
||||
"serde",
|
||||
"spirv",
|
||||
"strum",
|
||||
"termcolor",
|
||||
"thiserror 2.0.9",
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -5563,14 +5583,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ron"
|
||||
version = "0.8.1"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
|
||||
checksum = "63f3aa105dea217ef30d89581b65a4d527a19afc95ef5750be3890e8d3c5b837"
|
||||
dependencies = [
|
||||
"base64 0.21.999",
|
||||
"base64 0.22.1",
|
||||
"bitflags 2.9.0",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -7387,11 +7408,13 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-core"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c#c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bit-set",
|
||||
"bit-vec",
|
||||
"bitflags 2.9.0",
|
||||
"bytemuck",
|
||||
"cfg_aliases",
|
||||
"document-features",
|
||||
"hashbrown 0.14.5",
|
||||
@@ -7415,7 +7438,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-core-deps-apple"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c#c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
dependencies = [
|
||||
"wgpu-hal",
|
||||
]
|
||||
@@ -7423,7 +7446,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-core-deps-windows-linux-android"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c#c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
dependencies = [
|
||||
"wgpu-hal",
|
||||
]
|
||||
@@ -7431,7 +7454,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-hal"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c#c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"arrayvec",
|
||||
@@ -7439,6 +7462,7 @@ dependencies = [
|
||||
"bit-set",
|
||||
"bitflags 2.9.0",
|
||||
"block",
|
||||
"bytemuck",
|
||||
"cfg_aliases",
|
||||
"core-graphics-types 0.1.999",
|
||||
"gpu-alloc",
|
||||
@@ -7466,9 +7490,10 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "wgpu-types"
|
||||
version = "24.0.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c6286791febc64cf8ef054b5356c2669327ef51c#c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
source = "git+https://github.com/gfx-rs/wgpu?rev=c7c79a0dc9356081a884b5518d1c08ce7a09c7c5#c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"bytemuck",
|
||||
"js-sys",
|
||||
"log",
|
||||
"serde",
|
||||
|
||||
@@ -17,7 +17,7 @@ default = []
|
||||
[dependencies.wgc]
|
||||
package = "wgpu-core"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
# TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182
|
||||
features = [
|
||||
"serde",
|
||||
@@ -26,7 +26,6 @@ features = [
|
||||
"strict_asserts",
|
||||
"wgsl",
|
||||
"api_log_info",
|
||||
"indirect-validation",
|
||||
]
|
||||
|
||||
# We want the wgpu-core Metal backend on macOS and iOS.
|
||||
@@ -34,32 +33,32 @@ features = [
|
||||
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
|
||||
package = "wgpu-core"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
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 = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
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 = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
features = ["vulkan"]
|
||||
|
||||
[dependencies.wgt]
|
||||
package = "wgpu-types"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
|
||||
[dependencies.wgh]
|
||||
package = "wgpu-hal"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
rev = "c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
features = ["oom_panic", "device_lost_panic", "internal_error_panic"]
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
|
||||
@@ -8,8 +8,8 @@ origin:
|
||||
name: wgpu
|
||||
description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard
|
||||
url: https://github.com/gfx-rs/wgpu
|
||||
release: c6286791febc64cf8ef054b5356c2669327ef51c (2025-03-19T16:26:50Z).
|
||||
revision: c6286791febc64cf8ef054b5356c2669327ef51c
|
||||
release: c7c79a0dc9356081a884b5518d1c08ce7a09c7c5 (2025-03-28T10:32:06Z).
|
||||
revision: c7c79a0dc9356081a884b5518d1c08ce7a09c7c5
|
||||
license: ['MIT', 'Apache-2.0']
|
||||
|
||||
updatebot:
|
||||
|
||||
@@ -3683,7 +3683,7 @@ who = [
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
importable = false
|
||||
|
||||
[[audits.net2]]
|
||||
@@ -5922,7 +5922,7 @@ who = [
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
importable = false
|
||||
|
||||
[[audits.wgpu-hal]]
|
||||
@@ -6009,7 +6009,7 @@ who = [
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
importable = false
|
||||
|
||||
[[audits.wgpu-types]]
|
||||
@@ -6091,7 +6091,7 @@ who = [
|
||||
"Erich Gubler <erichdongubler@gmail.com>",
|
||||
]
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "24.0.0 -> 24.0.0@git:c6286791febc64cf8ef054b5356c2669327ef51c"
|
||||
delta = "24.0.0 -> 24.0.0@git:c7c79a0dc9356081a884b5518d1c08ce7a09c7c5"
|
||||
importable = false
|
||||
|
||||
[[audits.whatsys]]
|
||||
|
||||
@@ -1454,6 +1454,131 @@ criteria = "safe-to-deploy"
|
||||
version = "0.3.7"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
version = "1.16.3"
|
||||
notes = """
|
||||
Review notes from the original audit (of 1.14.3) may be found in
|
||||
https://crrev.com/c/5362675. Note that this audit has initially missed UB risk
|
||||
that was fixed in 1.16.2 - see https://github.com/Lokathor/bytemuck/pull/258.
|
||||
Because of this, the original audit has been edited to certify version `1.16.3`
|
||||
instead (see also https://crrev.com/c/5771867).
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.16.3 -> 1.17.1"
|
||||
notes = "Unsafe review comments can be found in https://crrev.com/c/5813463"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Adrian Taylor <adetaylor@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.17.1 -> 1.18.0"
|
||||
notes = "No code changes - just altering feature flag arrangements"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Adrian Taylor <adetaylor@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.18.0 -> 1.19.0"
|
||||
notes = "No code changes - just comment changes and adding the track_caller attribute."
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.19.0 -> 1.20.0"
|
||||
notes = "`unsafe` review can be found at https://crrev.com/c/6096767"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Adrian Taylor <adetaylor@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.20.0 -> 1.21.0"
|
||||
notes = "Unsafe review at https://chromium-review.googlesource.com/c/chromium/src/+/6111154/"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck]]
|
||||
who = "Daniel Cheng <dcheng@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.21.0 -> 1.22.0"
|
||||
notes = """
|
||||
This adds new instances of unsafe, but the uses are justified:
|
||||
- BoxBytes is essentially a Box<[u8], which is Send + Sync, so also marking BoxBytes as Send + Sync is justified.
|
||||
- core::num::Saturating<T> meets the criteria for Zeroable + Pod, so marking it as such is justified.
|
||||
|
||||
See https://crrev.com/c/6321863 for more audit notes.
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
version = "1.6.0"
|
||||
notes = """
|
||||
Grepped for \"unsafe\", \"crypt\", \"cipher\", \"fs\", \"net\" - there were no
|
||||
hits except for 8 occurrences of `unsafe`. Additional `unsafe` review comments
|
||||
can be found in https://crrev.com/c/5445719.
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.6.0 -> 1.6.1"
|
||||
notes = """
|
||||
No behavior/code changes AFAICT - only adding
|
||||
`#[allow(clippy::multiple_bound_locations)]`, doc comments, and making
|
||||
some cosmetic changes in non-`.rs` files.
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "danakj <danakj@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.6.1 -> 1.7.0"
|
||||
notes = """
|
||||
Added support for Zeroable enums, which requires them to be represented as an integer and to have 0 as one of their values.
|
||||
|
||||
Other trivial/formatting changes.
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.7.0 -> 1.7.1"
|
||||
notes = """
|
||||
No impact on safety AFAICT - the delta only specifies a new attribute for
|
||||
`proc_macro_derive` to work around re-export issues described at
|
||||
https://github.com/Lokathor/bytemuck/issues/159
|
||||
"""
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "danakj <danakj@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.7.1 -> 1.8.0"
|
||||
notes = "Unsafe review: https://crrev.com/c/5921014"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "Adrian Taylor <adetaylor@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.8.0 -> 1.8.1"
|
||||
notes = "Changes do not impact safety."
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.bytemuck_derive]]
|
||||
who = "Chris Palmer <palmer@google.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "1.8.1 -> 1.9.2"
|
||||
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
|
||||
|
||||
[[audits.google.audits.clap_builder]]
|
||||
who = "Lukasz Anforowicz <lukasza@chromium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
|
||||
@@ -3,38 +3,30 @@
|
||||
implementation-status:
|
||||
if os == "win": backlog
|
||||
if os == "linux": backlog
|
||||
expected:
|
||||
if os == "win" and debug: CRASH
|
||||
[:dispatchSize="maximum"]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
if os == "linux": FAIL
|
||||
|
||||
[:dispatchSize=2048]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
|
||||
[:dispatchSize=2179]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
|
||||
[:dispatchSize=256]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
|
||||
[:dispatchSize=315]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
|
||||
[:dispatchSize=628]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": FAIL
|
||||
|
||||
|
||||
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,compute,basic:memcpy:*]
|
||||
|
||||
@@ -490,8 +490,7 @@
|
||||
|
||||
[:dimension="2d";readMethod="CopyToTexture";format="r8unorm"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [PASS, FAIL]
|
||||
if os == "win": [PASS, FAIL]
|
||||
if os == "linux": FAIL
|
||||
|
||||
[:dimension="2d";readMethod="CopyToTexture";format="rg11b10ufloat"]
|
||||
|
||||
@@ -96,8 +96,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";encoderType="render"]
|
||||
expected:
|
||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "win": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -158,5 +157,5 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";encoderType="renderBundle"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -555,6 +555,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -563,6 +564,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -574,6 +576,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -582,6 +585,7 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -593,7 +597,8 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -602,7 +607,8 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -614,7 +620,8 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -623,7 +630,8 @@
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -638,6 +646,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -649,6 +658,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -663,6 +673,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -671,6 +682,7 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -682,7 +694,8 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -692,7 +705,8 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -705,7 +719,8 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -714,7 +729,8 @@
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -726,6 +742,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -734,6 +751,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -745,6 +763,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -753,6 +772,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -764,6 +784,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -772,6 +793,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -783,6 +805,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -791,6 +814,7 @@
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -799,50 +823,60 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="r8unorm"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="r8unorm"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -855,7 +889,8 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -869,7 +904,8 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -890,7 +926,8 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
@@ -904,7 +941,8 @@
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: FAIL
|
||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -352,7 +352,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="f32"]
|
||||
expected:
|
||||
@@ -372,7 +372,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat2x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -385,7 +385,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat2x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -398,7 +398,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat2x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -411,7 +411,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat3x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -424,7 +424,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat3x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -437,7 +437,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat3x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -450,7 +450,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat4x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -463,7 +463,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat4x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -476,7 +476,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="mat4x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -496,7 +496,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="vec2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -523,7 +523,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="vec3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -550,7 +550,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=false;wgslType="vec4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -595,7 +595,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="f32"]
|
||||
expected:
|
||||
@@ -613,7 +613,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat2x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -625,7 +625,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat2x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -637,7 +637,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat2x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -649,7 +649,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat3x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -661,7 +661,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat3x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -673,7 +673,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat3x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -685,7 +685,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat4x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -697,7 +697,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat4x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -709,7 +709,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="mat4x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -727,7 +727,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="vec2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -751,7 +751,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="vec3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -775,7 +775,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";async=true;wgslType="vec4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1081,8 +1081,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="f32"]
|
||||
expected:
|
||||
@@ -1102,8 +1101,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat2x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1116,8 +1114,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat2x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1130,8 +1127,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat2x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1144,8 +1140,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat3x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1158,8 +1153,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat3x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1172,8 +1166,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat3x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1186,8 +1179,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat4x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1200,8 +1192,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat4x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1214,8 +1205,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="mat4x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1235,8 +1225,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="vec2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1263,8 +1252,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="vec3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1291,8 +1279,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;wgslType="vec4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1340,8 +1327,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="f32"]
|
||||
expected:
|
||||
@@ -1361,8 +1347,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat2x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1375,8 +1360,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat2x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1389,8 +1373,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat2x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1403,8 +1386,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat3x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1417,8 +1399,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat3x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1431,8 +1412,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat3x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1445,8 +1425,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat4x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1459,8 +1438,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat4x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1473,8 +1451,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="mat4x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1494,8 +1471,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="vec2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1522,8 +1498,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="vec3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -1550,8 +1525,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;wgslType="vec4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2032,7 +2006,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="f32"]
|
||||
expected:
|
||||
@@ -2054,7 +2028,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat2x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2068,7 +2042,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat2x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2082,7 +2056,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat2x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2096,7 +2070,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat3x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2110,7 +2084,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat3x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2124,7 +2098,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat3x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2138,7 +2112,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat4x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2152,7 +2126,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat4x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2166,7 +2140,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="mat4x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2188,7 +2162,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="vec2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2218,7 +2192,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="vec3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2248,7 +2222,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;wgslType="vec4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2302,7 +2276,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="f32"]
|
||||
expected:
|
||||
@@ -2324,7 +2298,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat2x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2338,7 +2312,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat2x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2352,7 +2326,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat2x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2366,7 +2340,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat3x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2380,7 +2354,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat3x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2394,7 +2368,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat3x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2408,7 +2382,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat4x2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2422,7 +2396,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat4x3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2436,7 +2410,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="mat4x4%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2458,7 +2432,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="vec2%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2488,7 +2462,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="vec3%3Cf32%3E"]
|
||||
expected:
|
||||
@@ -2518,7 +2492,7 @@
|
||||
expected:
|
||||
if os == "win": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;wgslType="vec4%3Cf32%3E"]
|
||||
expected:
|
||||
|
||||
@@ -2180,768 +2180,896 @@
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=false;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=false;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=false;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=false;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=false]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;pointList=true;frontFacing=true;sampleIndex=true;sampleMaskIn=true;sampleMaskOut=true]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
|
||||
@@ -1373,244 +1373,604 @@
|
||||
expected: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
if os == "win" and not debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";async=false;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"]
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -797,6 +797,8 @@
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||
|
||||
@@ -823,14 +825,20 @@
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||
expected:
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||
expected:
|
||||
|
||||
@@ -1,24 +1,16 @@
|
||||
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxTextureDimension2D:configure,at_over:*]
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
if os == "mac" and not debug: backlog
|
||||
expected:
|
||||
if os == "mac" and not debug: [OK, CRASH]
|
||||
[:limitTest="atDefault";testValueName="atLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";canvasType="offscreen"]
|
||||
|
||||
@@ -45,20 +37,12 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";canvasType="onscreen"]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxTextureDimension2D:createTexture,at_over:*]
|
||||
@@ -87,24 +71,15 @@
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status:
|
||||
if os == "linux" and not debug: backlog
|
||||
if os == "mac" and debug: backlog
|
||||
expected:
|
||||
if os == "linux" and not debug: [OK, CRASH]
|
||||
[:limitTest="atDefault";testValueName="atLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";canvasType="offscreen"]
|
||||
|
||||
@@ -131,17 +106,9 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";canvasType="onscreen"]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";canvasType="offscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";canvasType="onscreen"]
|
||||
expected:
|
||||
if os == "mac" and debug: FAIL
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxUniformBufferBindingSize:createBindGroup,at_over:*]
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status:
|
||||
if os == "win" and debug: backlog
|
||||
[:limitTest="atDefault";testValueName="atLimit";bufferPart="biggerBufferWithOffset"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="atLimit";bufferPart="wholeBuffer"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";bufferPart="biggerBufferWithOffset"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="atDefault";testValueName="overLimit";bufferPart="wholeBuffer"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="atMaximum";testValueName="atLimit";bufferPart="biggerBufferWithOffset"]
|
||||
|
||||
@@ -27,20 +17,12 @@
|
||||
[:limitTest="atMaximum";testValueName="overLimit";bufferPart="wholeBuffer"]
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";bufferPart="biggerBufferWithOffset"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";bufferPart="wholeBuffer"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";bufferPart="biggerBufferWithOffset"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";bufferPart="wholeBuffer"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="overMaximum";testValueName="atLimit";bufferPart="biggerBufferWithOffset"]
|
||||
|
||||
@@ -51,20 +33,12 @@
|
||||
[:limitTest="overMaximum";testValueName="overLimit";bufferPart="wholeBuffer"]
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";bufferPart="biggerBufferWithOffset"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="atLimit";bufferPart="wholeBuffer"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";bufferPart="biggerBufferWithOffset"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
[:limitTest="underDefault";testValueName="overLimit";bufferPart="wholeBuffer"]
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxUniformBufferBindingSize:validate,maxBufferSize:*]
|
||||
|
||||
@@ -208,6 +208,8 @@
|
||||
[cts.https.html?q=webgpu:api,validation,compute_pipeline:overrides,value,validation_error,f16:*]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:isAsync=false;constants={"cf16":-3.4028234663852886e%2B38}]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -123,8 +123,6 @@
|
||||
implementation-status:
|
||||
if os == "win": backlog
|
||||
if os == "mac": backlog
|
||||
expected:
|
||||
if os == "win" and debug: SKIP
|
||||
[:errorFilter="out-of-memory";stackDepth=1]
|
||||
expected:
|
||||
if os == "win": FAIL
|
||||
|
||||
@@ -642,10 +642,7 @@
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="rg11b10ufloat"]
|
||||
expected:
|
||||
if os == "win" and not debug: FAIL
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:format="rg16float"]
|
||||
expected:
|
||||
|
||||
@@ -209,6 +209,8 @@
|
||||
[cts.https.html?q=webgpu:api,validation,render_pipeline,overrides:value,validation_error,f16,fragment:*]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:isAsync=false;fragmentConstants={"cf16":-3.4028234663852886e%2B38}]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
@@ -277,6 +279,8 @@
|
||||
[cts.https.html?q=webgpu:api,validation,render_pipeline,overrides:value,validation_error,f16,vertex:*]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:isAsync=false;vertexConstants={"cf16":-3.4028234663852886e%2B38}]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -1225,6 +1225,8 @@
|
||||
[:format="astc-6x5-unorm";usageType="texture";usageCopy="none";awaitLost=true]
|
||||
|
||||
[:format="astc-6x5-unorm";usageType="texture";usageCopy="src";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-6x5-unorm";usageType="texture";usageCopy="src";awaitLost=true]
|
||||
|
||||
@@ -1310,23 +1312,19 @@
|
||||
|
||||
[:format="astc-6x6-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-6x6-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-6x6-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-6x6-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-6x6-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false]
|
||||
expected:
|
||||
@@ -1370,13 +1368,11 @@
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false]
|
||||
expected:
|
||||
@@ -1388,8 +1384,7 @@
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true]
|
||||
expected:
|
||||
@@ -1397,13 +1392,11 @@
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x5-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x6-unorm";usageType="texture";usageCopy="dst";awaitLost=false]
|
||||
expected:
|
||||
@@ -1417,23 +1410,19 @@
|
||||
|
||||
[:format="astc-8x6-unorm";usageType="texture";usageCopy="none";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x6-unorm";usageType="texture";usageCopy="none";awaitLost=true]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x6-unorm";usageType="texture";usageCopy="src";awaitLost=false]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x6-unorm";usageType="texture";usageCopy="src";awaitLost=true]
|
||||
expected:
|
||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:format="astc-8x6-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false]
|
||||
expected:
|
||||
|
||||
@@ -1,82 +1,192 @@
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,binary,af_matrix_matrix_multiplication:matrix_matrix:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "win" and not debug: [OK, TIMEOUT]
|
||||
[:inputSource="const";common_dim=2;x_rows=2;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=2;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=2;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=3;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=3;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=3;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=4;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=4;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=2;x_rows=4;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=2;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=2;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=2;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=3;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=3;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=3;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=4;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=4;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=3;x_rows=4;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=2;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=2;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=2;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=3;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=3;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=3;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=4;y_cols=2]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=4;y_cols=3]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="const";common_dim=4;x_rows=4;y_cols=4]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "win" and debug: FAIL
|
||||
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -5,11 +5,7 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,cross:f16:*]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
[:inputSource="const"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="storage_r"]
|
||||
|
||||
@@ -19,9 +15,7 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,cross:f32:*]
|
||||
implementation-status: backlog
|
||||
[:inputSource="const"]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r"]
|
||||
|
||||
|
||||
@@ -1544,8 +1544,12 @@
|
||||
[:case=175;type="f32";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
|
||||
[:case=176;type="f16";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=176;type="f16";op="subgroupMax";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=176;type="f16";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
|
||||
@@ -1576,14 +1580,20 @@
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=177;type="f32";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=177;type="f32";op="subgroupMax";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=177;type="f32";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=177;type="f32";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=178;type="f16";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
@@ -7890,41 +7900,35 @@
|
||||
[:case=343;type="f16";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=343;type="f16";op="subgroupMax";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=343;type="f16";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=343;type="f16";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=343;type="f32";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=343;type="f32";op="subgroupMax";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=343;type="f32";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
@@ -7934,64 +7938,55 @@
|
||||
|
||||
[:case=343;type="f32";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f16";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f16";op="subgroupMax";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f16";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f16";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f32";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f32";op="subgroupMax";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f32";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=344;type="f32";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=345;type="f16";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
@@ -8039,15 +8034,13 @@
|
||||
[:case=345;type="f32";op="subgroupMin";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=345;type="f32";op="subgroupMin";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=346;type="f16";op="subgroupMax";wgSize=[128,1,1\]]
|
||||
|
||||
@@ -2336,8 +2336,12 @@
|
||||
[:case=358;type="f32";wgSize=[64,2,1\]]
|
||||
|
||||
[:case=359;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=359;type="f16";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=359;type="f32";wgSize=[128,1,1\]]
|
||||
|
||||
@@ -2352,22 +2356,36 @@
|
||||
[:case=35;type="f32";wgSize=[64,2,1\]]
|
||||
|
||||
[:case=360;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=360;type="f16";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=360;type="f32";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=360;type="f32";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=361;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=361;type="f16";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=361;type="f32";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=361;type="f32";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=362;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
@@ -8847,14 +8865,12 @@
|
||||
|
||||
[:case=710;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=710;type="f16";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=710;type="f32";wgSize=[128,1,1\]]
|
||||
@@ -8869,50 +8885,42 @@
|
||||
|
||||
[:case=711;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=711;type="f16";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=711;type="f32";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=711;type="f32";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=712;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=712;type="f16";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=712;type="f32";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=712;type="f32";wgSize=[64,2,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=713;type="f16";wgSize=[128,1,1\]]
|
||||
@@ -8929,8 +8937,7 @@
|
||||
|
||||
[:case=713;type="f32";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:case=713;type="f32";wgSize=[64,2,1\]]
|
||||
@@ -9543,7 +9550,7 @@
|
||||
|
||||
[:case=737;type="f16";wgSize=[128,1,1\]]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -250,6 +250,8 @@
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
|
||||
[:format="depth24plus";aspect="all";samples=4]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
|
||||
[:format="depth24plus-stencil8";aspect="depth-only";samples=1]
|
||||
expected:
|
||||
@@ -257,19 +259,23 @@
|
||||
|
||||
[:format="depth24plus-stencil8";aspect="depth-only";samples=4]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, FAIL]
|
||||
if os == "win": [PASS, FAIL]
|
||||
|
||||
[:format="depth24plus-stencil8";aspect="stencil-only";samples=1]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, FAIL]
|
||||
if os == "win": [PASS, FAIL]
|
||||
|
||||
[:format="depth24plus-stencil8";aspect="stencil-only";samples=4]
|
||||
expected:
|
||||
if os == "win" and not debug: [PASS, FAIL]
|
||||
if os == "win": [PASS, FAIL]
|
||||
|
||||
[:format="depth32float";aspect="all";samples=1]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
|
||||
[:format="depth32float";aspect="all";samples=4]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
|
||||
[:format="depth32float-stencil8";aspect="depth-only";samples=1]
|
||||
expected:
|
||||
|
||||
@@ -4647,20 +4647,17 @@
|
||||
|
||||
[:stage="f";format="bgra8unorm-srgb";filt="linear";mode="c"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="bgra8unorm-srgb";filt="linear";mode="m"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="bgra8unorm-srgb";filt="linear";mode="r"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="bgra8unorm-srgb";filt="nearest";mode="c"]
|
||||
@@ -5070,74 +5067,62 @@
|
||||
|
||||
[:stage="f";format="r16float";filt="linear";mode="c"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16float";filt="linear";mode="m"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16float";filt="linear";mode="r"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16float";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16float";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16float";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16sint";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16sint";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16sint";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16uint";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16uint";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r16uint";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="r32float";filt="linear";mode="c"]
|
||||
@@ -5371,8 +5356,7 @@
|
||||
|
||||
[:stage="f";format="rg16uint";filt="nearest";mode="c"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="rg16uint";filt="nearest";mode="m"]
|
||||
@@ -5383,8 +5367,7 @@
|
||||
|
||||
[:stage="f";format="rg16uint";filt="nearest";mode="r"]
|
||||
expected:
|
||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="f";format="rg32float";filt="linear";mode="c"]
|
||||
@@ -8512,6 +8495,7 @@
|
||||
[:stage="v";format="rgba16sint";filt="nearest";mode="m"]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
@@ -8567,13 +8551,21 @@
|
||||
expected: [TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="v";format="rgba32uint";filt="nearest";mode="c"]
|
||||
expected: [TIMEOUT, NOTRUN]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="v";format="rgba32uint";filt="nearest";mode="m"]
|
||||
expected: [TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="v";format="rgba32uint";filt="nearest";mode="r"]
|
||||
expected: [TIMEOUT, NOTRUN]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
if os == "linux": [TIMEOUT, NOTRUN]
|
||||
if os == "mac": [TIMEOUT, NOTRUN]
|
||||
|
||||
[:stage="v";format="rgba8sint";filt="nearest";mode="c"]
|
||||
expected:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "win" and debug: CRASH
|
||||
if os == "win" and debug: [OK, CRASH]
|
||||
if os == "linux" and debug: [OK, CRASH]
|
||||
if os == "mac": CRASH
|
||||
[:stage="c";format="depth16unorm";filt="linear";modeU="c";modeV="c";offset=false]
|
||||
|
||||
@@ -275,9 +275,7 @@
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "win" and debug: CRASH
|
||||
if os == "linux" and debug: CRASH
|
||||
if os == "mac": CRASH
|
||||
if debug: CRASH
|
||||
[:stage="c";format="depth16unorm";viewDimension="cube";mode="c"]
|
||||
expected:
|
||||
if not debug: FAIL
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,i32_conversion:abstract_float:*]
|
||||
implementation-status: backlog
|
||||
[:inputSource="const";vectorize="_undef_"]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=2]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=3]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=4]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,i32_conversion:abstract_int:*]
|
||||
@@ -98,65 +93,54 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,i32_conversion:f32:*]
|
||||
implementation-status:
|
||||
if os == "linux": backlog
|
||||
if os == "mac": backlog
|
||||
implementation-status: backlog
|
||||
[:inputSource="const";vectorize="_undef_"]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=2]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=3]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=4]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize=2]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize=3]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize=4]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize=2]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize=3]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize=4]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=2]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=3]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=4]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,i32_conversion:i32:*]
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,u32_conversion:abstract_float:*]
|
||||
implementation-status: backlog
|
||||
[:inputSource="const";vectorize="_undef_"]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=2]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=3]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=4]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,u32_conversion:abstract_int:*]
|
||||
@@ -60,8 +55,6 @@
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,u32_conversion:f16:*]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:inputSource="const";vectorize="_undef_"]
|
||||
|
||||
[:inputSource="const";vectorize=2]
|
||||
@@ -87,8 +80,12 @@
|
||||
[:inputSource="storage_rw";vectorize=4]
|
||||
|
||||
[:inputSource="uniform";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=2]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=3]
|
||||
|
||||
@@ -96,65 +93,54 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,u32_conversion:f32:*]
|
||||
implementation-status:
|
||||
if os == "linux": backlog
|
||||
if os == "mac": backlog
|
||||
implementation-status: backlog
|
||||
[:inputSource="const";vectorize="_undef_"]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=2]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=3]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="const";vectorize=4]
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize=2]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize=3]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_r";vectorize=4]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize=2]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize=3]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="storage_rw";vectorize=4]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize="_undef_"]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
if os == "mac": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=2]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=3]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
[:inputSource="uniform";vectorize=4]
|
||||
expected:
|
||||
if os == "linux": FAIL
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,expression,unary,u32_conversion:i32:*]
|
||||
|
||||
@@ -25,9 +25,7 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,limits:nesting_depth_braces:*]
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status: backlog
|
||||
[:]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,execution,limits:nesting_depth_composite_array:*]
|
||||
|
||||
@@ -57,8 +57,6 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,decl,override:type:*]
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
[:case="abs_float_conversion"]
|
||||
|
||||
[:case="abs_int_conversion"]
|
||||
@@ -70,8 +68,6 @@
|
||||
[:case="bool"]
|
||||
|
||||
[:case="f16"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:case="f32"]
|
||||
|
||||
|
||||
@@ -1654,6 +1654,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,binary,add_sub_mul:scalar_vector_out_of_range:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:op="add";lhs="f16";rhs="f16"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -1736,6 +1736,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,binary,div_rem:scalar_vector_out_of_range:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:op="div";lhs="f16";rhs="f16"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,abs:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -113,6 +113,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acos:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected:
|
||||
if os == "win" and debug: [PASS, FAIL]
|
||||
|
||||
@@ -67,6 +67,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acosh:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asin:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
|
||||
[:stage="constant";type="abstract-int"]
|
||||
|
||||
@@ -67,6 +67,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asinh:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -67,6 +67,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -231,6 +231,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -75,6 +75,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atanh:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
|
||||
[:stage="constant";type="abstract-int"]
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ceil:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:low_high:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:type="f16";lowStage="constant";highStage="constant"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
@@ -533,6 +535,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cos:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cosh:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
|
||||
[:stage="constant";type="abstract-int"]
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cross:must_use:*]
|
||||
implementation-status: backlog
|
||||
[:use=false]
|
||||
expected: FAIL
|
||||
|
||||
[:use=true]
|
||||
expected: FAIL
|
||||
@@ -39,6 +38,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cross:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
@@ -50,11 +51,13 @@
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:stage="constant";type="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:stage="override";type="vec3%3Cf16%3E"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
[:stage="override";type="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,degrees:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -67,6 +67,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,distance:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,dot:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp2:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -91,6 +91,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,faceForward:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,floor:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -90,6 +90,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,fma:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,fract:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,inverseSqrt:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -156,6 +156,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ldexp:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";typeA="abstract-float";typeB="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:scalar:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
@@ -79,6 +81,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec2:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
@@ -102,6 +106,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec3:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
@@ -126,6 +132,8 @@
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec4:*]
|
||||
tags: [webgpu, webgpu-long]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log2:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,max:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,min:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -91,6 +91,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,mix:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,modf:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,normalize:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -90,6 +90,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,pow:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,radians:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,reflect:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -163,6 +163,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,refract:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,round:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,saturate:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sign:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sin:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sinh:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
|
||||
[:stage="constant";type="abstract-int"]
|
||||
|
||||
@@ -152,6 +152,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,smoothstep:partial_eval_errors:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:lowStage="constant";highStage="constant";type="f16"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
@@ -387,6 +389,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,smoothstep:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sqrt:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,step:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tan:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tanh:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,774 +1,563 @@
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,textureDimensions:level_argument,non_storage:*]
|
||||
implementation-status: backlog
|
||||
[:textureType="texture_1d";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_1d";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="f16"]
|
||||
|
||||
[:textureType="texture_1d";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="i32"]
|
||||
|
||||
[:textureType="texture_1d";levelType="u32"]
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_1d";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_2d";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="f16"]
|
||||
|
||||
[:textureType="texture_2d";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="i32"]
|
||||
|
||||
[:textureType="texture_2d";levelType="u32"]
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="f16"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="i32"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="u32"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_2d_array";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_3d";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="f16"]
|
||||
|
||||
[:textureType="texture_3d";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="i32"]
|
||||
|
||||
[:textureType="texture_3d";levelType="u32"]
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_3d";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_cube";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="f16"]
|
||||
|
||||
[:textureType="texture_cube";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="i32"]
|
||||
|
||||
[:textureType="texture_cube";levelType="u32"]
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="f16"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="i32"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="u32"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_cube_array";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="f16"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="i32"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="u32"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="f16"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="i32"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="u32"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_2d_array";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="f16"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="i32"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="u32"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="abstract-int"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="f16"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="f32"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="i32"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="u32"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec2%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec3%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Cabstract-float%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Cabstract-int%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Cbool%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Cf16%3E"]
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Cf32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Ci32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
[:textureType="texture_depth_cube_array";levelType="vec4%3Cu32%3E"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,textureDimensions:must_use:*]
|
||||
|
||||
@@ -1071,6 +1071,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,transpose:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="mat2x2%3Cf16%3E"]
|
||||
expected:
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,trunc:values:*]
|
||||
implementation-status: backlog
|
||||
expected:
|
||||
if os == "mac": CRASH
|
||||
[:stage="constant";type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -452,9 +452,9 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:scalar_zero_value:*]
|
||||
implementation-status: backlog
|
||||
implementation-status:
|
||||
if os == "mac": backlog
|
||||
[:type="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="f16"]
|
||||
expected:
|
||||
@@ -506,7 +506,6 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:vector_copy:*]
|
||||
implementation-status: backlog
|
||||
[:decl_type="abstract-float";value_type="abstract-float"]
|
||||
|
||||
[:decl_type="abstract-float";value_type="abstract-int"]
|
||||
@@ -536,10 +535,8 @@
|
||||
[:decl_type="abstract-int";value_type="u32"]
|
||||
|
||||
[:decl_type="bool";value_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:decl_type="bool";value_type="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
[:decl_type="bool";value_type="bool"]
|
||||
|
||||
@@ -580,7 +577,6 @@
|
||||
[:decl_type="f32";value_type="u32"]
|
||||
|
||||
[:decl_type="i32";value_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:decl_type="i32";value_type="abstract-int"]
|
||||
|
||||
@@ -595,7 +591,6 @@
|
||||
[:decl_type="i32";value_type="u32"]
|
||||
|
||||
[:decl_type="u32";value_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:decl_type="u32";value_type="abstract-int"]
|
||||
|
||||
@@ -611,12 +606,9 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:vector_elementwise:*]
|
||||
implementation-status: backlog
|
||||
[:type="abstract-float";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-float";ele_type="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-float";ele_type="bool"]
|
||||
|
||||
@@ -637,10 +629,8 @@
|
||||
[:type="abstract-float";ele_type="vec3f"]
|
||||
|
||||
[:type="abstract-int";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-int";ele_type="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-int";ele_type="bool"]
|
||||
|
||||
@@ -772,12 +762,9 @@
|
||||
|
||||
|
||||
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,value_constructor:vector_mixed:*]
|
||||
implementation-status: backlog
|
||||
[:type="abstract-float";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-float";ele_type="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-float";ele_type="bool"]
|
||||
|
||||
@@ -790,10 +777,8 @@
|
||||
[:type="abstract-float";ele_type="u32"]
|
||||
|
||||
[:type="abstract-int";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-int";ele_type="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="abstract-int";ele_type="bool"]
|
||||
|
||||
@@ -923,8 +908,10 @@
|
||||
[:type="abstract-int";ele_type="vec3f"]
|
||||
|
||||
[:type="bool";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="bool";ele_type="abstract-int"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="bool";ele_type="bool"]
|
||||
|
||||
@@ -1007,6 +994,7 @@
|
||||
[:type="f32";ele_type="vec3f"]
|
||||
|
||||
[:type="i32";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="i32";ele_type="abstract-int"]
|
||||
|
||||
@@ -1034,6 +1022,7 @@
|
||||
[:type="i32";ele_type="vec3f"]
|
||||
|
||||
[:type="u32";ele_type="abstract-float"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="u32";ele_type="abstract-int"]
|
||||
|
||||
@@ -1070,7 +1059,6 @@
|
||||
expected: FAIL
|
||||
|
||||
[:type="bool"]
|
||||
expected: FAIL
|
||||
|
||||
[:type="f16"]
|
||||
expected:
|
||||
|
||||
@@ -1683,11 +1683,8 @@
|
||||
|
||||
[:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false]
|
||||
expected:
|
||||
if os == "win" and debug: [TIMEOUT, NOTRUN]
|
||||
if os == "win" and not debug: [PASS, 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 debug: [TIMEOUT, NOTRUN]
|
||||
if not debug: [PASS, TIMEOUT, NOTRUN]
|
||||
|
||||
[:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true]
|
||||
expected:
|
||||
|
||||
1
third_party/rust/bytemuck/.cargo-checksum.json
vendored
Normal file
1
third_party/rust/bytemuck/.cargo-checksum.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"files":{"Cargo.lock":"3cbd32854b2e798d7ba553ed70b875fd8ef1ba3b4d9ab29ee63c18d02ac4112e","Cargo.toml":"f13bc608a2ef6f83704f5b8da6b69f4eef9f64c24c9ceb03aab81b076703256a","LICENSE-APACHE":"870e20c217d15bcfcbe53d7c5867cd8fac44a4ca0b41fc1eb843557e16063eba","LICENSE-MIT":"0b2d108c9c686a74ac312990ee8377902756a2a081a7af3b0f9d68abf0a8f1a1","LICENSE-ZLIB":"682b4c81b85e83ce6cc6e1ace38fdd97aeb4de0e972bd2b44aa0916c54af8c96","README.md":"167493de1f1ad16d13c778494ae344cd71306622c89d19002eaf7f4185c1f728","changelog.md":"1ae85df3890cf5833836e1469953fe2f9f160cb50c63621471fd84d1fbfd69c5","rustfmt.toml":"f4c215534437936f924c937dbb1677f614761589300d6b389f3b518b3eb551b8","src/allocation.rs":"4d65e51a5d23963f60d11b8e95ae013de479c325088271bf1dba66c2f0afbb58","src/anybitpattern.rs":"172bcc22ba7b38a9a36e34d0aa5efc8716bba77569a3c142f16f8103046f1d45","src/checked.rs":"35f69278bf0106ce2855bff48ae3aeb125a54c3ee4afb123cbfe135d518e68c0","src/contiguous.rs":"bb340c0f20a06aa725bb625edcb493146ba64980fd1fd9e450654aa37384c564","src/internal.rs":"2b5b4fdc1a5d14462dd604ca1f4f23116f40639d7d8b4c1a7189ce276edd8272","src/lib.rs":"a6508d7ae80172dc88d9cba824387ab29783646c444b7be64b3f56f2bdb592e1","src/must.rs":"fed78b2a4dac5ef6758bab53a4f3bcabd8da071854bcc07dc70a255b327ec64c","src/no_uninit.rs":"4ab2f5ed29bff0b33630661154eb548f3e55581bfcf576a90397b7f8d5323201","src/offset_of.rs":"2afd190ef0462b30ade786fe813a91e7bf41cc2fa99a1d79002cbafab5964f37","src/pod.rs":"78c6a45ccefde5ebb715a8ac62e2cd5f45e808b1d0640f47a8a7427acd584a73","src/pod_in_option.rs":"73bbe1d69f32d909695ce26d131aa2d81eaa31e2b4532256ebfe1a6ba68675c1","src/transparent.rs":"5e555d6d83f5fe215ce2dbc949e87977aa92ab8d6f7a9be8479f63fdeda2359f","src/zeroable.rs":"80e24c607f240e6b18294e32c9a258d22da51318588396bbcf236c88eb6753f3","src/zeroable_in_option.rs":"f74799ac3eee50116ec63a0ae4d3e351e0ab7ac807d01b4b59027bf6a68d6de6","tests/array_tests.rs":"98ca7a0dcd93e65f70d4db19643e707cafae5a249561ab151998cedb89b2e036","tests/cast_slice_tests.rs":"1869416e833757f603765afbf48152a6d32a100316529eb494b48fca6c5a8899","tests/checked_tests.rs":"27965acf20e46482b09ee56aaa2536868821be651a3b95052f40e554ecde9917","tests/derive.rs":"93b5ab70ecdd726811af9dee1702e23e964b8ceac59f727889f6a2678ad90d65","tests/doc_tests.rs":"f20708319fde62d8957909d51ee976fce394ad0891ebc4bbcf336ab026a34092","tests/offset_of_tests.rs":"fb5f91e17f984050969f8b06f1de58b5c1e80802c5deb992d3188f5ec274690f","tests/std_tests.rs":"967d4fb4cae24a374633c9b68f1ff65f86ba4c8a0e980adfe69dcaf60a9049c2","tests/transparent.rs":"ecef6e0987e28121b480942e58ce4534f13fe35667bde7f5c6e04e590b02f6a3","tests/wrapper_forgets.rs":"c6330546f6aa696245625056e7323b3916e3fb1a9fbecefe9c9e62d3726812d9"},"package":"b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"}
|
||||
56
third_party/rust/bytemuck/Cargo.lock
generated
vendored
Normal file
56
third_party/rust/bytemuck/Cargo.lock
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.22.0"
|
||||
dependencies = [
|
||||
"bytemuck_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck_derive"
|
||||
version = "1.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.48"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||
141
third_party/rust/bytemuck/Cargo.toml
vendored
Normal file
141
third_party/rust/bytemuck/Cargo.toml
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
|
||||
#
|
||||
# When uploading crates to the registry Cargo will automatically
|
||||
# "normalize" Cargo.toml files for maximal compatibility
|
||||
# with all versions of Cargo and also rewrite `path` dependencies
|
||||
# to registry (e.g., crates.io) dependencies.
|
||||
#
|
||||
# If you are reading this file be aware that the original Cargo.toml
|
||||
# will likely look very different (and much more reasonable).
|
||||
# See Cargo.toml.orig for the original contents.
|
||||
|
||||
[package]
|
||||
edition = "2018"
|
||||
name = "bytemuck"
|
||||
version = "1.22.0"
|
||||
authors = ["Lokathor <zefria@gmail.com>"]
|
||||
build = false
|
||||
exclude = ["/pedantic.bat"]
|
||||
autolib = false
|
||||
autobins = false
|
||||
autoexamples = false
|
||||
autotests = false
|
||||
autobenches = false
|
||||
description = "A crate for mucking around with piles of bytes."
|
||||
readme = "README.md"
|
||||
keywords = [
|
||||
"transmute",
|
||||
"bytes",
|
||||
"casting",
|
||||
]
|
||||
categories = [
|
||||
"encoding",
|
||||
"no-std",
|
||||
]
|
||||
license = "Zlib OR Apache-2.0 OR MIT"
|
||||
repository = "https://github.com/Lokathor/bytemuck"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
features = [
|
||||
"nightly_docs",
|
||||
"latest_stable_rust",
|
||||
"extern_crate_alloc",
|
||||
"extern_crate_std",
|
||||
]
|
||||
|
||||
[package.metadata.playground]
|
||||
features = [
|
||||
"latest_stable_rust",
|
||||
"extern_crate_alloc",
|
||||
"extern_crate_std",
|
||||
]
|
||||
|
||||
[features]
|
||||
aarch64_simd = []
|
||||
align_offset = []
|
||||
alloc_uninit = []
|
||||
avx512_simd = []
|
||||
const_zeroed = []
|
||||
derive = ["bytemuck_derive"]
|
||||
extern_crate_alloc = []
|
||||
extern_crate_std = ["extern_crate_alloc"]
|
||||
latest_stable_rust = [
|
||||
"aarch64_simd",
|
||||
"avx512_simd",
|
||||
"align_offset",
|
||||
"alloc_uninit",
|
||||
"const_zeroed",
|
||||
"derive",
|
||||
"min_const_generics",
|
||||
"must_cast",
|
||||
"must_cast_extra",
|
||||
"pod_saturating",
|
||||
"track_caller",
|
||||
"transparentwrapper_extra",
|
||||
"wasm_simd",
|
||||
"zeroable_atomics",
|
||||
"zeroable_maybe_uninit",
|
||||
]
|
||||
min_const_generics = []
|
||||
must_cast = []
|
||||
must_cast_extra = ["must_cast"]
|
||||
nightly_docs = []
|
||||
nightly_float = []
|
||||
nightly_portable_simd = []
|
||||
nightly_stdsimd = []
|
||||
pod_saturating = []
|
||||
track_caller = []
|
||||
transparentwrapper_extra = []
|
||||
unsound_ptr_pod_impl = []
|
||||
wasm_simd = []
|
||||
zeroable_atomics = []
|
||||
zeroable_maybe_uninit = []
|
||||
|
||||
[lib]
|
||||
name = "bytemuck"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[[test]]
|
||||
name = "array_tests"
|
||||
path = "tests/array_tests.rs"
|
||||
|
||||
[[test]]
|
||||
name = "cast_slice_tests"
|
||||
path = "tests/cast_slice_tests.rs"
|
||||
|
||||
[[test]]
|
||||
name = "checked_tests"
|
||||
path = "tests/checked_tests.rs"
|
||||
|
||||
[[test]]
|
||||
name = "derive"
|
||||
path = "tests/derive.rs"
|
||||
|
||||
[[test]]
|
||||
name = "doc_tests"
|
||||
path = "tests/doc_tests.rs"
|
||||
|
||||
[[test]]
|
||||
name = "offset_of_tests"
|
||||
path = "tests/offset_of_tests.rs"
|
||||
|
||||
[[test]]
|
||||
name = "std_tests"
|
||||
path = "tests/std_tests.rs"
|
||||
|
||||
[[test]]
|
||||
name = "transparent"
|
||||
path = "tests/transparent.rs"
|
||||
|
||||
[[test]]
|
||||
name = "wrapper_forgets"
|
||||
path = "tests/wrapper_forgets.rs"
|
||||
|
||||
[dependencies.bytemuck_derive]
|
||||
version = "1.4.1"
|
||||
optional = true
|
||||
|
||||
[lints.rust.unexpected_cfgs]
|
||||
level = "deny"
|
||||
priority = 0
|
||||
check-cfg = ['cfg(target_arch, values("spirv"))']
|
||||
61
third_party/rust/bytemuck/LICENSE-APACHE
vendored
Normal file
61
third_party/rust/bytemuck/LICENSE-APACHE
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
9
third_party/rust/bytemuck/LICENSE-MIT
vendored
Normal file
9
third_party/rust/bytemuck/LICENSE-MIT
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Daniel "Lokathor" Gee.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
11
third_party/rust/bytemuck/LICENSE-ZLIB
vendored
Normal file
11
third_party/rust/bytemuck/LICENSE-ZLIB
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
Copyright (c) 2019 Daniel "Lokathor" Gee.
|
||||
|
||||
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
60
third_party/rust/bytemuck/README.md
vendored
Normal file
60
third_party/rust/bytemuck/README.md
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
* **[Latest Docs.rs Here](https://docs.rs/bytemuck/)**
|
||||
|
||||
[](https://opensource.org/licenses/Zlib)
|
||||

|
||||
[](https://crates.io/crates/bytemuck)
|
||||
|
||||
# bytemuck
|
||||
|
||||
A crate for mucking around with piles of bytes.
|
||||
|
||||
This crate lets you safely perform "bit cast" operations between data types.
|
||||
That's where you take a value and just reinterpret the bits as being some other
|
||||
type of value, without changing the bits.
|
||||
|
||||
* This is **not** like the [`as` keyword][keyword-as]
|
||||
* This is **not** like the [`From` trait][from-trait]
|
||||
* It is **most like** [`f32::to_bits`][f32-to_bits], just generalized to let you
|
||||
convert between all sorts of data types.
|
||||
|
||||
[keyword-as]: https://doc.rust-lang.org/nightly/std/keyword.as.html
|
||||
[from-trait]: https://doc.rust-lang.org/nightly/core/convert/trait.From.html
|
||||
[f32-to_bits]: https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.to_bits
|
||||
|
||||
### Here's the part you're more likely to care about: *you can do this with slices too!*
|
||||
|
||||
When a slice is involved it's not a *direct* bitcast. Instead, the `cast_slice`
|
||||
and `cast_slice_mut` functions will pull apart a slice's data and give you a new
|
||||
slice that's the same span of memory just viewed as the new type. If the size of
|
||||
the slice's element changes then the length of the slice you get back will be
|
||||
changed accordingly.
|
||||
|
||||
This lets you cast a slice of color values into a slice of `u8` and send it to
|
||||
the GPU, or things like that. I'm sure there's other examples, but honestly this
|
||||
crate is as popular as it is mostly because of Rust's 3D graphics community
|
||||
wanting to cast slices of different types into byte slices for sending to the
|
||||
GPU. Hi friends! Push those vertices, or whatever it is that you all do.
|
||||
|
||||
## See Also
|
||||
|
||||
While `bytemuck` is full of unsafe code, I've also started a "sibling crate"
|
||||
called [bitfrob](https://docs.rs/bitfrob/latest/bitfrob/), which is where
|
||||
operations that are 100% safe will be added.
|
||||
|
||||
## Stability
|
||||
|
||||
* The crate is 1.0 and I consider this it to be "basically done". New features
|
||||
are usually being accepted when other people want to put in the work, but
|
||||
myself I wanna move on to using `bytemuck` in bigger projects.
|
||||
* The default build of the `bytemuck` crate will continue to work with `rustc-1.34`
|
||||
for at least the rest of the `1.y.z` versions.
|
||||
* Any other cargo features of the crate **are not** held to the same standard, and
|
||||
may work only on the latest Stable or even only on latest Nightly.
|
||||
|
||||
**Future Plans:** Once the [Safe Transmute Project][pg-st] completes and
|
||||
stabilizes ("eventually") this crate will be updated to use that as the
|
||||
underlying mechanism for transmutation bounds, and a 2.0 version of `bytemuck`
|
||||
will be released. The hope is for the 1.0 to 2.0 transition to be as seamless as
|
||||
possible, but the future is always uncertain.
|
||||
|
||||
[pg-st]: https://rust-lang.github.io/rfcs/2835-project-safe-transmute.html
|
||||
363
third_party/rust/bytemuck/changelog.md
vendored
Normal file
363
third_party/rust/bytemuck/changelog.md
vendored
Normal file
@@ -0,0 +1,363 @@
|
||||
# `bytemuck` changelog
|
||||
|
||||
## 1.22
|
||||
|
||||
* Add the `pod_saturating` feature, which adds `Pod` impls for `Saturating<T>`
|
||||
when `T` is already `Pod`.
|
||||
* A bump in the minimum `bytemuck_derive` dependency from 1.4.0 to 1.4.1 to
|
||||
avoid a bug if you have a truly ancient `cargo.lock` file sitting around.
|
||||
* Adds `Send` and `Sync` impls to `BoxBytes`.
|
||||
|
||||
## 1.21
|
||||
|
||||
* Implement `Pod` and `Zeroable` for `core::arch::{x86, x86_64}::__m512`, `__m512d` and `__m512i` without nightly.
|
||||
Requires Rust 1.72, and is gated through the `avx512_simd` cargo feature.
|
||||
* Allow the use of `must_cast_mut` and `must_cast_slice_mut` in const contexts.
|
||||
Requires Rust 1.83, and is gated through the `must_cast_extra` cargo feature.
|
||||
* internal: introduced the `maybe_const_fn` macro that allows defining some function
|
||||
to be const depending upon some `cfg` predicate.
|
||||
|
||||
## 1.20
|
||||
|
||||
* New functions to allocate zeroed `Arc` and `Rc`. Requires Rust 1.82
|
||||
* `TransparentWrapper` impls for `core::cmp::Reverse` and `core::num::Saturating`.
|
||||
* internal: Simplified the library's `fill_zeroes` calls to `write_bytes`
|
||||
|
||||
## 1.19
|
||||
|
||||
* Adds the `#[track_caller]` attribute to functions which may panic.
|
||||
|
||||
## 1.18
|
||||
|
||||
* Adds the `latest_stable_rust` cargo feature, which is a blanket feature that turns all other features on that are both sound and compatible with Stable rust.
|
||||
|
||||
## 1.17.1
|
||||
|
||||
* Adds `#[repr(C)]` to the `union Transmute<A, B>` type that's used internally
|
||||
for most of the transmutations.
|
||||
|
||||
## 1.17.0
|
||||
|
||||
* Makes the `must_cast` versions of the by-value and by-ref casts be `const`.
|
||||
The mut ref cast is unaffected for now (mut references aren't yet stable in `const fn`).
|
||||
This increases the MSRV of using that particular feature from 1.57 to 1.64.
|
||||
|
||||
## 1.16.3
|
||||
|
||||
* Fully described in https://github.com/Lokathor/bytemuck/pull/256, This makes
|
||||
casting slices to/from ZST elements more consistent between the crate's core
|
||||
module and other modules.
|
||||
|
||||
## 1.16.2
|
||||
|
||||
* Fixes potential UB where `BoxBytes` could attempt to free a dangling pointer
|
||||
if the `Layout` is zero sized. This type was introduced in 1.14.1, so that
|
||||
version and the others up to and including 1.16.1 are now yanked for safety.
|
||||
|
||||
## 1.16.1
|
||||
|
||||
* **NOT SEMVER SUPPORTED:** Adds the `nightly_float` Cargo feature. This
|
||||
activates the `f16` and `f128` nightly features, and then provides `Zeroable`
|
||||
and `Pod` impls for those types.
|
||||
|
||||
## 1.16.0
|
||||
|
||||
* Adds a `const_zeroed` feature (MSRV 1.75) which puts a `zeroed` fn at the crate root.
|
||||
This is just like the `Zeroable::zeroed` method, but as a `const fn`.
|
||||
|
||||
## 1.15.0
|
||||
|
||||
This primarily relaxes the bounds on a `From` impl.
|
||||
|
||||
Previously:
|
||||
|
||||
> `impl<T: NoUninit> From<Box<T>> for BoxBytes`
|
||||
|
||||
Now:
|
||||
|
||||
> `impl<T: ?Sized + sealed::BoxBytesOf> From<Box<T>> for BoxBytes`
|
||||
|
||||
All related functions and methods are similarly updated.
|
||||
|
||||
We believe this to be backwards compatible with all previous uses,
|
||||
and now `BoxBytes` can be converted to/from more types than before.
|
||||
|
||||
## 1.14.3
|
||||
|
||||
* The new std simd nightly features are apparently arch-specific.
|
||||
This adjusts the feature activation to be x86/ x86_64 only.
|
||||
|
||||
## 1.14.2
|
||||
|
||||
* Changes the name of the Nightly feature activated by the crate's
|
||||
`nightly_stdsimd` feature. This is needed as of (approximately) Nightly
|
||||
2024-02-06 and later, because the Nightly feature was changed.
|
||||
|
||||
## 1.14.1
|
||||
|
||||
* docs clarifications.
|
||||
|
||||
## 1.14
|
||||
|
||||
* `write_zeroes` and `fill_zeroes` functions: Writes (to one) or fills (a slice)
|
||||
zero bytes to all bytes covered by the provided reference. If your type has
|
||||
padding, this will even zero out the padding bytes.
|
||||
* `align_offset` feature: causes pointer alignment checks to use the
|
||||
`align_offset` pointer method rather than as-casting the pointer to `usize`.
|
||||
This *may* improve codegen, if the compiler would have otherwise thought that
|
||||
the pointer address escaped. No formal benchmarks have been done either way.
|
||||
* `must_cast` feature: Adds `must_*` family of functions. These functions will
|
||||
fail to compile if the cast requested can't be statically known to succeed.
|
||||
The error messages can be kinda bad when this happens, but eliminating the
|
||||
possibility of a runtime error might be worth it to you.
|
||||
|
||||
## 1.13.1
|
||||
|
||||
* Remove the requirement for the *source* data type to be `AnyBitPattern` on
|
||||
`pod_collect_to_vec`, allowing you to pod collect vecs of `char` into vecs of
|
||||
`u32`, or whatever.
|
||||
|
||||
## 1.13
|
||||
|
||||
* Now depends on `bytemuck_derive-1.4.0`
|
||||
* Various small enhancements that would have been patch version updates, but
|
||||
which have been rolled into this minor version update.
|
||||
|
||||
## 1.12.4
|
||||
|
||||
* This has additional impls for existing traits and cleans up some internal code,
|
||||
but there's no new functions so I guess it counts as just a patch release.
|
||||
|
||||
## 1.12.3
|
||||
|
||||
* This bugfix makes the crate do stuff with `Arc` or not based on the
|
||||
`target_has_atomic` config. Previously, some targets that have allocation but
|
||||
not atomics were getting errors. This raises the MSRV of the
|
||||
`extern_crate_alloc` feature to 1.60, but opt-in features are *not* considered
|
||||
to be hard locked to 1.34 like the basic build of the crate is.
|
||||
|
||||
## 1.12.2
|
||||
|
||||
* Fixes `try_pod_read_unaligned` bug that made it always fail unless the target
|
||||
type was exactly pointer sized in which case UB *could* happen. The
|
||||
`CheckedBitPattern::is_valid_bit_pattern` was being asked to check that a
|
||||
*reference* to the `pod` value was a valid bit pattern, rather than the actual
|
||||
bit pattern itself, and so the check could in some cases be illegally
|
||||
bypassed.
|
||||
|
||||
## 1.12.1
|
||||
|
||||
* Patch bumped the required `bytemuck_derive` version because of a regression in
|
||||
how it handled `align(N)` attributes.
|
||||
|
||||
## 1.12
|
||||
|
||||
* This minor version bump is caused by a version bump in our `bytemuck_derive`
|
||||
dependency, which is in turn caused by a mixup in the minimum version of `syn`
|
||||
that `bytemuck_derive` uses. See [Issue
|
||||
122](https://github.com/Lokathor/bytemuck/issues/122). There's not any
|
||||
specific "new" API as you might normally expect from a minor version bump.
|
||||
* [pali](https://github.com/pali6) fixed a problem with SPIR-V builds being
|
||||
broken. The error handling functions were trying to be generic over `Display`,
|
||||
which the error types normally support, except on SPIR-V targets (which run on
|
||||
the GPU and don't have text formatting).
|
||||
|
||||
## 1.11
|
||||
|
||||
* [WaffleLapkin](https://github.com/WaffleLapkin) added `wrap_box` and `peel_box`
|
||||
to the `TransparentWrapperAlloc` trait. Default impls of these functions are
|
||||
provided, and (as usual with the transparent trait stuff) you should not override
|
||||
the default versions.
|
||||
|
||||
## 1.10
|
||||
|
||||
* [TheEdward162](https://github.com/TheEdward162) added the `ZeroableInOption`
|
||||
and `PodInOption` traits. These are for types that are `Zeroable` or `Pod`
|
||||
*when in an option*, but not on their own. We provide impls for the various
|
||||
"NonZeroINTEGER" types in `core`, and if you need to newtype a NonZero value
|
||||
then you can impl these traits when you use `repr(transparent)`.
|
||||
|
||||
## 1.9.1
|
||||
|
||||
* Bumped the minimum `bytemuck_derive` dependency version from `1.0` to `1.1`.
|
||||
The fact that `bytemuck` and `bytemuck_derive` are separate crates at all is
|
||||
an unfortunate technical limit of current Rust, woe and calamity.
|
||||
|
||||
## 1.9.0
|
||||
|
||||
* [fu5ha](https://github.com/fu5ha) added the `NoUninit`, `AnyBitPattern`, and
|
||||
`CheckedBitPattern` traits. This allows for a more fine-grained level of
|
||||
detail in what casting operations are allowed for a type. Types that already
|
||||
implement `Zeroable` and `Pod` will have a blanket impl for these new traits.
|
||||
This is a "preview" of the direction that the crate will probably go in the
|
||||
eventual 2.0 version. We're still waiting on [Project Safe
|
||||
Transmute](https://github.com/rust-lang/project-safe-transmute) for an actual
|
||||
2.0 version of the crate, but until then please enjoy this preview.
|
||||
* Also Fusha added better support for `union` types in the derive macros. I
|
||||
still don't know how any of the proc-macro stuff works at all, so please
|
||||
direct questions to her.
|
||||
|
||||
## 1.8.0
|
||||
|
||||
* `try_pod_read_unaligned` and `pod_read_unaligned` let you go from `&[u8]` to
|
||||
`T:Pod` without worrying about alignment.
|
||||
|
||||
## 1.7.3
|
||||
|
||||
* Experimental support for the `portable_simd` language extension under the
|
||||
`nightly_portable_simd` cargo feature. As the name implies, this is an
|
||||
experimental crate feature and it's **not** part of the semver contract. All
|
||||
it does is add the appropriate `Zeroable` and `Pod` impls.
|
||||
|
||||
## 1.7.2
|
||||
|
||||
* Why does this repo keep being hit with publishing problems? What did I do to
|
||||
deserve this curse, Ferris? This doesn't ever happen with tinyvec or fermium,
|
||||
only bytemuck.
|
||||
|
||||
## 1.7.1
|
||||
|
||||
* **Soundness Fix:** The wrap/peel methods for owned value conversion, added to
|
||||
`TransparentWrapper` in 1.6, can cause a double-drop if used with types that
|
||||
impl `Drop`. The fix was simply to add a `ManuallyDrop` layer around the value
|
||||
before doing the `transmute_copy` that is used to wrap/peel. While this fix
|
||||
could technically be backported to the 1.6 series, since 1.7 is semver
|
||||
compatible anyway the 1.6 series has simply been yanked.
|
||||
|
||||
## 1.7
|
||||
|
||||
* In response to [Unsafe Code Guidelines Issue
|
||||
#286](https://github.com/rust-lang/unsafe-code-guidelines/issues/286), this
|
||||
version of Bytemuck has a ***Soundness-Required Breaking Change***. This is
|
||||
"allowed" under Rust's backwards-compatibility guidelines, but it's still
|
||||
annoying of course so we're trying to keep the damage minimal.
|
||||
* **The Reason:** It turns out that pointer values should not have been `Pod`. More
|
||||
specifically, `ptr as usize` is *not* the same operation as calling
|
||||
`transmute::<_, usize>(ptr)`.
|
||||
* LLVM has yet to fully sort out their story, but until they do, transmuting
|
||||
pointers can cause miscompilations. They may fix things up in the future,
|
||||
but we're not gonna just wait and have broken code in the mean time.
|
||||
* **The Fix:** The breaking change is that the `Pod` impls for `*const T`,
|
||||
`*mut T`, and `Option<NonNull<T>` are now gated behind the
|
||||
`unsound_ptr_pod_impl` feature, which is off by default.
|
||||
* You are *strongly discouraged* from using this feature, but if a dependency
|
||||
of yours doesn't work when you upgrade to 1.7 because it relied on pointer
|
||||
casting, then you might wish to temporarily enable the feature just to get
|
||||
that dependency to build. Enabled features are global across all users of a
|
||||
given semver compatible version, so if you enable the feature in your own
|
||||
crate, your dependency will also end up getting the feature too, and then
|
||||
it'll be able to compile.
|
||||
* Please move away from using this feature as soon as you can. Consider it to
|
||||
*already* be deprecated.
|
||||
* [PR 65](https://github.com/Lokathor/bytemuck/pull/65)
|
||||
|
||||
## 1.6.3
|
||||
|
||||
* Small goof with an errant `;`, so [PR 69](https://github.com/Lokathor/bytemuck/pull/69)
|
||||
*actually* got things working on SPIR-V.
|
||||
|
||||
## 1.6.2
|
||||
|
||||
cargo upload goof! ignore this one.
|
||||
|
||||
## 1.6.1
|
||||
|
||||
* [DJMcNab](https://github.com/DJMcNab) did a fix so that the crate can build for SPIR-V
|
||||
[PR 67](https://github.com/Lokathor/bytemuck/pull/67)
|
||||
|
||||
## 1.6
|
||||
|
||||
* The `TransparentWrapper` trait now has more methods. More ways to wrap, and
|
||||
now you can "peel" too! Note that we don't call it "unwrap" because that name
|
||||
is too strongly associated with the Option/Result methods.
|
||||
Thanks to [LU15W1R7H](https://github.com/LU15W1R7H) for doing
|
||||
[PR 58](https://github.com/Lokathor/bytemuck/pull/58)
|
||||
* Min Const Generics! Now there's Pod and Zeroable for arrays of any size when
|
||||
you turn on the `min_const_generics` crate feature.
|
||||
[zakarumych](https://github.com/zakarumych) got the work started in
|
||||
[PR 59](https://github.com/Lokathor/bytemuck/pull/59),
|
||||
and [chorman0773](https://github.com/chorman0773) finished off the task in
|
||||
[PR 63](https://github.com/Lokathor/bytemuck/pull/63)
|
||||
|
||||
## 1.5.1
|
||||
|
||||
* Fix `bytes_of` failing on zero sized types.
|
||||
[PR 53](https://github.com/Lokathor/bytemuck/pull/53)
|
||||
|
||||
## 1.5
|
||||
|
||||
* Added `pod_collect_to_vec`, which will gather a slice into a vec,
|
||||
allowing you to change the pod type while also safely ignoring alignment.
|
||||
[PR 50](https://github.com/Lokathor/bytemuck/pull/50)
|
||||
|
||||
## 1.4.2
|
||||
|
||||
* [Kimundi](https://github.com/Kimundi) fixed an issue that could make `try_zeroed_box`
|
||||
stack overflow for large values at low optimization levels.
|
||||
[PR 43](https://github.com/Lokathor/bytemuck/pull/43)
|
||||
|
||||
## 1.4.1
|
||||
|
||||
* [thomcc](https://github.com/thomcc) fixed up the CI and patched over a soundness hole in `offset_of!`.
|
||||
[PR 38](https://github.com/Lokathor/bytemuck/pull/38)
|
||||
|
||||
## 1.4
|
||||
|
||||
* [icewind1991](https://github.com/icewind1991) has contributed the proc-macros
|
||||
for deriving impls of `Pod`, `TransparentWrapper`, `Zeroable`!! Everyone has
|
||||
been waiting for this one folks! It's a big deal. Just enable the `derive`
|
||||
cargo feature and then you'll be able to derive the traits on your types. It
|
||||
generates all the appropriate tests for you.
|
||||
* The `zeroable_maybe_uninit` feature now adds a `Zeroable` impl to the
|
||||
`MaybeUninit` type. This is only behind a feature flag because `MaybeUninit`
|
||||
didn't exist back in `1.34.0` (the minimum rust version of `bytemuck`).
|
||||
|
||||
## 1.3.1
|
||||
|
||||
* The entire crate is now available under the `Apache-2.0 OR MIT` license as
|
||||
well as the previous `Zlib` license
|
||||
[#24](https://github.com/Lokathor/bytemuck/pull/24).
|
||||
* [HeroicKatora](https://github.com/HeroicKatora) added the
|
||||
`try_zeroed_slice_box` function
|
||||
[#10](https://github.com/Lokathor/bytemuck/pull/17). `zeroed_slice_box` is
|
||||
also available.
|
||||
* The `offset_of!` macro now supports a 2-arg version. For types that impl
|
||||
Default, it'll just make an instance using `default` and then call over to the
|
||||
3-arg version.
|
||||
* The `PodCastError` type now supports `Hash` and `Display`. Also if you enable
|
||||
the `extern_crate_std` feature then it will support `std::error::Error`.
|
||||
* We now provide a `TransparentWrapper<T>` impl for `core::num::Wrapper<T>`.
|
||||
* The error type of `try_from_bytes` and `try_from_bytes_mut` when the input
|
||||
isn't aligned has been corrected from being `AlignmentMismatch` (intended for
|
||||
allocation casting only) to `TargetAlignmentGreaterAndInputNotAligned`.
|
||||
|
||||
## 1.3.0
|
||||
|
||||
* Had a bug because the CI was messed up! It wasn't soundness related, because
|
||||
it prevented the crate from building entirely if the `extern_crate_alloc`
|
||||
feature was used. Still, this is yanked, sorry.
|
||||
|
||||
## 1.2.0
|
||||
|
||||
* [thomcc](https://github.com/thomcc) added many things:
|
||||
* A fully sound `offset_of!` macro
|
||||
[#10](https://github.com/Lokathor/bytemuck/pull/10)
|
||||
* A `Contiguous` trait for when you've got enums with declared values
|
||||
all in a row [#12](https://github.com/Lokathor/bytemuck/pull/12)
|
||||
* A `TransparentWrapper` marker trait for when you want to more clearly
|
||||
enable adding and removing a wrapper struct to its inner value
|
||||
[#15](https://github.com/Lokathor/bytemuck/pull/15)
|
||||
* Now MIRI is run on CI in every single push!
|
||||
[#16](https://github.com/Lokathor/bytemuck/pull/16)
|
||||
|
||||
## 1.1.0
|
||||
|
||||
* [SimonSapin](https://github.com/SimonSapin) added `from_bytes`,
|
||||
`from_bytes_mut`, `try_from_bytes`, and `try_from_bytes_mut` ([PR
|
||||
Link](https://github.com/Lokathor/bytemuck/pull/8))
|
||||
|
||||
## 1.0.1
|
||||
|
||||
* Changed to the [zlib](https://opensource.org/licenses/Zlib) license.
|
||||
* Added much more proper documentation.
|
||||
* Reduced the minimum Rust version to 1.34
|
||||
16
third_party/rust/bytemuck/rustfmt.toml
vendored
Normal file
16
third_party/rust/bytemuck/rustfmt.toml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# Based on
|
||||
# https://github.com/rust-lang/rustfmt/blob/rustfmt-1.4.19/Configurations.md
|
||||
|
||||
# Stable
|
||||
edition = "2018"
|
||||
fn_args_layout = "Compressed"
|
||||
max_width = 80
|
||||
tab_spaces = 2
|
||||
use_field_init_shorthand = true
|
||||
use_try_shorthand = true
|
||||
use_small_heuristics = "Max"
|
||||
|
||||
# Unstable
|
||||
format_code_in_doc_comments = true
|
||||
imports_granularity = "Crate"
|
||||
wrap_comments = true
|
||||
980
third_party/rust/bytemuck/src/allocation.rs
vendored
Normal file
980
third_party/rust/bytemuck/src/allocation.rs
vendored
Normal file
@@ -0,0 +1,980 @@
|
||||
#![cfg(feature = "extern_crate_alloc")]
|
||||
#![allow(clippy::duplicated_attributes)]
|
||||
|
||||
//! Stuff to boost things in the `alloc` crate.
|
||||
//!
|
||||
//! * You must enable the `extern_crate_alloc` feature of `bytemuck` or you will
|
||||
//! not be able to use this module! This is generally done by adding the
|
||||
//! feature to the dependency in Cargo.toml like so:
|
||||
//!
|
||||
//! `bytemuck = { version = "VERSION_YOU_ARE_USING", features =
|
||||
//! ["extern_crate_alloc"]}`
|
||||
|
||||
use super::*;
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
use alloc::sync::Arc;
|
||||
use alloc::{
|
||||
alloc::{alloc_zeroed, Layout},
|
||||
boxed::Box,
|
||||
rc::Rc,
|
||||
vec,
|
||||
vec::Vec,
|
||||
};
|
||||
use core::{
|
||||
mem::{size_of_val, ManuallyDrop},
|
||||
ops::{Deref, DerefMut},
|
||||
};
|
||||
|
||||
/// As [`try_cast_box`], but unwraps for you.
|
||||
#[inline]
|
||||
pub fn cast_box<A: NoUninit, B: AnyBitPattern>(input: Box<A>) -> Box<B> {
|
||||
try_cast_box(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a [`Box`].
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Box`.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Box` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end size of the `Box` must have the exact same size.
|
||||
#[inline]
|
||||
pub fn try_cast_box<A: NoUninit, B: AnyBitPattern>(
|
||||
input: Box<A>,
|
||||
) -> Result<Box<B>, (PodCastError, Box<A>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
Err((PodCastError::SizeMismatch, input))
|
||||
} else {
|
||||
// Note(Lokathor): This is much simpler than with the Vec casting!
|
||||
let ptr: *mut B = Box::into_raw(input) as *mut B;
|
||||
Ok(unsafe { Box::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
|
||||
/// Allocates a `Box<T>` with all of the contents being zeroed out.
|
||||
///
|
||||
/// This uses the global allocator to create a zeroed allocation and _then_
|
||||
/// turns it into a Box. In other words, it's 100% assured that the zeroed data
|
||||
/// won't be put temporarily on the stack. You can make a box of any size
|
||||
/// without fear of a stack overflow.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// This fails if the allocation fails.
|
||||
#[inline]
|
||||
pub fn try_zeroed_box<T: Zeroable>() -> Result<Box<T>, ()> {
|
||||
if size_of::<T>() == 0 {
|
||||
// This will not allocate but simply create an arbitrary non-null
|
||||
// aligned pointer, valid for Box for a zero-sized pointee.
|
||||
let ptr = core::ptr::NonNull::dangling().as_ptr();
|
||||
return Ok(unsafe { Box::from_raw(ptr) });
|
||||
}
|
||||
let layout = Layout::new::<T>();
|
||||
let ptr = unsafe { alloc_zeroed(layout) };
|
||||
if ptr.is_null() {
|
||||
// we don't know what the error is because `alloc_zeroed` is a dumb API
|
||||
Err(())
|
||||
} else {
|
||||
Ok(unsafe { Box::<T>::from_raw(ptr as *mut T) })
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_zeroed_box`], but unwraps for you.
|
||||
#[inline]
|
||||
pub fn zeroed_box<T: Zeroable>() -> Box<T> {
|
||||
try_zeroed_box().unwrap()
|
||||
}
|
||||
|
||||
/// Allocates a `Vec<T>` of length and capacity exactly equal to `length` and
|
||||
/// all elements zeroed.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// This fails if the allocation fails, or if a layout cannot be calculated for
|
||||
/// the allocation.
|
||||
pub fn try_zeroed_vec<T: Zeroable>(length: usize) -> Result<Vec<T>, ()> {
|
||||
if length == 0 {
|
||||
Ok(Vec::new())
|
||||
} else {
|
||||
let boxed_slice = try_zeroed_slice_box(length)?;
|
||||
Ok(boxed_slice.into_vec())
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_zeroed_vec`] but unwraps for you
|
||||
pub fn zeroed_vec<T: Zeroable>(length: usize) -> Vec<T> {
|
||||
try_zeroed_vec(length).unwrap()
|
||||
}
|
||||
|
||||
/// Allocates a `Box<[T]>` with all contents being zeroed out.
|
||||
///
|
||||
/// This uses the global allocator to create a zeroed allocation and _then_
|
||||
/// turns it into a Box. In other words, it's 100% assured that the zeroed data
|
||||
/// won't be put temporarily on the stack. You can make a box of any size
|
||||
/// without fear of a stack overflow.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// This fails if the allocation fails, or if a layout cannot be calculated for
|
||||
/// the allocation.
|
||||
#[inline]
|
||||
pub fn try_zeroed_slice_box<T: Zeroable>(
|
||||
length: usize,
|
||||
) -> Result<Box<[T]>, ()> {
|
||||
if size_of::<T>() == 0 || length == 0 {
|
||||
// This will not allocate but simply create an arbitrary non-null aligned
|
||||
// slice pointer, valid for Box for a zero-sized pointee.
|
||||
let ptr = core::ptr::NonNull::dangling().as_ptr();
|
||||
let slice_ptr = core::ptr::slice_from_raw_parts_mut(ptr, length);
|
||||
return Ok(unsafe { Box::from_raw(slice_ptr) });
|
||||
}
|
||||
let layout = core::alloc::Layout::array::<T>(length).map_err(|_| ())?;
|
||||
let ptr = unsafe { alloc_zeroed(layout) };
|
||||
if ptr.is_null() {
|
||||
// we don't know what the error is because `alloc_zeroed` is a dumb API
|
||||
Err(())
|
||||
} else {
|
||||
let slice =
|
||||
unsafe { core::slice::from_raw_parts_mut(ptr as *mut T, length) };
|
||||
Ok(unsafe { Box::<[T]>::from_raw(slice) })
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_zeroed_slice_box`], but unwraps for you.
|
||||
pub fn zeroed_slice_box<T: Zeroable>(length: usize) -> Box<[T]> {
|
||||
try_zeroed_slice_box(length).unwrap()
|
||||
}
|
||||
|
||||
/// Allocates a `Arc<T>` with all contents being zeroed out.
|
||||
#[cfg(all(feature = "alloc_uninit", target_has_atomic = "ptr"))]
|
||||
pub fn zeroed_arc<T: Zeroable>() -> Arc<T> {
|
||||
let mut arc = Arc::new_uninit();
|
||||
crate::write_zeroes(Arc::get_mut(&mut arc).unwrap()); // unwrap never fails for a newly allocated Arc
|
||||
unsafe { arc.assume_init() }
|
||||
}
|
||||
|
||||
/// Allocates a `Arc<[T]>` with all contents being zeroed out.
|
||||
#[cfg(all(feature = "alloc_uninit", target_has_atomic = "ptr"))]
|
||||
pub fn zeroed_arc_slice<T: Zeroable>(length: usize) -> Arc<[T]> {
|
||||
let mut arc = Arc::new_uninit_slice(length);
|
||||
crate::fill_zeroes(Arc::get_mut(&mut arc).unwrap()); // unwrap never fails for a newly allocated Arc
|
||||
unsafe { arc.assume_init() }
|
||||
}
|
||||
|
||||
/// Allocates a `Rc<T>` with all contents being zeroed out.
|
||||
#[cfg(feature = "alloc_uninit")]
|
||||
pub fn zeroed_rc<T: Zeroable>() -> Rc<T> {
|
||||
let mut rc = Rc::new_uninit();
|
||||
crate::write_zeroes(Rc::get_mut(&mut rc).unwrap()); // unwrap never fails for a newly allocated Rc
|
||||
unsafe { rc.assume_init() }
|
||||
}
|
||||
|
||||
/// Allocates a `Rc<[T]>` with all contents being zeroed out.
|
||||
#[cfg(feature = "alloc_uninit")]
|
||||
pub fn zeroed_rc_slice<T: Zeroable>(length: usize) -> Rc<[T]> {
|
||||
let mut rc = Rc::new_uninit_slice(length);
|
||||
crate::fill_zeroes(Rc::get_mut(&mut rc).unwrap()); // unwrap never fails for a newly allocated Rc
|
||||
unsafe { rc.assume_init() }
|
||||
}
|
||||
|
||||
/// As [`try_cast_slice_box`], but unwraps for you.
|
||||
#[inline]
|
||||
pub fn cast_slice_box<A: NoUninit, B: AnyBitPattern>(
|
||||
input: Box<[A]>,
|
||||
) -> Box<[B]> {
|
||||
try_cast_slice_box(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a `Box<[T]>`.
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Box<[T]>`.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Box<[T]>` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end content size in bytes of the `Box<[T]>` must be the
|
||||
/// exact same.
|
||||
#[inline]
|
||||
pub fn try_cast_slice_box<A: NoUninit, B: AnyBitPattern>(
|
||||
input: Box<[A]>,
|
||||
) -> Result<Box<[B]>, (PodCastError, Box<[A]>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
let input_bytes = size_of_val::<[A]>(&*input);
|
||||
if (size_of::<B>() == 0 && input_bytes != 0)
|
||||
|| (size_of::<B>() != 0 && input_bytes % size_of::<B>() != 0)
|
||||
{
|
||||
// If the size in bytes of the underlying buffer does not match an exact
|
||||
// multiple of the size of B, we cannot cast between them.
|
||||
Err((PodCastError::OutputSliceWouldHaveSlop, input))
|
||||
} else {
|
||||
// Because the size is an exact multiple, we can now change the length
|
||||
// of the slice and recreate the Box
|
||||
// NOTE: This is a valid operation because according to the docs of
|
||||
// std::alloc::GlobalAlloc::dealloc(), the Layout that was used to alloc
|
||||
// the block must be the same Layout that is used to dealloc the block.
|
||||
// Luckily, Layout only stores two things, the alignment, and the size in
|
||||
// bytes. So as long as both of those stay the same, the Layout will
|
||||
// remain a valid input to dealloc.
|
||||
let length =
|
||||
if size_of::<B>() != 0 { input_bytes / size_of::<B>() } else { 0 };
|
||||
let box_ptr: *mut A = Box::into_raw(input) as *mut A;
|
||||
let ptr: *mut [B] =
|
||||
unsafe { core::slice::from_raw_parts_mut(box_ptr as *mut B, length) };
|
||||
Ok(unsafe { Box::<[B]>::from_raw(ptr) })
|
||||
}
|
||||
} else {
|
||||
let box_ptr: *mut [A] = Box::into_raw(input);
|
||||
let ptr: *mut [B] = box_ptr as *mut [B];
|
||||
Ok(unsafe { Box::<[B]>::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_cast_vec`], but unwraps for you.
|
||||
#[inline]
|
||||
pub fn cast_vec<A: NoUninit, B: AnyBitPattern>(input: Vec<A>) -> Vec<B> {
|
||||
try_cast_vec(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a [`Vec`].
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Vec`.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Vec` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end content size in bytes of the `Vec` must be the exact
|
||||
/// same.
|
||||
/// * The start and end capacity in bytes of the `Vec` must be the exact same.
|
||||
#[inline]
|
||||
pub fn try_cast_vec<A: NoUninit, B: AnyBitPattern>(
|
||||
input: Vec<A>,
|
||||
) -> Result<Vec<B>, (PodCastError, Vec<A>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
let input_size = size_of_val::<[A]>(&*input);
|
||||
let input_capacity = input.capacity() * size_of::<A>();
|
||||
if (size_of::<B>() == 0 && input_capacity != 0)
|
||||
|| (size_of::<B>() != 0
|
||||
&& (input_size % size_of::<B>() != 0
|
||||
|| input_capacity % size_of::<B>() != 0))
|
||||
{
|
||||
// If the size in bytes of the underlying buffer does not match an exact
|
||||
// multiple of the size of B, we cannot cast between them.
|
||||
// Note that we have to pay special attention to make sure that both
|
||||
// length and capacity are valid under B, as we do not want to
|
||||
// change which bytes are considered part of the initialized slice
|
||||
// of the Vec
|
||||
Err((PodCastError::OutputSliceWouldHaveSlop, input))
|
||||
} else {
|
||||
// Because the size is an exact multiple, we can now change the length and
|
||||
// capacity and recreate the Vec
|
||||
// NOTE: This is a valid operation because according to the docs of
|
||||
// std::alloc::GlobalAlloc::dealloc(), the Layout that was used to alloc
|
||||
// the block must be the same Layout that is used to dealloc the block.
|
||||
// Luckily, Layout only stores two things, the alignment, and the size in
|
||||
// bytes. So as long as both of those stay the same, the Layout will
|
||||
// remain a valid input to dealloc.
|
||||
|
||||
// Note(Lokathor): First we record the length and capacity, which don't
|
||||
// have any secret provenance metadata.
|
||||
let length: usize =
|
||||
if size_of::<B>() != 0 { input_size / size_of::<B>() } else { 0 };
|
||||
let capacity: usize =
|
||||
if size_of::<B>() != 0 { input_capacity / size_of::<B>() } else { 0 };
|
||||
// Note(Lokathor): Next we "pre-forget" the old Vec by wrapping with
|
||||
// ManuallyDrop, because if we used `core::mem::forget` after taking the
|
||||
// pointer then that would invalidate our pointer. In nightly there's a
|
||||
// "into raw parts" method, which we can switch this too eventually.
|
||||
let mut manual_drop_vec = ManuallyDrop::new(input);
|
||||
let vec_ptr: *mut A = manual_drop_vec.as_mut_ptr();
|
||||
let ptr: *mut B = vec_ptr as *mut B;
|
||||
Ok(unsafe { Vec::from_raw_parts(ptr, length, capacity) })
|
||||
}
|
||||
} else {
|
||||
// Note(Lokathor): First we record the length and capacity, which don't have
|
||||
// any secret provenance metadata.
|
||||
let length: usize = input.len();
|
||||
let capacity: usize = input.capacity();
|
||||
// Note(Lokathor): Next we "pre-forget" the old Vec by wrapping with
|
||||
// ManuallyDrop, because if we used `core::mem::forget` after taking the
|
||||
// pointer then that would invalidate our pointer. In nightly there's a
|
||||
// "into raw parts" method, which we can switch this too eventually.
|
||||
let mut manual_drop_vec = ManuallyDrop::new(input);
|
||||
let vec_ptr: *mut A = manual_drop_vec.as_mut_ptr();
|
||||
let ptr: *mut B = vec_ptr as *mut B;
|
||||
Ok(unsafe { Vec::from_raw_parts(ptr, length, capacity) })
|
||||
}
|
||||
}
|
||||
|
||||
/// This "collects" a slice of pod data into a vec of a different pod type.
|
||||
///
|
||||
/// Unlike with [`cast_slice`] and [`cast_slice_mut`], this will always work.
|
||||
///
|
||||
/// The output vec will be of a minimal size/capacity to hold the slice given.
|
||||
///
|
||||
/// ```rust
|
||||
/// # use bytemuck::*;
|
||||
/// let halfwords: [u16; 4] = [5, 6, 7, 8];
|
||||
/// let vec_of_words: Vec<u32> = pod_collect_to_vec(&halfwords);
|
||||
/// if cfg!(target_endian = "little") {
|
||||
/// assert_eq!(&vec_of_words[..], &[0x0006_0005, 0x0008_0007][..])
|
||||
/// } else {
|
||||
/// assert_eq!(&vec_of_words[..], &[0x0005_0006, 0x0007_0008][..])
|
||||
/// }
|
||||
/// ```
|
||||
pub fn pod_collect_to_vec<A: NoUninit, B: NoUninit + AnyBitPattern>(
|
||||
src: &[A],
|
||||
) -> Vec<B> {
|
||||
let src_size = core::mem::size_of_val(src);
|
||||
// Note(Lokathor): dst_count is rounded up so that the dest will always be at
|
||||
// least as many bytes as the src.
|
||||
let dst_count = src_size / size_of::<B>()
|
||||
+ if src_size % size_of::<B>() != 0 { 1 } else { 0 };
|
||||
let mut dst = vec![B::zeroed(); dst_count];
|
||||
|
||||
let src_bytes: &[u8] = cast_slice(src);
|
||||
let dst_bytes: &mut [u8] = cast_slice_mut(&mut dst[..]);
|
||||
dst_bytes[..src_size].copy_from_slice(src_bytes);
|
||||
dst
|
||||
}
|
||||
|
||||
/// As [`try_cast_rc`], but unwraps for you.
|
||||
#[inline]
|
||||
pub fn cast_rc<A: NoUninit + AnyBitPattern, B: NoUninit + AnyBitPattern>(
|
||||
input: Rc<A>,
|
||||
) -> Rc<B> {
|
||||
try_cast_rc(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a [`Rc`].
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Rc`.
|
||||
///
|
||||
/// The bounds on this function are the same as [`cast_mut`], because a user
|
||||
/// could call `Rc::get_unchecked_mut` on the output, which could be observable
|
||||
/// in the input.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Rc` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end size of the `Rc` must have the exact same size.
|
||||
#[inline]
|
||||
pub fn try_cast_rc<A: NoUninit + AnyBitPattern, B: NoUninit + AnyBitPattern>(
|
||||
input: Rc<A>,
|
||||
) -> Result<Rc<B>, (PodCastError, Rc<A>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
Err((PodCastError::SizeMismatch, input))
|
||||
} else {
|
||||
// Safety: Rc::from_raw requires size and alignment match, which is met.
|
||||
let ptr: *const B = Rc::into_raw(input) as *const B;
|
||||
Ok(unsafe { Rc::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_cast_arc`], but unwraps for you.
|
||||
#[inline]
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
pub fn cast_arc<A: NoUninit + AnyBitPattern, B: NoUninit + AnyBitPattern>(
|
||||
input: Arc<A>,
|
||||
) -> Arc<B> {
|
||||
try_cast_arc(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a [`Arc`].
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Arc`.
|
||||
///
|
||||
/// The bounds on this function are the same as [`cast_mut`], because a user
|
||||
/// could call `Rc::get_unchecked_mut` on the output, which could be observable
|
||||
/// in the input.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Arc` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end size of the `Arc` must have the exact same size.
|
||||
#[inline]
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
pub fn try_cast_arc<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + AnyBitPattern,
|
||||
>(
|
||||
input: Arc<A>,
|
||||
) -> Result<Arc<B>, (PodCastError, Arc<A>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
Err((PodCastError::SizeMismatch, input))
|
||||
} else {
|
||||
// Safety: Arc::from_raw requires size and alignment match, which is met.
|
||||
let ptr: *const B = Arc::into_raw(input) as *const B;
|
||||
Ok(unsafe { Arc::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_cast_slice_rc`], but unwraps for you.
|
||||
#[inline]
|
||||
pub fn cast_slice_rc<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + AnyBitPattern,
|
||||
>(
|
||||
input: Rc<[A]>,
|
||||
) -> Rc<[B]> {
|
||||
try_cast_slice_rc(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a `Rc<[T]>`.
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Rc<[T]>`.
|
||||
///
|
||||
/// The bounds on this function are the same as [`cast_mut`], because a user
|
||||
/// could call `Rc::get_unchecked_mut` on the output, which could be observable
|
||||
/// in the input.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Rc<[T]>` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end content size in bytes of the `Rc<[T]>` must be the exact
|
||||
/// same.
|
||||
#[inline]
|
||||
pub fn try_cast_slice_rc<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + AnyBitPattern,
|
||||
>(
|
||||
input: Rc<[A]>,
|
||||
) -> Result<Rc<[B]>, (PodCastError, Rc<[A]>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
let input_bytes = size_of_val::<[A]>(&*input);
|
||||
if (size_of::<B>() == 0 && input_bytes != 0)
|
||||
|| (size_of::<B>() != 0 && input_bytes % size_of::<B>() != 0)
|
||||
{
|
||||
// If the size in bytes of the underlying buffer does not match an exact
|
||||
// multiple of the size of B, we cannot cast between them.
|
||||
Err((PodCastError::OutputSliceWouldHaveSlop, input))
|
||||
} else {
|
||||
// Because the size is an exact multiple, we can now change the length
|
||||
// of the slice and recreate the Rc
|
||||
// NOTE: This is a valid operation because according to the docs of
|
||||
// std::rc::Rc::from_raw(), the type U that was in the original Rc<U>
|
||||
// acquired from Rc::into_raw() must have the same size alignment and
|
||||
// size of the type T in the new Rc<T>. So as long as both the size
|
||||
// and alignment stay the same, the Rc will remain a valid Rc.
|
||||
let length =
|
||||
if size_of::<B>() != 0 { input_bytes / size_of::<B>() } else { 0 };
|
||||
let rc_ptr: *const A = Rc::into_raw(input) as *const A;
|
||||
// Must use ptr::slice_from_raw_parts, because we cannot make an
|
||||
// intermediate const reference, because it has mutable provenance,
|
||||
// nor an intermediate mutable reference, because it could be aliased.
|
||||
let ptr = core::ptr::slice_from_raw_parts(rc_ptr as *const B, length);
|
||||
Ok(unsafe { Rc::<[B]>::from_raw(ptr) })
|
||||
}
|
||||
} else {
|
||||
let rc_ptr: *const [A] = Rc::into_raw(input);
|
||||
let ptr: *const [B] = rc_ptr as *const [B];
|
||||
Ok(unsafe { Rc::<[B]>::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
|
||||
/// As [`try_cast_slice_arc`], but unwraps for you.
|
||||
#[inline]
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
pub fn cast_slice_arc<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + AnyBitPattern,
|
||||
>(
|
||||
input: Arc<[A]>,
|
||||
) -> Arc<[B]> {
|
||||
try_cast_slice_arc(input).map_err(|(e, _v)| e).unwrap()
|
||||
}
|
||||
|
||||
/// Attempts to cast the content type of a `Arc<[T]>`.
|
||||
///
|
||||
/// On failure you get back an error along with the starting `Arc<[T]>`.
|
||||
///
|
||||
/// The bounds on this function are the same as [`cast_mut`], because a user
|
||||
/// could call `Rc::get_unchecked_mut` on the output, which could be observable
|
||||
/// in the input.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * The start and end content type of the `Arc<[T]>` must have the exact same
|
||||
/// alignment.
|
||||
/// * The start and end content size in bytes of the `Arc<[T]>` must be the
|
||||
/// exact same.
|
||||
#[inline]
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
pub fn try_cast_slice_arc<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + AnyBitPattern,
|
||||
>(
|
||||
input: Arc<[A]>,
|
||||
) -> Result<Arc<[B]>, (PodCastError, Arc<[A]>)> {
|
||||
if align_of::<A>() != align_of::<B>() {
|
||||
Err((PodCastError::AlignmentMismatch, input))
|
||||
} else if size_of::<A>() != size_of::<B>() {
|
||||
let input_bytes = size_of_val::<[A]>(&*input);
|
||||
if (size_of::<B>() == 0 && input_bytes != 0)
|
||||
|| (size_of::<B>() != 0 && input_bytes % size_of::<B>() != 0)
|
||||
{
|
||||
// If the size in bytes of the underlying buffer does not match an exact
|
||||
// multiple of the size of B, we cannot cast between them.
|
||||
Err((PodCastError::OutputSliceWouldHaveSlop, input))
|
||||
} else {
|
||||
// Because the size is an exact multiple, we can now change the length
|
||||
// of the slice and recreate the Arc
|
||||
// NOTE: This is a valid operation because according to the docs of
|
||||
// std::sync::Arc::from_raw(), the type U that was in the original Arc<U>
|
||||
// acquired from Arc::into_raw() must have the same size alignment and
|
||||
// size of the type T in the new Arc<T>. So as long as both the size
|
||||
// and alignment stay the same, the Arc will remain a valid Arc.
|
||||
let length =
|
||||
if size_of::<B>() != 0 { input_bytes / size_of::<B>() } else { 0 };
|
||||
let arc_ptr: *const A = Arc::into_raw(input) as *const A;
|
||||
// Must use ptr::slice_from_raw_parts, because we cannot make an
|
||||
// intermediate const reference, because it has mutable provenance,
|
||||
// nor an intermediate mutable reference, because it could be aliased.
|
||||
let ptr = core::ptr::slice_from_raw_parts(arc_ptr as *const B, length);
|
||||
Ok(unsafe { Arc::<[B]>::from_raw(ptr) })
|
||||
}
|
||||
} else {
|
||||
let arc_ptr: *const [A] = Arc::into_raw(input);
|
||||
let ptr: *const [B] = arc_ptr as *const [B];
|
||||
Ok(unsafe { Arc::<[B]>::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
|
||||
/// An extension trait for `TransparentWrapper` and alloc types.
|
||||
pub trait TransparentWrapperAlloc<Inner: ?Sized>:
|
||||
TransparentWrapper<Inner>
|
||||
{
|
||||
/// Convert a vec of the inner type into a vec of the wrapper type.
|
||||
fn wrap_vec(s: Vec<Inner>) -> Vec<Self>
|
||||
where
|
||||
Self: Sized,
|
||||
Inner: Sized,
|
||||
{
|
||||
let mut s = ManuallyDrop::new(s);
|
||||
|
||||
let length = s.len();
|
||||
let capacity = s.capacity();
|
||||
let ptr = s.as_mut_ptr();
|
||||
|
||||
unsafe {
|
||||
// SAFETY:
|
||||
// * ptr comes from Vec (and will not be double-dropped)
|
||||
// * the two types have the identical representation
|
||||
// * the len and capacity fields are valid
|
||||
Vec::from_raw_parts(ptr as *mut Self, length, capacity)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert a box to the inner type into a box to the wrapper
|
||||
/// type.
|
||||
#[inline]
|
||||
fn wrap_box(s: Box<Inner>) -> Box<Self> {
|
||||
// The unsafe contract requires that these two have
|
||||
// identical representations, and thus identical pointer metadata.
|
||||
// Assert that Self and Inner have the same pointer size,
|
||||
// which is the best we can do to assert their metadata is the same type
|
||||
// on stable.
|
||||
assert!(size_of::<*mut Inner>() == size_of::<*mut Self>());
|
||||
|
||||
unsafe {
|
||||
// A pointer cast doesn't work here because rustc can't tell that
|
||||
// the vtables match (because of the `?Sized` restriction relaxation).
|
||||
// A `transmute` doesn't work because the sizes are unspecified.
|
||||
//
|
||||
// SAFETY:
|
||||
// * The unsafe contract requires that pointers to Inner and Self have
|
||||
// identical representations
|
||||
// * Box is guaranteed to have representation identical to a (non-null)
|
||||
// pointer
|
||||
// * The pointer comes from a box (and thus satisfies all safety
|
||||
// requirements of Box)
|
||||
let inner_ptr: *mut Inner = Box::into_raw(s);
|
||||
let wrapper_ptr: *mut Self = transmute!(inner_ptr);
|
||||
Box::from_raw(wrapper_ptr)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert an [`Rc`] to the inner type into an `Rc` to the wrapper type.
|
||||
#[inline]
|
||||
fn wrap_rc(s: Rc<Inner>) -> Rc<Self> {
|
||||
// The unsafe contract requires that these two have
|
||||
// identical representations, and thus identical pointer metadata.
|
||||
// Assert that Self and Inner have the same pointer size,
|
||||
// which is the best we can do to assert their metadata is the same type
|
||||
// on stable.
|
||||
assert!(size_of::<*mut Inner>() == size_of::<*mut Self>());
|
||||
|
||||
unsafe {
|
||||
// A pointer cast doesn't work here because rustc can't tell that
|
||||
// the vtables match (because of the `?Sized` restriction relaxation).
|
||||
// A `transmute` doesn't work because the layout of Rc is unspecified.
|
||||
//
|
||||
// SAFETY:
|
||||
// * The unsafe contract requires that pointers to Inner and Self have
|
||||
// identical representations, and that the size and alignment of Inner
|
||||
// and Self are the same, which meets the safety requirements of
|
||||
// Rc::from_raw
|
||||
let inner_ptr: *const Inner = Rc::into_raw(s);
|
||||
let wrapper_ptr: *const Self = transmute!(inner_ptr);
|
||||
Rc::from_raw(wrapper_ptr)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert an [`Arc`] to the inner type into an `Arc` to the wrapper type.
|
||||
#[inline]
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
fn wrap_arc(s: Arc<Inner>) -> Arc<Self> {
|
||||
// The unsafe contract requires that these two have
|
||||
// identical representations, and thus identical pointer metadata.
|
||||
// Assert that Self and Inner have the same pointer size,
|
||||
// which is the best we can do to assert their metadata is the same type
|
||||
// on stable.
|
||||
assert!(size_of::<*mut Inner>() == size_of::<*mut Self>());
|
||||
|
||||
unsafe {
|
||||
// A pointer cast doesn't work here because rustc can't tell that
|
||||
// the vtables match (because of the `?Sized` restriction relaxation).
|
||||
// A `transmute` doesn't work because the layout of Arc is unspecified.
|
||||
//
|
||||
// SAFETY:
|
||||
// * The unsafe contract requires that pointers to Inner and Self have
|
||||
// identical representations, and that the size and alignment of Inner
|
||||
// and Self are the same, which meets the safety requirements of
|
||||
// Arc::from_raw
|
||||
let inner_ptr: *const Inner = Arc::into_raw(s);
|
||||
let wrapper_ptr: *const Self = transmute!(inner_ptr);
|
||||
Arc::from_raw(wrapper_ptr)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert a vec of the wrapper type into a vec of the inner type.
|
||||
fn peel_vec(s: Vec<Self>) -> Vec<Inner>
|
||||
where
|
||||
Self: Sized,
|
||||
Inner: Sized,
|
||||
{
|
||||
let mut s = ManuallyDrop::new(s);
|
||||
|
||||
let length = s.len();
|
||||
let capacity = s.capacity();
|
||||
let ptr = s.as_mut_ptr();
|
||||
|
||||
unsafe {
|
||||
// SAFETY:
|
||||
// * ptr comes from Vec (and will not be double-dropped)
|
||||
// * the two types have the identical representation
|
||||
// * the len and capacity fields are valid
|
||||
Vec::from_raw_parts(ptr as *mut Inner, length, capacity)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert a box to the wrapper type into a box to the inner
|
||||
/// type.
|
||||
#[inline]
|
||||
fn peel_box(s: Box<Self>) -> Box<Inner> {
|
||||
// The unsafe contract requires that these two have
|
||||
// identical representations, and thus identical pointer metadata.
|
||||
// Assert that Self and Inner have the same pointer size,
|
||||
// which is the best we can do to assert their metadata is the same type
|
||||
// on stable.
|
||||
assert!(size_of::<*mut Inner>() == size_of::<*mut Self>());
|
||||
|
||||
unsafe {
|
||||
// A pointer cast doesn't work here because rustc can't tell that
|
||||
// the vtables match (because of the `?Sized` restriction relaxation).
|
||||
// A `transmute` doesn't work because the sizes are unspecified.
|
||||
//
|
||||
// SAFETY:
|
||||
// * The unsafe contract requires that pointers to Inner and Self have
|
||||
// identical representations
|
||||
// * Box is guaranteed to have representation identical to a (non-null)
|
||||
// pointer
|
||||
// * The pointer comes from a box (and thus satisfies all safety
|
||||
// requirements of Box)
|
||||
let wrapper_ptr: *mut Self = Box::into_raw(s);
|
||||
let inner_ptr: *mut Inner = transmute!(wrapper_ptr);
|
||||
Box::from_raw(inner_ptr)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert an [`Rc`] to the wrapper type into an `Rc` to the inner type.
|
||||
#[inline]
|
||||
fn peel_rc(s: Rc<Self>) -> Rc<Inner> {
|
||||
// The unsafe contract requires that these two have
|
||||
// identical representations, and thus identical pointer metadata.
|
||||
// Assert that Self and Inner have the same pointer size,
|
||||
// which is the best we can do to assert their metadata is the same type
|
||||
// on stable.
|
||||
assert!(size_of::<*mut Inner>() == size_of::<*mut Self>());
|
||||
|
||||
unsafe {
|
||||
// A pointer cast doesn't work here because rustc can't tell that
|
||||
// the vtables match (because of the `?Sized` restriction relaxation).
|
||||
// A `transmute` doesn't work because the layout of Rc is unspecified.
|
||||
//
|
||||
// SAFETY:
|
||||
// * The unsafe contract requires that pointers to Inner and Self have
|
||||
// identical representations, and that the size and alignment of Inner
|
||||
// and Self are the same, which meets the safety requirements of
|
||||
// Rc::from_raw
|
||||
let wrapper_ptr: *const Self = Rc::into_raw(s);
|
||||
let inner_ptr: *const Inner = transmute!(wrapper_ptr);
|
||||
Rc::from_raw(inner_ptr)
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert an [`Arc`] to the wrapper type into an `Arc` to the inner type.
|
||||
#[inline]
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
fn peel_arc(s: Arc<Self>) -> Arc<Inner> {
|
||||
// The unsafe contract requires that these two have
|
||||
// identical representations, and thus identical pointer metadata.
|
||||
// Assert that Self and Inner have the same pointer size,
|
||||
// which is the best we can do to assert their metadata is the same type
|
||||
// on stable.
|
||||
assert!(size_of::<*mut Inner>() == size_of::<*mut Self>());
|
||||
|
||||
unsafe {
|
||||
// A pointer cast doesn't work here because rustc can't tell that
|
||||
// the vtables match (because of the `?Sized` restriction relaxation).
|
||||
// A `transmute` doesn't work because the layout of Arc is unspecified.
|
||||
//
|
||||
// SAFETY:
|
||||
// * The unsafe contract requires that pointers to Inner and Self have
|
||||
// identical representations, and that the size and alignment of Inner
|
||||
// and Self are the same, which meets the safety requirements of
|
||||
// Arc::from_raw
|
||||
let wrapper_ptr: *const Self = Arc::into_raw(s);
|
||||
let inner_ptr: *const Inner = transmute!(wrapper_ptr);
|
||||
Arc::from_raw(inner_ptr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<I: ?Sized, T: ?Sized + TransparentWrapper<I>> TransparentWrapperAlloc<I>
|
||||
for T
|
||||
{
|
||||
}
|
||||
|
||||
/// As `Box<[u8]>`, but remembers the original alignment.
|
||||
pub struct BoxBytes {
|
||||
// SAFETY: `ptr` is aligned to `layout.align()`, points to
|
||||
// `layout.size()` initialized bytes, and, if `layout.size() > 0`,
|
||||
// is owned and was allocated with the global allocator with `layout`.
|
||||
ptr: NonNull<u8>,
|
||||
layout: Layout,
|
||||
}
|
||||
|
||||
// SAFETY: `BoxBytes` is semantically a `Box<[u8], Global>` with a different allocation alignment,
|
||||
// `Box<[u8], Global>` is `Send + Sync`, and changing the allocation alignment has no thread-safety implications.
|
||||
unsafe impl Send for BoxBytes {}
|
||||
// SAFETY: See `Send` impl
|
||||
unsafe impl Sync for BoxBytes {}
|
||||
|
||||
impl Deref for BoxBytes {
|
||||
type Target = [u8];
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
// SAFETY: See type invariant.
|
||||
unsafe {
|
||||
core::slice::from_raw_parts(self.ptr.as_ptr(), self.layout.size())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl DerefMut for BoxBytes {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
// SAFETY: See type invariant.
|
||||
unsafe {
|
||||
core::slice::from_raw_parts_mut(self.ptr.as_ptr(), self.layout.size())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for BoxBytes {
|
||||
fn drop(&mut self) {
|
||||
if self.layout.size() != 0 {
|
||||
// SAFETY: See type invariant: if `self.layout.size() != 0`, then
|
||||
// `self.ptr` is owned and was allocated with `self.layout`.
|
||||
unsafe { alloc::alloc::dealloc(self.ptr.as_ptr(), self.layout) };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: ?Sized + sealed::BoxBytesOf> From<Box<T>> for BoxBytes {
|
||||
fn from(value: Box<T>) -> Self {
|
||||
value.box_bytes_of()
|
||||
}
|
||||
}
|
||||
|
||||
mod sealed {
|
||||
use crate::{BoxBytes, PodCastError};
|
||||
use alloc::boxed::Box;
|
||||
|
||||
pub trait BoxBytesOf {
|
||||
fn box_bytes_of(self: Box<Self>) -> BoxBytes;
|
||||
}
|
||||
|
||||
pub trait FromBoxBytes {
|
||||
fn try_from_box_bytes(
|
||||
bytes: BoxBytes,
|
||||
) -> Result<Box<Self>, (PodCastError, BoxBytes)>;
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: NoUninit> sealed::BoxBytesOf for T {
|
||||
fn box_bytes_of(self: Box<Self>) -> BoxBytes {
|
||||
let layout = Layout::new::<T>();
|
||||
let ptr = Box::into_raw(self) as *mut u8;
|
||||
// SAFETY: Box::into_raw() returns a non-null pointer.
|
||||
let ptr = unsafe { NonNull::new_unchecked(ptr) };
|
||||
BoxBytes { ptr, layout }
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: NoUninit> sealed::BoxBytesOf for [T] {
|
||||
fn box_bytes_of(self: Box<Self>) -> BoxBytes {
|
||||
let layout = Layout::for_value::<[T]>(&self);
|
||||
let ptr = Box::into_raw(self) as *mut u8;
|
||||
// SAFETY: Box::into_raw() returns a non-null pointer.
|
||||
let ptr = unsafe { NonNull::new_unchecked(ptr) };
|
||||
BoxBytes { ptr, layout }
|
||||
}
|
||||
}
|
||||
|
||||
impl sealed::BoxBytesOf for str {
|
||||
fn box_bytes_of(self: Box<Self>) -> BoxBytes {
|
||||
self.into_boxed_bytes().box_bytes_of()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: AnyBitPattern> sealed::FromBoxBytes for T {
|
||||
fn try_from_box_bytes(
|
||||
bytes: BoxBytes,
|
||||
) -> Result<Box<Self>, (PodCastError, BoxBytes)> {
|
||||
let layout = Layout::new::<T>();
|
||||
if bytes.layout.align() != layout.align() {
|
||||
Err((PodCastError::AlignmentMismatch, bytes))
|
||||
} else if bytes.layout.size() != layout.size() {
|
||||
Err((PodCastError::SizeMismatch, bytes))
|
||||
} else {
|
||||
let (ptr, _) = bytes.into_raw_parts();
|
||||
// SAFETY: See BoxBytes type invariant.
|
||||
Ok(unsafe { Box::from_raw(ptr.as_ptr() as *mut T) })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: AnyBitPattern> sealed::FromBoxBytes for [T] {
|
||||
fn try_from_box_bytes(
|
||||
bytes: BoxBytes,
|
||||
) -> Result<Box<Self>, (PodCastError, BoxBytes)> {
|
||||
let single_layout = Layout::new::<T>();
|
||||
if bytes.layout.align() != single_layout.align() {
|
||||
Err((PodCastError::AlignmentMismatch, bytes))
|
||||
} else if (single_layout.size() == 0 && bytes.layout.size() != 0)
|
||||
|| (single_layout.size() != 0
|
||||
&& bytes.layout.size() % single_layout.size() != 0)
|
||||
{
|
||||
Err((PodCastError::OutputSliceWouldHaveSlop, bytes))
|
||||
} else {
|
||||
let (ptr, layout) = bytes.into_raw_parts();
|
||||
let length = if single_layout.size() != 0 {
|
||||
layout.size() / single_layout.size()
|
||||
} else {
|
||||
0
|
||||
};
|
||||
let ptr =
|
||||
core::ptr::slice_from_raw_parts_mut(ptr.as_ptr() as *mut T, length);
|
||||
// SAFETY: See BoxBytes type invariant.
|
||||
Ok(unsafe { Box::from_raw(ptr) })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Re-interprets `Box<T>` as `BoxBytes`.
|
||||
///
|
||||
/// `T` must be either [`Sized`] and [`NoUninit`],
|
||||
/// [`[U]`](slice) where `U: NoUninit`, or [`str`].
|
||||
#[inline]
|
||||
pub fn box_bytes_of<T: sealed::BoxBytesOf + ?Sized>(input: Box<T>) -> BoxBytes {
|
||||
input.box_bytes_of()
|
||||
}
|
||||
|
||||
/// Re-interprets `BoxBytes` as `Box<T>`.
|
||||
///
|
||||
/// `T` must be either [`Sized`] + [`AnyBitPattern`], or
|
||||
/// [`[U]`](slice) where `U: AnyBitPattern`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_from_box_bytes`] but will panic on error and the input will be
|
||||
/// dropped.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn from_box_bytes<T: sealed::FromBoxBytes + ?Sized>(
|
||||
input: BoxBytes,
|
||||
) -> Box<T> {
|
||||
try_from_box_bytes(input).map_err(|(error, _)| error).unwrap()
|
||||
}
|
||||
|
||||
/// Re-interprets `BoxBytes` as `Box<T>`.
|
||||
///
|
||||
/// `T` must be either [`Sized`] + [`AnyBitPattern`], or
|
||||
/// [`[U]`](slice) where `U: AnyBitPattern`.
|
||||
///
|
||||
/// Returns `Err`:
|
||||
/// * If the input isn't aligned for `T`.
|
||||
/// * If `T: Sized` and the input's length isn't exactly the size of `T`.
|
||||
/// * If `T = [U]` and the input's length isn't exactly a multiple of the size
|
||||
/// of `U`.
|
||||
#[inline]
|
||||
pub fn try_from_box_bytes<T: sealed::FromBoxBytes + ?Sized>(
|
||||
input: BoxBytes,
|
||||
) -> Result<Box<T>, (PodCastError, BoxBytes)> {
|
||||
T::try_from_box_bytes(input)
|
||||
}
|
||||
|
||||
impl BoxBytes {
|
||||
/// Constructs a `BoxBytes` from its raw parts.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// The pointer is owned, has been allocated with the provided layout, and
|
||||
/// points to `layout.size()` initialized bytes.
|
||||
pub unsafe fn from_raw_parts(ptr: NonNull<u8>, layout: Layout) -> Self {
|
||||
BoxBytes { ptr, layout }
|
||||
}
|
||||
|
||||
/// Deconstructs a `BoxBytes` into its raw parts.
|
||||
///
|
||||
/// The pointer is owned, has been allocated with the provided layout, and
|
||||
/// points to `layout.size()` initialized bytes.
|
||||
pub fn into_raw_parts(self) -> (NonNull<u8>, Layout) {
|
||||
let me = ManuallyDrop::new(self);
|
||||
(me.ptr, me.layout)
|
||||
}
|
||||
|
||||
/// Returns the original layout.
|
||||
pub fn layout(&self) -> Layout {
|
||||
self.layout
|
||||
}
|
||||
}
|
||||
64
third_party/rust/bytemuck/src/anybitpattern.rs
vendored
Normal file
64
third_party/rust/bytemuck/src/anybitpattern.rs
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
use crate::{Pod, Zeroable};
|
||||
|
||||
/// Marker trait for "plain old data" types that are valid for any bit pattern.
|
||||
///
|
||||
/// The requirements for this is very similar to [`Pod`], except that the type
|
||||
/// can allow uninit (or padding) bytes. This limits what you can do with a type
|
||||
/// of this kind, but also broadens the included types to `repr(C)` `struct`s
|
||||
/// that contain padding as well as `union`s. Notably, you can only cast
|
||||
/// *immutable* references and *owned* values into [`AnyBitPattern`] types, not
|
||||
/// *mutable* references.
|
||||
///
|
||||
/// [`Pod`] is a subset of [`AnyBitPattern`], meaning that any `T: Pod` is also
|
||||
/// [`AnyBitPattern`] but any `T: AnyBitPattern` is not necessarily [`Pod`].
|
||||
///
|
||||
/// [`AnyBitPattern`] is a subset of [`Zeroable`], meaning that any `T:
|
||||
/// AnyBitPattern` is also [`Zeroable`], but any `T: Zeroable` is not
|
||||
/// necessarily [`AnyBitPattern`]
|
||||
///
|
||||
/// # Derive
|
||||
///
|
||||
/// A `#[derive(AnyBitPattern)]` macro is provided under the `derive` feature
|
||||
/// flag which will automatically validate the requirements of this trait and
|
||||
/// implement the trait for you for both structs and enums. This is the
|
||||
/// recommended method for implementing the trait, however it's also possible to
|
||||
/// do manually. If you implement it manually, you *must* carefully follow the
|
||||
/// below safety rules.
|
||||
///
|
||||
/// * *NOTE: even `C-style`, fieldless enums are intentionally **excluded** from
|
||||
/// this trait, since it is **unsound** for an enum to have a discriminant
|
||||
/// value that is not one of its defined variants.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// Similar to [`Pod`] except we disregard the rule about it must not contain
|
||||
/// uninit bytes. Still, this is a quite strong guarantee about a type, so *be
|
||||
/// careful* when implementing it manually.
|
||||
///
|
||||
/// * The type must be inhabited (eg: no
|
||||
/// [Infallible](core::convert::Infallible)).
|
||||
/// * The type must be valid for any bit pattern of its backing memory.
|
||||
/// * Structs need to have all fields also be `AnyBitPattern`.
|
||||
/// * It is disallowed for types to contain pointer types, `Cell`, `UnsafeCell`,
|
||||
/// atomics, and any other forms of interior mutability.
|
||||
/// * More precisely: A shared reference to the type must allow reads, and
|
||||
/// *only* reads. RustBelt's separation logic is based on the notion that a
|
||||
/// type is allowed to define a sharing predicate, its own invariant that must
|
||||
/// hold for shared references, and this predicate is the reasoning that allow
|
||||
/// it to deal with atomic and cells etc. We require the sharing predicate to
|
||||
/// be trivial and permit only read-only access.
|
||||
/// * There's probably more, don't mess it up (I mean it).
|
||||
pub unsafe trait AnyBitPattern:
|
||||
Zeroable + Sized + Copy + 'static
|
||||
{
|
||||
}
|
||||
|
||||
unsafe impl<T: Pod> AnyBitPattern for T {}
|
||||
|
||||
#[cfg(feature = "zeroable_maybe_uninit")]
|
||||
#[cfg_attr(
|
||||
feature = "nightly_docs",
|
||||
doc(cfg(feature = "zeroable_maybe_uninit"))
|
||||
)]
|
||||
unsafe impl<T> AnyBitPattern for core::mem::MaybeUninit<T> where T: AnyBitPattern
|
||||
{}
|
||||
529
third_party/rust/bytemuck/src/checked.rs
vendored
Normal file
529
third_party/rust/bytemuck/src/checked.rs
vendored
Normal file
@@ -0,0 +1,529 @@
|
||||
//! Checked versions of the casting functions exposed in crate root
|
||||
//! that support [`CheckedBitPattern`] types.
|
||||
|
||||
use crate::{
|
||||
internal::{self, something_went_wrong},
|
||||
AnyBitPattern, NoUninit,
|
||||
};
|
||||
|
||||
/// A marker trait that allows types that have some invalid bit patterns to be
|
||||
/// used in places that otherwise require [`AnyBitPattern`] or [`Pod`] types by
|
||||
/// performing a runtime check on a perticular set of bits. This is particularly
|
||||
/// useful for types like fieldless ('C-style') enums, [`char`], bool, and
|
||||
/// structs containing them.
|
||||
///
|
||||
/// To do this, we define a `Bits` type which is a type with equivalent layout
|
||||
/// to `Self` other than the invalid bit patterns which disallow `Self` from
|
||||
/// being [`AnyBitPattern`]. This `Bits` type must itself implement
|
||||
/// [`AnyBitPattern`]. Then, we implement a function that checks whether a
|
||||
/// certain instance of the `Bits` is also a valid bit pattern of `Self`. If
|
||||
/// this check passes, then we can allow casting from the `Bits` to `Self` (and
|
||||
/// therefore, any type which is able to be cast to `Bits` is also able to be
|
||||
/// cast to `Self`).
|
||||
///
|
||||
/// [`AnyBitPattern`] is a subset of [`CheckedBitPattern`], meaning that any `T:
|
||||
/// AnyBitPattern` is also [`CheckedBitPattern`]. This means you can also use
|
||||
/// any [`AnyBitPattern`] type in the checked versions of casting functions in
|
||||
/// this module. If it's possible, prefer implementing [`AnyBitPattern`] for
|
||||
/// your type directly instead of [`CheckedBitPattern`] as it gives greater
|
||||
/// flexibility.
|
||||
///
|
||||
/// # Derive
|
||||
///
|
||||
/// A `#[derive(CheckedBitPattern)]` macro is provided under the `derive`
|
||||
/// feature flag which will automatically validate the requirements of this
|
||||
/// trait and implement the trait for you for both enums and structs. This is
|
||||
/// the recommended method for implementing the trait, however it's also
|
||||
/// possible to do manually.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// If manually implementing the trait, we can do something like so:
|
||||
///
|
||||
/// ```rust
|
||||
/// use bytemuck::{CheckedBitPattern, NoUninit};
|
||||
///
|
||||
/// #[repr(u32)]
|
||||
/// #[derive(Copy, Clone)]
|
||||
/// enum MyEnum {
|
||||
/// Variant0 = 0,
|
||||
/// Variant1 = 1,
|
||||
/// Variant2 = 2,
|
||||
/// }
|
||||
///
|
||||
/// unsafe impl CheckedBitPattern for MyEnum {
|
||||
/// type Bits = u32;
|
||||
///
|
||||
/// fn is_valid_bit_pattern(bits: &u32) -> bool {
|
||||
/// match *bits {
|
||||
/// 0 | 1 | 2 => true,
|
||||
/// _ => false,
|
||||
/// }
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// // It is often useful to also implement `NoUninit` on our `CheckedBitPattern` types.
|
||||
/// // This will allow us to do casting of mutable references (and mutable slices).
|
||||
/// // It is not always possible to do so, but in this case we have no padding so it is.
|
||||
/// unsafe impl NoUninit for MyEnum {}
|
||||
/// ```
|
||||
///
|
||||
/// We can now use relevant casting functions. For example,
|
||||
///
|
||||
/// ```rust
|
||||
/// # use bytemuck::{CheckedBitPattern, NoUninit};
|
||||
/// # #[repr(u32)]
|
||||
/// # #[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
||||
/// # enum MyEnum {
|
||||
/// # Variant0 = 0,
|
||||
/// # Variant1 = 1,
|
||||
/// # Variant2 = 2,
|
||||
/// # }
|
||||
/// # unsafe impl NoUninit for MyEnum {}
|
||||
/// # unsafe impl CheckedBitPattern for MyEnum {
|
||||
/// # type Bits = u32;
|
||||
/// # fn is_valid_bit_pattern(bits: &u32) -> bool {
|
||||
/// # match *bits {
|
||||
/// # 0 | 1 | 2 => true,
|
||||
/// # _ => false,
|
||||
/// # }
|
||||
/// # }
|
||||
/// # }
|
||||
/// use bytemuck::{bytes_of, bytes_of_mut};
|
||||
/// use bytemuck::checked;
|
||||
///
|
||||
/// let bytes = bytes_of(&2u32);
|
||||
/// let result = checked::try_from_bytes::<MyEnum>(bytes);
|
||||
/// assert_eq!(result, Ok(&MyEnum::Variant2));
|
||||
///
|
||||
/// // Fails for invalid discriminant
|
||||
/// let bytes = bytes_of(&100u32);
|
||||
/// let result = checked::try_from_bytes::<MyEnum>(bytes);
|
||||
/// assert!(result.is_err());
|
||||
///
|
||||
/// // Since we implemented NoUninit, we can also cast mutably from an original type
|
||||
/// // that is `NoUninit + AnyBitPattern`:
|
||||
/// let mut my_u32 = 2u32;
|
||||
/// {
|
||||
/// let as_enum_mut = checked::cast_mut::<_, MyEnum>(&mut my_u32);
|
||||
/// assert_eq!(as_enum_mut, &mut MyEnum::Variant2);
|
||||
/// *as_enum_mut = MyEnum::Variant0;
|
||||
/// }
|
||||
/// assert_eq!(my_u32, 0u32);
|
||||
/// ```
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// * `Self` *must* have the same layout as the specified `Bits` except for the
|
||||
/// possible invalid bit patterns being checked during
|
||||
/// [`is_valid_bit_pattern`].
|
||||
/// * This almost certainly means your type must be `#[repr(C)]` or a similar
|
||||
/// specified repr, but if you think you know better, you probably don't. If
|
||||
/// you still think you know better, be careful and have fun. And don't mess
|
||||
/// it up (I mean it).
|
||||
/// * If [`is_valid_bit_pattern`] returns true, then the bit pattern contained
|
||||
/// in `bits` must also be valid for an instance of `Self`.
|
||||
/// * Probably more, don't mess it up (I mean it 2.0)
|
||||
///
|
||||
/// [`is_valid_bit_pattern`]: CheckedBitPattern::is_valid_bit_pattern
|
||||
/// [`Pod`]: crate::Pod
|
||||
pub unsafe trait CheckedBitPattern: Copy {
|
||||
/// `Self` *must* have the same layout as the specified `Bits` except for
|
||||
/// the possible invalid bit patterns being checked during
|
||||
/// [`is_valid_bit_pattern`].
|
||||
///
|
||||
/// [`is_valid_bit_pattern`]: CheckedBitPattern::is_valid_bit_pattern
|
||||
type Bits: AnyBitPattern;
|
||||
|
||||
/// If this function returns true, then it must be valid to reinterpret `bits`
|
||||
/// as `&Self`.
|
||||
fn is_valid_bit_pattern(bits: &Self::Bits) -> bool;
|
||||
}
|
||||
|
||||
unsafe impl<T: AnyBitPattern> CheckedBitPattern for T {
|
||||
type Bits = T;
|
||||
|
||||
#[inline(always)]
|
||||
fn is_valid_bit_pattern(_bits: &T) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl CheckedBitPattern for char {
|
||||
type Bits = u32;
|
||||
|
||||
#[inline]
|
||||
fn is_valid_bit_pattern(bits: &Self::Bits) -> bool {
|
||||
core::char::from_u32(*bits).is_some()
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl CheckedBitPattern for bool {
|
||||
type Bits = u8;
|
||||
|
||||
#[inline]
|
||||
fn is_valid_bit_pattern(bits: &Self::Bits) -> bool {
|
||||
// DO NOT use the `matches!` macro, it isn't 1.34 compatible.
|
||||
match *bits {
|
||||
0 | 1 => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Rust 1.70.0 documents that NonZero[int] has the same layout as [int].
|
||||
macro_rules! impl_checked_for_nonzero {
|
||||
($($nonzero:ty: $primitive:ty),* $(,)?) => {
|
||||
$(
|
||||
unsafe impl CheckedBitPattern for $nonzero {
|
||||
type Bits = $primitive;
|
||||
|
||||
#[inline]
|
||||
fn is_valid_bit_pattern(bits: &Self::Bits) -> bool {
|
||||
*bits != 0
|
||||
}
|
||||
}
|
||||
)*
|
||||
};
|
||||
}
|
||||
impl_checked_for_nonzero! {
|
||||
core::num::NonZeroU8: u8,
|
||||
core::num::NonZeroI8: i8,
|
||||
core::num::NonZeroU16: u16,
|
||||
core::num::NonZeroI16: i16,
|
||||
core::num::NonZeroU32: u32,
|
||||
core::num::NonZeroI32: i32,
|
||||
core::num::NonZeroU64: u64,
|
||||
core::num::NonZeroI64: i64,
|
||||
core::num::NonZeroI128: i128,
|
||||
core::num::NonZeroU128: u128,
|
||||
core::num::NonZeroUsize: usize,
|
||||
core::num::NonZeroIsize: isize,
|
||||
}
|
||||
|
||||
/// The things that can go wrong when casting between [`CheckedBitPattern`] data
|
||||
/// forms.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum CheckedCastError {
|
||||
/// An error occurred during a true-[`Pod`] cast
|
||||
///
|
||||
/// [`Pod`]: crate::Pod
|
||||
PodCastError(crate::PodCastError),
|
||||
/// When casting to a [`CheckedBitPattern`] type, it is possible that the
|
||||
/// original data contains an invalid bit pattern. If so, the cast will
|
||||
/// fail and this error will be returned. Will never happen on casts
|
||||
/// between [`Pod`] types.
|
||||
///
|
||||
/// [`Pod`]: crate::Pod
|
||||
InvalidBitPattern,
|
||||
}
|
||||
|
||||
#[cfg(not(target_arch = "spirv"))]
|
||||
impl core::fmt::Display for CheckedCastError {
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||
write!(f, "{:?}", self)
|
||||
}
|
||||
}
|
||||
#[cfg(feature = "extern_crate_std")]
|
||||
#[cfg_attr(feature = "nightly_docs", doc(cfg(feature = "extern_crate_std")))]
|
||||
impl std::error::Error for CheckedCastError {}
|
||||
|
||||
impl From<crate::PodCastError> for CheckedCastError {
|
||||
fn from(err: crate::PodCastError) -> CheckedCastError {
|
||||
CheckedCastError::PodCastError(err)
|
||||
}
|
||||
}
|
||||
|
||||
/// Re-interprets `&[u8]` as `&T`.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * If the slice isn't aligned for the new type
|
||||
/// * If the slice's length isn’t exactly the size of the new type
|
||||
/// * If the slice contains an invalid bit pattern for `T`
|
||||
#[inline]
|
||||
pub fn try_from_bytes<T: CheckedBitPattern>(
|
||||
s: &[u8],
|
||||
) -> Result<&T, CheckedCastError> {
|
||||
let pod = crate::try_from_bytes(s)?;
|
||||
|
||||
if <T as CheckedBitPattern>::is_valid_bit_pattern(pod) {
|
||||
Ok(unsafe { &*(pod as *const <T as CheckedBitPattern>::Bits as *const T) })
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Re-interprets `&mut [u8]` as `&mut T`.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * If the slice isn't aligned for the new type
|
||||
/// * If the slice's length isn’t exactly the size of the new type
|
||||
/// * If the slice contains an invalid bit pattern for `T`
|
||||
#[inline]
|
||||
pub fn try_from_bytes_mut<T: CheckedBitPattern + NoUninit>(
|
||||
s: &mut [u8],
|
||||
) -> Result<&mut T, CheckedCastError> {
|
||||
let pod = unsafe { internal::try_from_bytes_mut(s) }?;
|
||||
|
||||
if <T as CheckedBitPattern>::is_valid_bit_pattern(pod) {
|
||||
Ok(unsafe { &mut *(pod as *mut <T as CheckedBitPattern>::Bits as *mut T) })
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Reads from the bytes as if they were a `T`.
|
||||
///
|
||||
/// ## Failure
|
||||
/// * If the `bytes` length is not equal to `size_of::<T>()`.
|
||||
/// * If the slice contains an invalid bit pattern for `T`
|
||||
#[inline]
|
||||
pub fn try_pod_read_unaligned<T: CheckedBitPattern>(
|
||||
bytes: &[u8],
|
||||
) -> Result<T, CheckedCastError> {
|
||||
let pod = crate::try_pod_read_unaligned(bytes)?;
|
||||
|
||||
if <T as CheckedBitPattern>::is_valid_bit_pattern(&pod) {
|
||||
Ok(unsafe { transmute!(pod) })
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to cast `A` into `B`.
|
||||
///
|
||||
/// Note that for this particular type of cast, alignment isn't a factor. The
|
||||
/// input value is semantically copied into the function and then returned to a
|
||||
/// new memory location which will have whatever the required alignment of the
|
||||
/// output type is.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * If the types don't have the same size this fails.
|
||||
/// * If `a` contains an invalid bit pattern for `B` this fails.
|
||||
#[inline]
|
||||
pub fn try_cast<A: NoUninit, B: CheckedBitPattern>(
|
||||
a: A,
|
||||
) -> Result<B, CheckedCastError> {
|
||||
let pod = crate::try_cast(a)?;
|
||||
|
||||
if <B as CheckedBitPattern>::is_valid_bit_pattern(&pod) {
|
||||
Ok(unsafe { transmute!(pod) })
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to convert a `&A` into `&B`.
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * If the reference isn't aligned in the new type
|
||||
/// * If the source type and target type aren't the same size.
|
||||
/// * If `a` contains an invalid bit pattern for `B` this fails.
|
||||
#[inline]
|
||||
pub fn try_cast_ref<A: NoUninit, B: CheckedBitPattern>(
|
||||
a: &A,
|
||||
) -> Result<&B, CheckedCastError> {
|
||||
let pod = crate::try_cast_ref(a)?;
|
||||
|
||||
if <B as CheckedBitPattern>::is_valid_bit_pattern(pod) {
|
||||
Ok(unsafe { &*(pod as *const <B as CheckedBitPattern>::Bits as *const B) })
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to convert a `&mut A` into `&mut B`.
|
||||
///
|
||||
/// As [`try_cast_ref`], but `mut`.
|
||||
#[inline]
|
||||
pub fn try_cast_mut<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: CheckedBitPattern + NoUninit,
|
||||
>(
|
||||
a: &mut A,
|
||||
) -> Result<&mut B, CheckedCastError> {
|
||||
let pod = unsafe { internal::try_cast_mut(a) }?;
|
||||
|
||||
if <B as CheckedBitPattern>::is_valid_bit_pattern(pod) {
|
||||
Ok(unsafe { &mut *(pod as *mut <B as CheckedBitPattern>::Bits as *mut B) })
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to convert `&[A]` into `&[B]` (possibly with a change in length).
|
||||
///
|
||||
/// * `input.as_ptr() as usize == output.as_ptr() as usize`
|
||||
/// * `input.len() * size_of::<A>() == output.len() * size_of::<B>()`
|
||||
///
|
||||
/// ## Failure
|
||||
///
|
||||
/// * If the target type has a greater alignment requirement and the input slice
|
||||
/// isn't aligned.
|
||||
/// * If the target element type is a different size from the current element
|
||||
/// type, and the output slice wouldn't be a whole number of elements when
|
||||
/// accounting for the size change (eg: 3 `u16` values is 1.5 `u32` values, so
|
||||
/// that's a failure).
|
||||
/// * If any element of the converted slice would contain an invalid bit pattern
|
||||
/// for `B` this fails.
|
||||
#[inline]
|
||||
pub fn try_cast_slice<A: NoUninit, B: CheckedBitPattern>(
|
||||
a: &[A],
|
||||
) -> Result<&[B], CheckedCastError> {
|
||||
let pod = crate::try_cast_slice(a)?;
|
||||
|
||||
if pod.iter().all(|pod| <B as CheckedBitPattern>::is_valid_bit_pattern(pod)) {
|
||||
Ok(unsafe {
|
||||
core::slice::from_raw_parts(pod.as_ptr() as *const B, pod.len())
|
||||
})
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Try to convert `&mut [A]` into `&mut [B]` (possibly with a change in
|
||||
/// length).
|
||||
///
|
||||
/// As [`try_cast_slice`], but `&mut`.
|
||||
#[inline]
|
||||
pub fn try_cast_slice_mut<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: CheckedBitPattern + NoUninit,
|
||||
>(
|
||||
a: &mut [A],
|
||||
) -> Result<&mut [B], CheckedCastError> {
|
||||
let pod = unsafe { internal::try_cast_slice_mut(a) }?;
|
||||
|
||||
if pod.iter().all(|pod| <B as CheckedBitPattern>::is_valid_bit_pattern(pod)) {
|
||||
Ok(unsafe {
|
||||
core::slice::from_raw_parts_mut(pod.as_mut_ptr() as *mut B, pod.len())
|
||||
})
|
||||
} else {
|
||||
Err(CheckedCastError::InvalidBitPattern)
|
||||
}
|
||||
}
|
||||
|
||||
/// Re-interprets `&[u8]` as `&T`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_from_bytes`] but will panic on error.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn from_bytes<T: CheckedBitPattern>(s: &[u8]) -> &T {
|
||||
match try_from_bytes(s) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("from_bytes", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Re-interprets `&mut [u8]` as `&mut T`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_from_bytes_mut`] but will panic on error.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn from_bytes_mut<T: NoUninit + CheckedBitPattern>(s: &mut [u8]) -> &mut T {
|
||||
match try_from_bytes_mut(s) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("from_bytes_mut", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Reads the slice into a `T` value.
|
||||
///
|
||||
/// ## Panics
|
||||
/// * This is like [`try_pod_read_unaligned`] but will panic on failure.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn pod_read_unaligned<T: CheckedBitPattern>(bytes: &[u8]) -> T {
|
||||
match try_pod_read_unaligned(bytes) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("pod_read_unaligned", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Cast `A` into `B`
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// * This is like [`try_cast`], but will panic on a size mismatch.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn cast<A: NoUninit, B: CheckedBitPattern>(a: A) -> B {
|
||||
match try_cast(a) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("cast", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Cast `&mut A` into `&mut B`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_cast_mut`] but will panic on error.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn cast_mut<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + CheckedBitPattern,
|
||||
>(
|
||||
a: &mut A,
|
||||
) -> &mut B {
|
||||
match try_cast_mut(a) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("cast_mut", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Cast `&A` into `&B`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_cast_ref`] but will panic on error.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn cast_ref<A: NoUninit, B: CheckedBitPattern>(a: &A) -> &B {
|
||||
match try_cast_ref(a) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("cast_ref", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Cast `&[A]` into `&[B]`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_cast_slice`] but will panic on error.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn cast_slice<A: NoUninit, B: CheckedBitPattern>(a: &[A]) -> &[B] {
|
||||
match try_cast_slice(a) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("cast_slice", e),
|
||||
}
|
||||
}
|
||||
|
||||
/// Cast `&mut [A]` into `&mut [B]`.
|
||||
///
|
||||
/// ## Panics
|
||||
///
|
||||
/// This is [`try_cast_slice_mut`] but will panic on error.
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
pub fn cast_slice_mut<
|
||||
A: NoUninit + AnyBitPattern,
|
||||
B: NoUninit + CheckedBitPattern,
|
||||
>(
|
||||
a: &mut [A],
|
||||
) -> &mut [B] {
|
||||
match try_cast_slice_mut(a) {
|
||||
Ok(t) => t,
|
||||
Err(e) => something_went_wrong("cast_slice_mut", e),
|
||||
}
|
||||
}
|
||||
206
third_party/rust/bytemuck/src/contiguous.rs
vendored
Normal file
206
third_party/rust/bytemuck/src/contiguous.rs
vendored
Normal file
@@ -0,0 +1,206 @@
|
||||
#![allow(clippy::legacy_numeric_constants)]
|
||||
|
||||
use super::*;
|
||||
|
||||
/// A trait indicating that:
|
||||
///
|
||||
/// 1. A type has an equivalent representation to some known integral type.
|
||||
/// 2. All instances of this type fall in a fixed range of values.
|
||||
/// 3. Within that range, there are no gaps.
|
||||
///
|
||||
/// This is generally useful for fieldless enums (aka "c-style" enums), however
|
||||
/// it's important that it only be used for those with an explicit `#[repr]`, as
|
||||
/// `#[repr(Rust)]` fieldess enums have an unspecified layout.
|
||||
///
|
||||
/// Additionally, you shouldn't assume that all implementations are enums. Any
|
||||
/// type which meets the requirements above while following the rules under
|
||||
/// "Safety" below is valid.
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```
|
||||
/// # use bytemuck::Contiguous;
|
||||
/// #[repr(u8)]
|
||||
/// #[derive(Debug, Copy, Clone, PartialEq)]
|
||||
/// enum Foo {
|
||||
/// A = 0,
|
||||
/// B = 1,
|
||||
/// C = 2,
|
||||
/// D = 3,
|
||||
/// E = 4,
|
||||
/// }
|
||||
/// unsafe impl Contiguous for Foo {
|
||||
/// type Int = u8;
|
||||
/// const MIN_VALUE: u8 = Foo::A as u8;
|
||||
/// const MAX_VALUE: u8 = Foo::E as u8;
|
||||
/// }
|
||||
/// assert_eq!(Foo::from_integer(3).unwrap(), Foo::D);
|
||||
/// assert_eq!(Foo::from_integer(8), None);
|
||||
/// assert_eq!(Foo::C.into_integer(), 2);
|
||||
/// ```
|
||||
/// # Safety
|
||||
///
|
||||
/// This is an unsafe trait, and incorrectly implementing it is undefined
|
||||
/// behavior.
|
||||
///
|
||||
/// Informally, by implementing it, you're asserting that `C` is identical to
|
||||
/// the integral type `C::Int`, and that every `C` falls between `C::MIN_VALUE`
|
||||
/// and `C::MAX_VALUE` exactly once, without any gaps.
|
||||
///
|
||||
/// Precisely, the guarantees you must uphold when implementing `Contiguous` for
|
||||
/// some type `C` are:
|
||||
///
|
||||
/// 1. The size of `C` and `C::Int` must be the same, and neither may be a ZST.
|
||||
/// (Note: alignment is explicitly allowed to differ)
|
||||
///
|
||||
/// 2. `C::Int` must be a primitive integer, and not a wrapper type. In the
|
||||
/// future, this may be lifted to include cases where the behavior is
|
||||
/// identical for a relevant set of traits (Ord, arithmetic, ...).
|
||||
///
|
||||
/// 3. All `C::Int`s which are in the *inclusive* range between `C::MIN_VALUE`
|
||||
/// and `C::MAX_VALUE` are bitwise identical to unique valid instances of
|
||||
/// `C`.
|
||||
///
|
||||
/// 4. There exist no instances of `C` such that their bitpatterns, when
|
||||
/// interpreted as instances of `C::Int`, fall outside of the `MAX_VALUE` /
|
||||
/// `MIN_VALUE` range -- It is legal for unsafe code to assume that if it
|
||||
/// gets a `C` that implements `Contiguous`, it is in the appropriate range.
|
||||
///
|
||||
/// 5. Finally, you promise not to provide overridden implementations of
|
||||
/// `Contiguous::from_integer` and `Contiguous::into_integer`.
|
||||
///
|
||||
/// For clarity, the following rules could be derived from the above, but are
|
||||
/// listed explicitly:
|
||||
///
|
||||
/// - `C::MAX_VALUE` must be greater or equal to `C::MIN_VALUE` (therefore, `C`
|
||||
/// must be an inhabited type).
|
||||
///
|
||||
/// - There exist no two values between `MIN_VALUE` and `MAX_VALUE` such that
|
||||
/// when interpreted as a `C` they are considered identical (by, say, match).
|
||||
pub unsafe trait Contiguous: Copy + 'static {
|
||||
/// The primitive integer type with an identical representation to this
|
||||
/// type.
|
||||
///
|
||||
/// Contiguous is broadly intended for use with fieldless enums, and for
|
||||
/// these the correct integer type is easy: The enum should have a
|
||||
/// `#[repr(Int)]` or `#[repr(C)]` attribute, (if it does not, it is
|
||||
/// *unsound* to implement `Contiguous`!).
|
||||
///
|
||||
/// - For `#[repr(Int)]`, use the listed `Int`. e.g. `#[repr(u8)]` should use
|
||||
/// `type Int = u8`.
|
||||
///
|
||||
/// - For `#[repr(C)]`, use whichever type the C compiler will use to
|
||||
/// represent the given enum. This is usually `c_int` (from `std::os::raw`
|
||||
/// or `libc`), but it's up to you to make the determination as the
|
||||
/// implementer of the unsafe trait.
|
||||
///
|
||||
/// For precise rules, see the list under "Safety" above.
|
||||
type Int: Copy + Ord;
|
||||
|
||||
/// The upper *inclusive* bound for valid instances of this type.
|
||||
const MAX_VALUE: Self::Int;
|
||||
|
||||
/// The lower *inclusive* bound for valid instances of this type.
|
||||
const MIN_VALUE: Self::Int;
|
||||
|
||||
/// If `value` is within the range for valid instances of this type,
|
||||
/// returns `Some(converted_value)`, otherwise, returns `None`.
|
||||
///
|
||||
/// This is a trait method so that you can write `value.into_integer()` in
|
||||
/// your code. It is a contract of this trait that if you implement
|
||||
/// `Contiguous` on your type you **must not** override this method.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// We will not panic for any correct implementation of `Contiguous`, but
|
||||
/// *may* panic if we detect an incorrect one.
|
||||
///
|
||||
/// This is undefined behavior regardless, so it could have been the nasal
|
||||
/// demons at that point anyway ;).
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
fn from_integer(value: Self::Int) -> Option<Self> {
|
||||
// Guard against an illegal implementation of Contiguous. Annoyingly we
|
||||
// can't rely on `transmute` to do this for us (see below), but
|
||||
// whatever, this gets compiled into nothing in release.
|
||||
assert!(size_of::<Self>() == size_of::<Self::Int>());
|
||||
if Self::MIN_VALUE <= value && value <= Self::MAX_VALUE {
|
||||
// SAFETY: We've checked their bounds (and their size, even though
|
||||
// they've sworn under the Oath Of Unsafe Rust that that already
|
||||
// matched) so this is allowed by `Contiguous`'s unsafe contract.
|
||||
//
|
||||
// So, the `transmute!`. ideally we'd use transmute here, which
|
||||
// is more obviously safe. Sadly, we can't, as these types still
|
||||
// have unspecified sizes.
|
||||
Some(unsafe { transmute!(value) })
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
/// Perform the conversion from `C` into the underlying integral type. This
|
||||
/// mostly exists otherwise generic code would need unsafe for the `value as
|
||||
/// integer`
|
||||
///
|
||||
/// This is a trait method so that you can write `value.into_integer()` in
|
||||
/// your code. It is a contract of this trait that if you implement
|
||||
/// `Contiguous` on your type you **must not** override this method.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// We will not panic for any correct implementation of `Contiguous`, but
|
||||
/// *may* panic if we detect an incorrect one.
|
||||
///
|
||||
/// This is undefined behavior regardless, so it could have been the nasal
|
||||
/// demons at that point anyway ;).
|
||||
#[inline]
|
||||
#[cfg_attr(feature = "track_caller", track_caller)]
|
||||
fn into_integer(self) -> Self::Int {
|
||||
// Guard against an illegal implementation of Contiguous. Annoyingly we
|
||||
// can't rely on `transmute` to do the size check for us (see
|
||||
// `from_integer's comment`), but whatever, this gets compiled into
|
||||
// nothing in release. Note that we don't check the result of cast
|
||||
assert!(size_of::<Self>() == size_of::<Self::Int>());
|
||||
|
||||
// SAFETY: The unsafe contract requires that these have identical
|
||||
// representations, and that the range be entirely valid. Using
|
||||
// transmute! instead of transmute here is annoying, but is required
|
||||
// as `Self` and `Self::Int` have unspecified sizes still.
|
||||
unsafe { transmute!(self) }
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! impl_contiguous {
|
||||
($($src:ty as $repr:ident in [$min:expr, $max:expr];)*) => {$(
|
||||
unsafe impl Contiguous for $src {
|
||||
type Int = $repr;
|
||||
const MAX_VALUE: $repr = $max;
|
||||
const MIN_VALUE: $repr = $min;
|
||||
}
|
||||
)*};
|
||||
}
|
||||
|
||||
impl_contiguous! {
|
||||
bool as u8 in [0, 1];
|
||||
|
||||
u8 as u8 in [0, u8::max_value()];
|
||||
u16 as u16 in [0, u16::max_value()];
|
||||
u32 as u32 in [0, u32::max_value()];
|
||||
u64 as u64 in [0, u64::max_value()];
|
||||
u128 as u128 in [0, u128::max_value()];
|
||||
usize as usize in [0, usize::max_value()];
|
||||
|
||||
i8 as i8 in [i8::min_value(), i8::max_value()];
|
||||
i16 as i16 in [i16::min_value(), i16::max_value()];
|
||||
i32 as i32 in [i32::min_value(), i32::max_value()];
|
||||
i64 as i64 in [i64::min_value(), i64::max_value()];
|
||||
i128 as i128 in [i128::min_value(), i128::max_value()];
|
||||
isize as isize in [isize::min_value(), isize::max_value()];
|
||||
|
||||
NonZeroU8 as u8 in [1, u8::max_value()];
|
||||
NonZeroU16 as u16 in [1, u16::max_value()];
|
||||
NonZeroU32 as u32 in [1, u32::max_value()];
|
||||
NonZeroU64 as u64 in [1, u64::max_value()];
|
||||
NonZeroU128 as u128 in [1, u128::max_value()];
|
||||
NonZeroUsize as usize in [1, usize::max_value()];
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user