Bug 1952126 - chore(webgpu): update WGPU to dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c r=webgpu-reviewers,supply-chain-reviewers,teoxoy
Differential Revision: https://phabricator.services.mozilla.com/D240571
This commit is contained in:
@@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust"
|
|||||||
rev = "43c22248d136c8b38fe42ea709d08da6355cf04b"
|
rev = "43c22248d136c8b38fe42ea709d08da6355cf04b"
|
||||||
replace-with = "vendored-sources"
|
replace-with = "vendored-sources"
|
||||||
|
|
||||||
[source."git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0"]
|
[source."git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"]
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
replace-with = "vendored-sources"
|
replace-with = "vendored-sources"
|
||||||
|
|
||||||
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]
|
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]
|
||||||
|
|||||||
12
Cargo.lock
generated
12
Cargo.lock
generated
@@ -4480,7 +4480,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "naga"
|
name = "naga"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bit-set",
|
"bit-set",
|
||||||
@@ -7350,7 +7350,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-core"
|
name = "wgpu-core"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bit-vec",
|
"bit-vec",
|
||||||
@@ -7378,7 +7378,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-core-deps-apple"
|
name = "wgpu-core-deps-apple"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"wgpu-hal",
|
"wgpu-hal",
|
||||||
]
|
]
|
||||||
@@ -7386,7 +7386,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-core-deps-windows-linux-android"
|
name = "wgpu-core-deps-windows-linux-android"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"wgpu-hal",
|
"wgpu-hal",
|
||||||
]
|
]
|
||||||
@@ -7394,7 +7394,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-hal"
|
name = "wgpu-hal"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android_system_properties",
|
"android_system_properties",
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
@@ -7429,7 +7429,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-types"
|
name = "wgpu-types"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu?rev=93f64dc847a0e6788b17b292ae4d7d59361e3be0#93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c#dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.0",
|
"bitflags 2.9.0",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ default = []
|
|||||||
[dependencies.wgc]
|
[dependencies.wgc]
|
||||||
package = "wgpu-core"
|
package = "wgpu-core"
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
# TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182
|
# TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182
|
||||||
features = ["serde", "replay", "trace", "strict_asserts", "wgsl", "api_log_info", "indirect-validation"]
|
features = ["serde", "replay", "trace", "strict_asserts", "wgsl", "api_log_info", "indirect-validation"]
|
||||||
|
|
||||||
@@ -26,32 +26,32 @@ features = ["serde", "replay", "trace", "strict_asserts", "wgsl", "api_log_info"
|
|||||||
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
|
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
|
||||||
package = "wgpu-core"
|
package = "wgpu-core"
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
features = ["metal"]
|
features = ["metal"]
|
||||||
|
|
||||||
# We want the wgpu-core Direct3D backends on Windows.
|
# We want the wgpu-core Direct3D backends on Windows.
|
||||||
[target.'cfg(windows)'.dependencies.wgc]
|
[target.'cfg(windows)'.dependencies.wgc]
|
||||||
package = "wgpu-core"
|
package = "wgpu-core"
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
features = ["dx12"]
|
features = ["dx12"]
|
||||||
|
|
||||||
# We want the wgpu-core Vulkan backend on Linux and Windows.
|
# 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]
|
[target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc]
|
||||||
package = "wgpu-core"
|
package = "wgpu-core"
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
features = ["vulkan"]
|
features = ["vulkan"]
|
||||||
|
|
||||||
[dependencies.wgt]
|
[dependencies.wgt]
|
||||||
package = "wgpu-types"
|
package = "wgpu-types"
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
|
|
||||||
[dependencies.wgh]
|
[dependencies.wgh]
|
||||||
package = "wgpu-hal"
|
package = "wgpu-hal"
|
||||||
git = "https://github.com/gfx-rs/wgpu"
|
git = "https://github.com/gfx-rs/wgpu"
|
||||||
rev = "93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
rev = "dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
features = ["oom_panic", "device_lost_panic", "internal_error_panic"]
|
features = ["oom_panic", "device_lost_panic", "internal_error_panic"]
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ origin:
|
|||||||
|
|
||||||
# Human-readable identifier for this version/release
|
# Human-readable identifier for this version/release
|
||||||
# Generally "version NNN", "tag SSS", "bookmark SSS"
|
# Generally "version NNN", "tag SSS", "bookmark SSS"
|
||||||
release: commit 93f64dc847a0e6788b17b292ae4d7d59361e3be0
|
release: dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c (2025-03-07T03:44:36Z).
|
||||||
|
|
||||||
# Revision to pull in
|
# Revision to pull in
|
||||||
# Must be a long or short commit SHA (long preferred)
|
# Must be a long or short commit SHA (long preferred)
|
||||||
revision: 93f64dc847a0e6788b17b292ae4d7d59361e3be0
|
revision: dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c
|
||||||
|
|
||||||
license: ['MIT', 'Apache-2.0']
|
license: ['MIT', 'Apache-2.0']
|
||||||
|
|
||||||
|
|||||||
@@ -3647,9 +3647,12 @@ criteria = "safe-to-deploy"
|
|||||||
delta = "23.1.0 -> 24.0.0"
|
delta = "23.1.0 -> 24.0.0"
|
||||||
|
|
||||||
[[audits.naga]]
|
[[audits.naga]]
|
||||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
who = [
|
||||||
|
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||||
|
"Erich Gubler <erichdongubler@gmail.com>",
|
||||||
|
]
|
||||||
criteria = "safe-to-deploy"
|
criteria = "safe-to-deploy"
|
||||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
importable = false
|
importable = false
|
||||||
|
|
||||||
[[audits.net2]]
|
[[audits.net2]]
|
||||||
@@ -5868,9 +5871,12 @@ criteria = "safe-to-deploy"
|
|||||||
delta = "23.0.1 -> 24.0.0"
|
delta = "23.0.1 -> 24.0.0"
|
||||||
|
|
||||||
[[audits.wgpu-core]]
|
[[audits.wgpu-core]]
|
||||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
who = [
|
||||||
|
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||||
|
"Erich Gubler <erichdongubler@gmail.com>",
|
||||||
|
]
|
||||||
criteria = "safe-to-deploy"
|
criteria = "safe-to-deploy"
|
||||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
importable = false
|
importable = false
|
||||||
|
|
||||||
[[audits.wgpu-hal]]
|
[[audits.wgpu-hal]]
|
||||||
@@ -5952,9 +5958,12 @@ criteria = "safe-to-deploy"
|
|||||||
delta = "23.0.1 -> 24.0.0"
|
delta = "23.0.1 -> 24.0.0"
|
||||||
|
|
||||||
[[audits.wgpu-hal]]
|
[[audits.wgpu-hal]]
|
||||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
who = [
|
||||||
|
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||||
|
"Erich Gubler <erichdongubler@gmail.com>",
|
||||||
|
]
|
||||||
criteria = "safe-to-deploy"
|
criteria = "safe-to-deploy"
|
||||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
importable = false
|
importable = false
|
||||||
|
|
||||||
[[audits.wgpu-types]]
|
[[audits.wgpu-types]]
|
||||||
@@ -6031,9 +6040,12 @@ criteria = "safe-to-deploy"
|
|||||||
delta = "23.0.0 -> 24.0.0"
|
delta = "23.0.0 -> 24.0.0"
|
||||||
|
|
||||||
[[audits.wgpu-types]]
|
[[audits.wgpu-types]]
|
||||||
who = "Teodor Tanasoaia <ttanasoaia@mozilla.com>"
|
who = [
|
||||||
|
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
|
||||||
|
"Erich Gubler <erichdongubler@gmail.com>",
|
||||||
|
]
|
||||||
criteria = "safe-to-deploy"
|
criteria = "safe-to-deploy"
|
||||||
delta = "24.0.0 -> 24.0.0@git:93f64dc847a0e6788b17b292ae4d7d59361e3be0"
|
delta = "24.0.0 -> 24.0.0@git:dc02f91ffe1feab8c35d3fdf41f61a62a5004d2c"
|
||||||
importable = false
|
importable = false
|
||||||
|
|
||||||
[[audits.whatsys]]
|
[[audits.whatsys]]
|
||||||
|
|||||||
@@ -102,10 +102,10 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": [OK, ERROR]
|
if os == "win": [OK, ERROR]
|
||||||
[:interpolated=false;sampleCount=1;rasterizationMask=0]
|
[:interpolated=false;sampleCount=1;rasterizationMask=0]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:interpolated=false;sampleCount=1;rasterizationMask=1]
|
[:interpolated=false;sampleCount=1;rasterizationMask=1]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:interpolated=false;sampleCount=4;rasterizationMask=0]
|
[:interpolated=false;sampleCount=4;rasterizationMask=0]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
@@ -156,10 +156,10 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:interpolated=true;sampleCount=1;rasterizationMask=0]
|
[:interpolated=true;sampleCount=1;rasterizationMask=0]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:interpolated=true;sampleCount=1;rasterizationMask=1]
|
[:interpolated=true;sampleCount=1;rasterizationMask=1]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:interpolated=true;sampleCount=4;rasterizationMask=0]
|
[:interpolated=true;sampleCount=4;rasterizationMask=0]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
[:limitTest="atDefault";testValueName="overLimit"]
|
[:limitTest="atDefault";testValueName="overLimit"]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit"]
|
[:limitTest="atMaximum";testValueName="atLimit"]
|
||||||
|
expected:
|
||||||
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit"]
|
[:limitTest="atMaximum";testValueName="overLimit"]
|
||||||
expected:
|
expected:
|
||||||
|
|||||||
@@ -72,7 +72,11 @@
|
|||||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: FAIL
|
||||||
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -83,7 +87,11 @@
|
|||||||
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: FAIL
|
||||||
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="atDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -100,7 +108,7 @@
|
|||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -111,7 +119,7 @@
|
|||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -128,7 +136,7 @@
|
|||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -139,7 +147,7 @@
|
|||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -158,8 +166,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -172,8 +179,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -193,8 +199,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -207,8 +212,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -226,7 +230,7 @@
|
|||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -237,6 +241,7 @@
|
|||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -253,7 +258,7 @@
|
|||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -264,7 +269,7 @@
|
|||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -283,8 +288,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -297,8 +301,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -318,8 +321,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -332,8 +334,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -351,7 +352,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -362,7 +363,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -379,7 +380,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -390,7 +391,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -407,7 +408,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -418,7 +419,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -435,7 +436,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -446,7 +447,7 @@
|
|||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -463,6 +464,7 @@
|
|||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -472,6 +474,7 @@
|
|||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -487,6 +490,7 @@
|
|||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -497,6 +501,7 @@
|
|||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
if os == "mac": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -515,7 +520,8 @@
|
|||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": FAIL
|
if os == "linux" and debug: FAIL
|
||||||
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
@@ -528,7 +534,8 @@
|
|||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": FAIL
|
if os == "linux" and debug: FAIL
|
||||||
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
@@ -548,7 +555,8 @@
|
|||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": FAIL
|
if os == "linux" and debug: FAIL
|
||||||
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
@@ -561,7 +569,8 @@
|
|||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": FAIL
|
if os == "linux" and debug: FAIL
|
||||||
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
@@ -671,6 +680,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -678,6 +688,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -688,6 +699,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -695,6 +707,7 @@
|
|||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -706,7 +719,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -715,7 +729,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -727,7 +742,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -736,7 +752,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="atMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -750,6 +767,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -760,6 +778,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -773,6 +792,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -780,6 +800,7 @@
|
|||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -791,7 +812,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -800,7 +822,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -812,7 +835,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -821,7 +845,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected: [FAIL, TIMEOUT, NOTRUN]
|
expected: [FAIL, TIMEOUT, NOTRUN]
|
||||||
@@ -832,6 +857,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -839,6 +865,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -849,6 +876,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -856,6 +884,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -866,6 +895,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -873,6 +903,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -883,6 +914,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -890,6 +922,7 @@
|
|||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="overMaximum";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected: [PASS, TIMEOUT, NOTRUN]
|
expected: [PASS, TIMEOUT, NOTRUN]
|
||||||
@@ -925,6 +958,7 @@
|
|||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -934,6 +968,7 @@
|
|||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba16uint"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="atLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -951,7 +986,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rg8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -964,7 +1000,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=1;interleaveFormat="rgba8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -984,7 +1021,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rg8unorm"]
|
||||||
expected:
|
expected:
|
||||||
@@ -997,7 +1035,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
[:limitTest="underDefault";testValueName="overLimit";sampleCount=4;interleaveFormat="rgba8unorm"]
|
||||||
expected:
|
expected:
|
||||||
|
|||||||
@@ -316,13 +316,15 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
|
[:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: FAIL
|
||||||
|
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
|
[:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
|
||||||
expected:
|
expected:
|
||||||
|
|||||||
@@ -942,14 +942,17 @@
|
|||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||||
|
|
||||||
@@ -962,14 +965,17 @@
|
|||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="atDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
[:limitTest="atDefault";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
@@ -1706,151 +1712,181 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
@@ -2126,451 +2162,541 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="backward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="forward"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="overMaximum";testValueName="overLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=1;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=2;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=3;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=4;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=5;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=6;type="storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="forward"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
[:limitTest="underDefault";testValueName="atLimit";visibility=7;type="read-only-storage";order="shiftByHalf"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
[:limitTest="underDefault";testValueName="overLimit";visibility=1;type="read-only-storage";order="backward"]
|
||||||
expected:
|
expected:
|
||||||
|
|||||||
@@ -785,10 +785,7 @@
|
|||||||
|
|
||||||
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:*]
|
[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageTexturesPerShaderStage:createPipeline,at_over:*]
|
||||||
implementation-status: backlog
|
implementation-status: backlog
|
||||||
expected:
|
expected: [OK, TIMEOUT]
|
||||||
if os == "win" and debug: [OK, TIMEOUT]
|
|
||||||
if os == "linux": [OK, TIMEOUT]
|
|
||||||
if os == "mac": [OK, TIMEOUT]
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
|
|
||||||
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="atDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
@@ -867,450 +864,558 @@
|
|||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="atMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
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 == "linux": [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="atLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="overMaximum";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
if os == "linux": [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="underDefault";testValueName="atLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
@@ -1336,6 +1441,8 @@
|
|||||||
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="underDefault";testValueName="atLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
|
|
||||||
@@ -1351,80 +1458,101 @@
|
|||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win" and debug: FAIL
|
||||||
|
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: FAIL
|
if os == "linux" and debug: FAIL
|
||||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-only"]
|
||||||
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="read-write"]
|
||||||
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win" and debug: FAIL
|
||||||
|
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: FAIL
|
if os == "linux" and debug: FAIL
|
||||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertex";access="read-only"]
|
||||||
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="compute";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win" and debug: FAIL
|
||||||
|
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: FAIL
|
if os == "linux" and debug: FAIL
|
||||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="read-write"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="fragment";access="write-only"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win" and debug: FAIL
|
||||||
|
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: FAIL
|
if os == "linux" and debug: FAIL
|
||||||
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertex";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
[:limitTest="underDefault";testValueName="overLimit";async=true;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";access="read-only"]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10438,30 +10438,18 @@
|
|||||||
|
|
||||||
[:format="bc2-rgba-unorm";filt="linear";mode="c"]
|
[:format="bc2-rgba-unorm";filt="linear";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm";filt="linear";mode="m"]
|
[:format="bc2-rgba-unorm";filt="linear";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm";filt="linear";mode="r"]
|
[:format="bc2-rgba-unorm";filt="linear";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm";filt="nearest";mode="c"]
|
[:format="bc2-rgba-unorm";filt="nearest";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
@@ -10470,138 +10458,78 @@
|
|||||||
|
|
||||||
[:format="bc2-rgba-unorm";filt="nearest";mode="m"]
|
[:format="bc2-rgba-unorm";filt="nearest";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm";filt="nearest";mode="r"]
|
[:format="bc2-rgba-unorm";filt="nearest";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="c"]
|
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="m"]
|
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="r"]
|
[:format="bc2-rgba-unorm-srgb";filt="linear";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="c"]
|
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="m"]
|
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="r"]
|
[:format="bc2-rgba-unorm-srgb";filt="nearest";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm";filt="linear";mode="c"]
|
[:format="bc3-rgba-unorm";filt="linear";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm";filt="linear";mode="m"]
|
[:format="bc3-rgba-unorm";filt="linear";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm";filt="linear";mode="r"]
|
[:format="bc3-rgba-unorm";filt="linear";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm";filt="nearest";mode="c"]
|
[:format="bc3-rgba-unorm";filt="nearest";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm";filt="nearest";mode="m"]
|
[:format="bc3-rgba-unorm";filt="nearest";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm";filt="nearest";mode="r"]
|
[:format="bc3-rgba-unorm";filt="nearest";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="c"]
|
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="m"]
|
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
@@ -10610,39 +10538,23 @@
|
|||||||
|
|
||||||
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="r"]
|
[:format="bc3-rgba-unorm-srgb";filt="linear";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="c"]
|
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="m"]
|
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="m"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="r"]
|
[:format="bc3-rgba-unorm-srgb";filt="nearest";mode="r"]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "win" and not debug: FAIL
|
if not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="bc4-r-snorm";filt="linear";mode="c"]
|
[:format="bc4-r-snorm";filt="linear";mode="c"]
|
||||||
expected:
|
expected:
|
||||||
|
|||||||
@@ -852,31 +852,33 @@
|
|||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=false]
|
[:format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=false]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if not debug: FAIL
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac": FAIL
|
|
||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=true]
|
[:format="depth24plus";filt="nearest";modeU="c";modeV="m";offset=true]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "win" and not debug: FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
if os == "linux" and not debug: FAIL
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: FAIL
|
||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=false]
|
[:format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=false]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
if os == "linux" and not debug: FAIL
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: FAIL
|
||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=true]
|
[:format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=true]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if os == "win": FAIL
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: FAIL
|
if os == "linux" and not debug: FAIL
|
||||||
if os == "mac": FAIL
|
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: FAIL
|
||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="m";modeV="c";offset=false]
|
[:format="depth24plus";filt="nearest";modeU="m";modeV="c";offset=false]
|
||||||
expected:
|
expected:
|
||||||
@@ -910,11 +912,8 @@
|
|||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=false]
|
[:format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=false]
|
||||||
expected:
|
expected:
|
||||||
if os == "win": FAIL
|
if debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
if not debug: FAIL
|
||||||
if os == "linux" and not debug: FAIL
|
|
||||||
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
|
|
||||||
if os == "mac" and not debug: FAIL
|
|
||||||
|
|
||||||
[:format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=true]
|
[:format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=true]
|
||||||
expected:
|
expected:
|
||||||
@@ -1230,13 +1229,25 @@
|
|||||||
if os == "mac" and not debug: FAIL
|
if os == "mac" and not debug: FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="c";modeV="c";offset=false]
|
[:format="depth32float";filt="linear";modeU="c";modeV="c";offset=false]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="c";modeV="c";offset=true]
|
[:format="depth32float";filt="linear";modeU="c";modeV="c";offset=true]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="c";modeV="m";offset=false]
|
[:format="depth32float";filt="linear";modeU="c";modeV="m";offset=false]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="c";modeV="m";offset=true]
|
[:format="depth32float";filt="linear";modeU="c";modeV="m";offset=true]
|
||||||
expected:
|
expected:
|
||||||
@@ -1246,10 +1257,18 @@
|
|||||||
if os == "mac": FAIL
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="c";modeV="r";offset=false]
|
[:format="depth32float";filt="linear";modeU="c";modeV="r";offset=false]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="c";modeV="r";offset=true]
|
[:format="depth32float";filt="linear";modeU="c";modeV="r";offset=true]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="linear";modeU="m";modeV="c";offset=false]
|
[:format="depth32float";filt="linear";modeU="m";modeV="c";offset=false]
|
||||||
expected:
|
expected:
|
||||||
@@ -1360,10 +1379,18 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="nearest";modeU="m";modeV="m";offset=false]
|
[:format="depth32float";filt="nearest";modeU="m";modeV="m";offset=false]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="nearest";modeU="m";modeV="m";offset=true]
|
[:format="depth32float";filt="nearest";modeU="m";modeV="m";offset=true]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
|
||||||
|
if os == "linux" and not debug: FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:format="depth32float";filt="nearest";modeU="m";modeV="r";offset=false]
|
[:format="depth32float";filt="nearest";modeU="m";modeV="r";offset=false]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -25774,7 +25774,7 @@
|
|||||||
tags: [webgpu, webgpu-long]
|
tags: [webgpu, webgpu-long]
|
||||||
implementation-status: backlog
|
implementation-status: backlog
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: CRASH
|
if os == "win": CRASH
|
||||||
if os == "linux" and debug: CRASH
|
if os == "linux" and debug: CRASH
|
||||||
if os == "mac": CRASH
|
if os == "mac": CRASH
|
||||||
[:stage="c";format="astc-10x10-unorm";filt="linear";modeU="c";modeV="c";offset=false]
|
[:stage="c";format="astc-10x10-unorm";filt="linear";modeU="c";modeV="c";offset=false]
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:bgra8unorm_swizzle:*]
|
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:bgra8unorm_swizzle:*]
|
||||||
implementation-status: backlog
|
|
||||||
[:]
|
[:]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:out_of_bounds:*]
|
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:out_of_bounds:*]
|
||||||
|
|||||||
@@ -1,16 +1,26 @@
|
|||||||
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,workgroupUniformLoad:types:*]
|
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,workgroupUniformLoad:types:*]
|
||||||
implementation-status: backlog
|
implementation-status:
|
||||||
|
if os == "win": backlog
|
||||||
|
if os == "mac": backlog
|
||||||
[:type="ComplexStruct";wgsize=[1,128\]]
|
[:type="ComplexStruct";wgsize=[1,128\]]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:type="ComplexStruct";wgsize=[1,1\]]
|
[:type="ComplexStruct";wgsize=[1,1\]]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:type="ComplexStruct";wgsize=[16,16\]]
|
[:type="ComplexStruct";wgsize=[16,16\]]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:type="ComplexStruct";wgsize=[3,7\]]
|
[:type="ComplexStruct";wgsize=[3,7\]]
|
||||||
expected: FAIL
|
expected:
|
||||||
|
if os == "win": FAIL
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
||||||
[:type="SimpleStruct";wgsize=[1,128\]]
|
[:type="SimpleStruct";wgsize=[1,128\]]
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win" and not debug: CRASH
|
if os == "win" and not debug: CRASH
|
||||||
if os == "linux" and debug: [OK, CRASH]
|
if os == "linux" and debug: [OK, CRASH]
|
||||||
|
if os == "linux" and not debug: CRASH
|
||||||
[:addressSpace="function";workgroupSize=[1,1,1\];batch__=0]
|
[:addressSpace="function";workgroupSize=[1,1,1\];batch__=0]
|
||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: FAIL
|
if os == "win" and debug: FAIL
|
||||||
|
|||||||
@@ -20,17 +20,14 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:case="override_oob_neg"]
|
[:case="override_oob_neg"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:case="override_oob_pos"]
|
[:case="override_oob_pos"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:case="runtime_array_const_oob_neg"]
|
[:case="runtime_array_const_oob_neg"]
|
||||||
|
|
||||||
[:case="runtime_array_override_oob_neg"]
|
[:case="runtime_array_override_oob_neg"]
|
||||||
|
|
||||||
[:case="runtime_in_bounds"]
|
[:case="runtime_in_bounds"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:case="runtime_oob_neg"]
|
[:case="runtime_oob_neg"]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -20,17 +20,14 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:case="override_oob_neg"]
|
[:case="override_oob_neg"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:case="override_oob_pos"]
|
[:case="override_oob_pos"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:case="runtime_array_const_oob_neg"]
|
[:case="runtime_array_const_oob_neg"]
|
||||||
|
|
||||||
[:case="runtime_array_override_oob_neg"]
|
[:case="runtime_array_override_oob_neg"]
|
||||||
|
|
||||||
[:case="runtime_in_bounds"]
|
[:case="runtime_in_bounds"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:case="runtime_oob_neg"]
|
[:case="runtime_oob_neg"]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -111,7 +111,6 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:op="%26%26";rhs="overflow";short_circuit=false]
|
[:op="%26%26";rhs="overflow";short_circuit=false]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:op="%26%26";rhs="overflow";short_circuit=true]
|
[:op="%26%26";rhs="overflow";short_circuit=true]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
@@ -132,7 +131,6 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:op="%7C%7C";rhs="overflow";short_circuit=false]
|
[:op="%7C%7C";rhs="overflow";short_circuit=false]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:op="%7C%7C";rhs="overflow";short_circuit=true]
|
[:op="%7C%7C";rhs="overflow";short_circuit=true]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
@@ -156,7 +154,6 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:op="%26%26";rhs="overflow";short_circuit=false]
|
[:op="%26%26";rhs="overflow";short_circuit=false]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:op="%26%26";rhs="overflow";short_circuit=true]
|
[:op="%26%26";rhs="overflow";short_circuit=true]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
@@ -177,7 +174,6 @@
|
|||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[:op="%7C%7C";rhs="overflow";short_circuit=false]
|
[:op="%7C%7C";rhs="overflow";short_circuit=false]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:op="%7C%7C";rhs="overflow";short_circuit=true]
|
[:op="%7C%7C";rhs="overflow";short_circuit=true]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
[cts.https.html?q=webgpu:shader,validation,extension,readonly_and_readwrite_storage_textures:textureBarrier:*]
|
[cts.https.html?q=webgpu:shader,validation,extension,readonly_and_readwrite_storage_textures:textureBarrier:*]
|
||||||
|
implementation-status: backlog
|
||||||
[:]
|
[:]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[cts.https.html?q=webgpu:shader,validation,extension,readonly_and_readwrite_storage_textures:var_decl:*]
|
[cts.https.html?q=webgpu:shader,validation,extension,readonly_and_readwrite_storage_textures:var_decl:*]
|
||||||
|
|||||||
@@ -58,10 +58,8 @@
|
|||||||
[:inject="module"]
|
[:inject="module"]
|
||||||
|
|
||||||
[:inject="none"]
|
[:inject="none"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:inject="sibling"]
|
[:inject="sibling"]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[cts.https.html?q=webgpu:shader,validation,parse,shadow_builtins:shadow_hides_builtin_f16:*]
|
[cts.https.html?q=webgpu:shader,validation,parse,shadow_builtins:shadow_hides_builtin_f16:*]
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
expected:
|
expected:
|
||||||
if os == "win" and debug: [OK, ERROR]
|
if os == "win" and debug: [OK, ERROR]
|
||||||
if os == "win" and not debug: ERROR
|
if os == "win" and not debug: ERROR
|
||||||
if os == "linux": ERROR
|
if os == "linux" and debug: [OK, ERROR]
|
||||||
|
if os == "linux" and not debug: ERROR
|
||||||
if os == "mac": ERROR
|
if os == "mac": ERROR
|
||||||
[:canvasType="offscreen";prevFrameCallsite="requestAnimationFrame";getCurrentTextureAgain=false]
|
[:canvasType="offscreen";prevFrameCallsite="requestAnimationFrame";getCurrentTextureAgain=false]
|
||||||
|
|
||||||
|
|||||||
@@ -352,9 +352,7 @@
|
|||||||
|
|
||||||
|
|
||||||
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_huge_size:*]
|
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_huge_size:*]
|
||||||
implementation-status: backlog
|
|
||||||
[:]
|
[:]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_unconfigured_nonzero_size:*]
|
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_unconfigured_nonzero_size:*]
|
||||||
@@ -369,7 +367,6 @@
|
|||||||
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_zero_size:*]
|
[dedicated.https.html?worker=dedicated&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_zero_size:*]
|
||||||
implementation-status: backlog
|
implementation-status: backlog
|
||||||
[:configure=false]
|
[:configure=false]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:configure=true]
|
[:configure=true]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -352,9 +352,7 @@
|
|||||||
|
|
||||||
|
|
||||||
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_huge_size:*]
|
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_huge_size:*]
|
||||||
implementation-status: backlog
|
|
||||||
[:]
|
[:]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_unconfigured_nonzero_size:*]
|
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_unconfigured_nonzero_size:*]
|
||||||
@@ -369,7 +367,6 @@
|
|||||||
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_zero_size:*]
|
[shared.https.html?worker=shared&q=webgpu:web_platform,canvas,readbackFromWebGPUCanvas:transferToImageBitmap_zero_size:*]
|
||||||
implementation-status: backlog
|
implementation-status: backlog
|
||||||
[:configure=false]
|
[:configure=false]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[:configure=true]
|
[:configure=true]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|||||||
@@ -796,6 +796,7 @@
|
|||||||
|
|
||||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false]
|
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
@@ -962,6 +963,7 @@
|
|||||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
||||||
|
|
||||||
@@ -2815,6 +2817,7 @@
|
|||||||
|
|
||||||
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false]
|
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false]
|
||||||
expected:
|
expected:
|
||||||
|
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
@@ -2985,6 +2988,7 @@
|
|||||||
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
||||||
|
|
||||||
|
|||||||
@@ -964,6 +964,7 @@
|
|||||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true]
|
||||||
expected:
|
expected:
|
||||||
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
|
||||||
|
|
||||||
@@ -1379,7 +1380,8 @@
|
|||||||
if os == "win": [TIMEOUT, NOTRUN]
|
if os == "win": [TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
if os == "linux" and debug: [TIMEOUT, NOTRUN]
|
||||||
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
if os == "mac": [TIMEOUT, NOTRUN]
|
if os == "mac" and debug: [TIMEOUT, NOTRUN]
|
||||||
|
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
|
||||||
|
|
||||||
[:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false]
|
[:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false]
|
||||||
expected:
|
expected:
|
||||||
|
|||||||
2
third_party/rust/naga/.cargo-checksum.json
vendored
2
third_party/rust/naga/.cargo-checksum.json
vendored
File diff suppressed because one or more lines are too long
9
third_party/rust/naga/Cargo.toml
vendored
9
third_party/rust/naga/Cargo.toml
vendored
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.76"
|
rust-version = "1.82.0"
|
||||||
name = "naga"
|
name = "naga"
|
||||||
version = "24.0.0"
|
version = "24.0.0"
|
||||||
authors = ["gfx-rs developers"]
|
authors = ["gfx-rs developers"]
|
||||||
@@ -104,7 +104,7 @@ version = "0.8"
|
|||||||
default-features = false
|
default-features = false
|
||||||
|
|
||||||
[dependencies.bitflags]
|
[dependencies.bitflags]
|
||||||
version = "2.7"
|
version = "2.9"
|
||||||
|
|
||||||
[dependencies.codespan-reporting]
|
[dependencies.codespan-reporting]
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
@@ -211,3 +211,8 @@ version = "2"
|
|||||||
|
|
||||||
[build-dependencies.cfg_aliases]
|
[build-dependencies.cfg_aliases]
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
|
||||||
|
[lints.clippy]
|
||||||
|
alloc_instead_of_core = "warn"
|
||||||
|
std_instead_of_alloc = "warn"
|
||||||
|
std_instead_of_core = "warn"
|
||||||
|
|||||||
2
third_party/rust/naga/README.md
vendored
2
third_party/rust/naga/README.md
vendored
@@ -4,7 +4,7 @@
|
|||||||
[](https://crates.io/crates/naga)
|
[](https://crates.io/crates/naga)
|
||||||
[](https://docs.rs/naga)
|
[](https://docs.rs/naga)
|
||||||
[](https://github.com/gfx-rs/naga/actions)
|
[](https://github.com/gfx-rs/naga/actions)
|
||||||

|

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