Bug 1887909 - update WGPU to 0c5bebca514eb06d9387f87666c1c658f3f673b4 (trunk as of 2024-04-02) r=webgpu-reviewers,supply-chain-reviewers,nical

Expected CTS test outcomes were updated using `moz-webgpu-cts` 0.7.0; concretely, using `moz-webgpu-cts process-reports --glob … --preset new-fx` with [try:cc3d56737b79](https://treeherder.mozilla.org/jobs?repo=try&tier=1%2C2%2C3&revision=cc3d56737b797ddc44d576d342330b9b92b54697).

Differential Revision: https://phabricator.services.mozilla.com/D205725
This commit is contained in:
Erich Gubler 2024-04-03 22:34:12 +00:00
parent 4049993f24
commit 9c33b8c056
96 changed files with 3000 additions and 2222 deletions

View file

@ -25,9 +25,9 @@ git = "https://github.com/franziskuskiefer/cose-rust"
rev = "43c22248d136c8b38fe42ea709d08da6355cf04b"
replace-with = "vendored-sources"
[source."git+https://github.com/gfx-rs/wgpu?rev=152a94bc6c502226d9871f28e35db0b755ea35bf"]
[source."git+https://github.com/gfx-rs/wgpu?rev=0c5bebca514eb06d9387f87666c1c658f3f673b4"]
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
replace-with = "vendored-sources"
[source."git+https://github.com/glandium/mio?rev=9a2ef335c366044ffe73b1c4acabe50a1daefe05"]

10
Cargo.lock generated
View file

@ -1196,7 +1196,7 @@ dependencies = [
[[package]]
name = "d3d12"
version = "0.19.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=152a94bc6c502226d9871f28e35db0b755ea35bf#152a94bc6c502226d9871f28e35db0b755ea35bf"
source = "git+https://github.com/gfx-rs/wgpu?rev=0c5bebca514eb06d9387f87666c1c658f3f673b4#0c5bebca514eb06d9387f87666c1c658f3f673b4"
dependencies = [
"bitflags 2.4.1",
"libloading",
@ -3917,7 +3917,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664"
[[package]]
name = "naga"
version = "0.19.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=152a94bc6c502226d9871f28e35db0b755ea35bf#152a94bc6c502226d9871f28e35db0b755ea35bf"
source = "git+https://github.com/gfx-rs/wgpu?rev=0c5bebca514eb06d9387f87666c1c658f3f673b4#0c5bebca514eb06d9387f87666c1c658f3f673b4"
dependencies = [
"arrayvec",
"bit-set",
@ -6576,7 +6576,7 @@ dependencies = [
[[package]]
name = "wgpu-core"
version = "0.19.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=152a94bc6c502226d9871f28e35db0b755ea35bf#152a94bc6c502226d9871f28e35db0b755ea35bf"
source = "git+https://github.com/gfx-rs/wgpu?rev=0c5bebca514eb06d9387f87666c1c658f3f673b4#0c5bebca514eb06d9387f87666c1c658f3f673b4"
dependencies = [
"arrayvec",
"bit-vec",
@ -6603,7 +6603,7 @@ dependencies = [
[[package]]
name = "wgpu-hal"
version = "0.19.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=152a94bc6c502226d9871f28e35db0b755ea35bf#152a94bc6c502226d9871f28e35db0b755ea35bf"
source = "git+https://github.com/gfx-rs/wgpu?rev=0c5bebca514eb06d9387f87666c1c658f3f673b4#0c5bebca514eb06d9387f87666c1c658f3f673b4"
dependencies = [
"android_system_properties",
"arrayvec",
@ -6642,7 +6642,7 @@ dependencies = [
[[package]]
name = "wgpu-types"
version = "0.19.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=152a94bc6c502226d9871f28e35db0b755ea35bf#152a94bc6c502226d9871f28e35db0b755ea35bf"
source = "git+https://github.com/gfx-rs/wgpu?rev=0c5bebca514eb06d9387f87666c1c658f3f673b4#0c5bebca514eb06d9387f87666c1c658f3f673b4"
dependencies = [
"bitflags 2.4.1",
"js-sys",

View file

@ -17,7 +17,7 @@ default = []
[dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
# 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"]
@ -26,37 +26,37 @@ features = ["serde", "replay", "trace", "strict_asserts", "wgsl", "api_log_info"
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
features = ["metal"]
# We want the wgpu-core Direct3D backends on Windows.
[target.'cfg(windows)'.dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
features = ["dx12"]
# We want the wgpu-core Vulkan backend on Linux and Windows.
[target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
features = ["vulkan"]
[dependencies.wgt]
package = "wgpu-types"
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
[dependencies.wgh]
package = "wgpu-hal"
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
features = ["windows_rs"]
[target.'cfg(windows)'.dependencies.d3d12]
git = "https://github.com/gfx-rs/wgpu"
rev = "152a94bc6c502226d9871f28e35db0b755ea35bf"
rev = "0c5bebca514eb06d9387f87666c1c658f3f673b4"
[target.'cfg(windows)'.dependencies]
winapi = "0.3"

View file

@ -20,11 +20,11 @@ origin:
# Human-readable identifier for this version/release
# Generally "version NNN", "tag SSS", "bookmark SSS"
release: 152a94bc6c502226d9871f28e35db0b755ea35bf (2024-03-18T14:53:41Z).
release: 0c5bebca514eb06d9387f87666c1c658f3f673b4 (2024-04-02T20:12:28Z).
# Revision to pull in
# Must be a long or short commit SHA (long preferred)
revision: 152a94bc6c502226d9871f28e35db0b755ea35bf
revision: 0c5bebca514eb06d9387f87666c1c658f3f673b4
license: ['MIT', 'Apache-2.0']

View file

@ -1329,7 +1329,7 @@ who = [
"Erich Gubler <erichdongubler@gmail.com>",
]
criteria = "safe-to-deploy"
delta = "0.7.0 -> 0.19.0@git:152a94bc6c502226d9871f28e35db0b755ea35bf"
delta = "0.7.0 -> 0.19.0@git:0c5bebca514eb06d9387f87666c1c658f3f673b4"
importable = false
[[audits.darling]]
@ -2683,7 +2683,7 @@ who = [
"Erich Gubler <erichdongubler@gmail.com>",
]
criteria = "safe-to-deploy"
delta = "0.14.0 -> 0.19.0@git:152a94bc6c502226d9871f28e35db0b755ea35bf"
delta = "0.14.0 -> 0.19.0@git:0c5bebca514eb06d9387f87666c1c658f3f673b4"
importable = false
[[audits.net2]]
@ -4497,7 +4497,7 @@ who = [
"Erich Gubler <erichdongubler@gmail.com>",
]
criteria = "safe-to-deploy"
delta = "0.18.0 -> 0.19.0@git:152a94bc6c502226d9871f28e35db0b755ea35bf"
delta = "0.18.0 -> 0.19.0@git:0c5bebca514eb06d9387f87666c1c658f3f673b4"
importable = false
[[audits.wgpu-hal]]
@ -4551,7 +4551,7 @@ who = [
"Erich Gubler <erichdongubler@gmail.com>",
]
criteria = "safe-to-deploy"
delta = "0.18.0 -> 0.19.0@git:152a94bc6c502226d9871f28e35db0b755ea35bf"
delta = "0.18.0 -> 0.19.0@git:0c5bebca514eb06d9387f87666c1c658f3f673b4"
importable = false
[[audits.wgpu-types]]
@ -4605,7 +4605,7 @@ who = [
"Erich Gubler <erichdongubler@gmail.com>",
]
criteria = "safe-to-deploy"
delta = "0.18.0 -> 0.19.0@git:152a94bc6c502226d9871f28e35db0b755ea35bf"
delta = "0.18.0 -> 0.19.0@git:0c5bebca514eb06d9387f87666c1c658f3f673b4"
importable = false
[[audits.whatsys]]

View file

@ -303,7 +303,8 @@
[:mapAsyncRegionLeft="explicit-expand";mapAsyncRegionRight="minimal"]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "mac": FAIL
@ -347,21 +348,20 @@
[:mapAsyncRegionLeft="explicit-expand";mapAsyncRegionRight="default-expand"]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:mapAsyncRegionLeft="explicit-expand";mapAsyncRegionRight="explicit-expand"]
expected:
if os == "win": [PASS, FAIL]
if os == "linux": FAIL
if os == "linux" and debug: [PASS, FAIL]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:mapAsyncRegionLeft="explicit-expand";mapAsyncRegionRight="minimal"]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:mapAsyncRegionLeft="minimal";mapAsyncRegionRight="default-expand"]

View file

@ -1714,6 +1714,7 @@
[:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2unorm";dimension="3d"]
expected:
@ -4665,19 +4666,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bgra8unorm-srgb";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bgra8unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bgra8unorm-srgb";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -4755,19 +4758,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16float";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16float";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16float";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -4775,19 +4780,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16sint";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16sint";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16sint";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -4795,19 +4802,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16uint";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16uint";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r16uint";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -5005,19 +5014,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16sint";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16sint";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16sint";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -5025,19 +5036,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16uint";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16uint";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16uint";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -7307,257 +7320,300 @@
[cts.https.html?q=webgpu:api,operation,command_buffer,image_copy:rowsPerImage_and_bytesPerRow:*]
expected:
if os == "linux" and debug: [OK, TIMEOUT]
if os == "linux" and not debug: TIMEOUT
if os == "mac" and not debug: TIMEOUT
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x10-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x10-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x5-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x5-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x6-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x6-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x8-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-10x8-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-12x10-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-12x10-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-12x12-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-12x12-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-4x4-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-4x4-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-5x4-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-5x4-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-5x5-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-5x5-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-6x5-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-6x5-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-6x6-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-6x6-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-8x5-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-8x5-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-8x6-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-8x6-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-8x8-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-8x8-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc1-rgba-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc1-rgba-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc2-rgba-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc2-rgba-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc3-rgba-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc3-rgba-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc4-r-snorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc4-r-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc5-rg-snorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc5-rg-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc6h-rgb-float";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc6h-rgb-ufloat";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc7-rgba-unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -7600,60 +7656,70 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="eac-r11snorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="eac-r11unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="eac-rg11snorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="eac-rg11unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="etc2-rgb8a1unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="etc2-rgb8a1unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="etc2-rgb8unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="etc2-rgb8unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="etc2-rgba8unorm";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="etc2-rgba8unorm-srgb";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -7840,18 +7906,21 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -8074,24 +8143,28 @@
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2unorm";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb9e5ufloat";dimension="1d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb9e5ufloat";dimension="2d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb9e5ufloat";dimension="3d"]
expected:
if os == "win": FAIL
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]

View file

@ -1238,20 +1238,14 @@
[:boundary="queue-op";readOp="input-index";readContext="render-bundle-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected:
if os == "win": [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:boundary="queue-op";readOp="input-index";readContext="render-bundle-encoder";writeOp="t2b-copy";writeContext="command-encoder"]
expected:
if os == "win": [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:boundary="queue-op";readOp="input-index";readContext="render-bundle-encoder";writeOp="write-buffer";writeContext="queue"]
expected:
if os == "win": [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:boundary="queue-op";readOp="input-index";readContext="render-pass-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected:
@ -1280,7 +1274,11 @@
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="queue-op";readOp="input-indirect";readContext="render-bundle-encoder";writeOp="write-buffer";writeContext="queue"]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="queue-op";readOp="input-indirect";readContext="render-pass-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected: FAIL

View file

@ -60,7 +60,11 @@
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="command-buffer";readOp="input-index";readContext="render-bundle-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="command-buffer";readOp="input-index";readContext="render-bundle-encoder";writeOp="t2b-copy";writeContext="command-encoder"]
expected:
@ -441,7 +445,11 @@
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="command-buffer";readOp="input-index";readContext="render-bundle-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="command-buffer";readOp="input-index";readContext="render-bundle-encoder";writeOp="t2b-copy";writeContext="command-encoder"]
expected:
@ -454,7 +462,11 @@
expected: FAIL
[:boundary="command-buffer";readOp="input-index";readContext="render-pass-encoder";writeOp="t2b-copy";writeContext="command-encoder"]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:boundary="command-buffer";readOp="input-indirect";readContext="render-bundle-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected:
@ -632,13 +644,10 @@
[:boundary="queue-op";readOp="constant-uniform";readContext="render-pass-encoder";writeOp="write-buffer";writeContext="queue"]
[:boundary="queue-op";readOp="input-index";readContext="render-bundle-encoder";writeOp="b2b-copy";writeContext="command-encoder"]
expected: FAIL
[:boundary="queue-op";readOp="input-index";readContext="render-bundle-encoder";writeOp="t2b-copy";writeContext="command-encoder"]
expected: FAIL
[:boundary="queue-op";readOp="input-index";readContext="render-bundle-encoder";writeOp="write-buffer";writeContext="queue"]
expected: FAIL
[:boundary="queue-op";readOp="input-index";readContext="render-pass-encoder";writeOp="b2b-copy";writeContext="command-encoder"]

View file

@ -66,8 +66,7 @@
[:boundary="command-buffer";read={"op":"t2b-copy","in":"command-encoder"};write={"op":"attachment-resolve","in":"command-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";read={"op":"t2b-copy","in":"command-encoder"};write={"op":"attachment-store","in":"command-encoder"}]
expected:
@ -77,8 +76,7 @@
[:boundary="command-buffer";read={"op":"t2b-copy","in":"command-encoder"};write={"op":"b2t-copy","in":"command-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";read={"op":"t2b-copy","in":"command-encoder"};write={"op":"storage","in":"compute-pass-encoder"}]
expected:
@ -101,8 +99,7 @@
[:boundary="command-buffer";read={"op":"t2b-copy","in":"command-encoder"};write={"op":"t2t-copy","in":"command-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";read={"op":"t2t-copy","in":"command-encoder"};write={"op":"attachment-resolve","in":"command-encoder"}]
expected:
@ -322,8 +319,7 @@
[:boundary="command-buffer";write={"op":"attachment-resolve","in":"command-encoder"};read={"op":"t2b-copy","in":"command-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";write={"op":"attachment-resolve","in":"command-encoder"};read={"op":"t2t-copy","in":"command-encoder"}]
expected:
@ -340,8 +336,7 @@
[:boundary="command-buffer";write={"op":"attachment-store","in":"command-encoder"};read={"op":"t2b-copy","in":"command-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";write={"op":"attachment-store","in":"command-encoder"};read={"op":"t2t-copy","in":"command-encoder"}]
expected:
@ -430,14 +425,12 @@
[:boundary="command-buffer";write={"op":"t2t-copy","in":"command-encoder"};read={"op":"sample","in":"render-bundle-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";write={"op":"t2t-copy","in":"command-encoder"};read={"op":"sample","in":"render-pass-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="command-buffer";write={"op":"t2t-copy","in":"command-encoder"};read={"op":"t2b-copy","in":"command-encoder"}]
expected:
@ -489,7 +482,7 @@
[:boundary="queue-op";write={"op":"attachment-store","in":"command-encoder"};read={"op":"t2b-copy","in":"command-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="queue-op";write={"op":"attachment-store","in":"command-encoder"};read={"op":"t2t-copy","in":"command-encoder"}]
expected:
@ -578,7 +571,7 @@
[:boundary="queue-op";write={"op":"t2t-copy","in":"command-encoder"};read={"op":"sample","in":"render-bundle-encoder"}]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
[:boundary="queue-op";write={"op":"t2t-copy","in":"command-encoder"};read={"op":"sample","in":"render-pass-encoder"}]
expected:

View file

@ -6018,6 +6018,7 @@
[:component="color";srcFactor="src-alpha";dstFactor="zero";operation="add"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:component="color";srcFactor="src-alpha";dstFactor="zero";operation="reverse-subtract"]
expected:

View file

@ -3785,6 +3785,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:first=3;count=6;first_instance=0;instance_count=1;indexed=true;indirect=false;vertex_buffer_offset=32;index_buffer_offset=0;base_vertex=9]
@ -3792,6 +3793,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:first=3;count=6;first_instance=0;instance_count=1;indexed=true;indirect=false;vertex_buffer_offset=32;index_buffer_offset=16;base_vertex=0]

View file

@ -741,16 +741,14 @@
[:dimension="2d";readMethod="CopyToTexture";format="depth32float"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="CopyToTexture";format="depth32float-stencil8"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "linux": [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1077,7 +1075,7 @@
[:dimension="2d";readMethod="Sample";format="bgra8unorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1085,7 +1083,7 @@
[:dimension="2d";readMethod="Sample";format="bgra8unorm-srgb"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1101,12 +1099,14 @@
[:dimension="2d";readMethod="Sample";format="r16sint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="r16uint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1134,25 +1134,28 @@
[:dimension="2d";readMethod="Sample";format="r8sint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="r8snorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="r8uint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="r8unorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1207,25 +1210,28 @@
[:dimension="2d";readMethod="Sample";format="rg8sint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="rg8snorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="rg8uint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="rg8unorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1294,25 +1300,28 @@
[:dimension="2d";readMethod="Sample";format="rgba8sint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="rgba8snorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="rgba8uint"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";readMethod="Sample";format="rgba8unorm"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -1320,7 +1329,7 @@
[:dimension="2d";readMethod="Sample";format="rgba8unorm-srgb"]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]

View file

@ -176,71 +176,61 @@
[:format="float16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="float16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="float32"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="float32x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="float32x3"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="float32x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint32"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint32x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint32x3"]
@ -272,15 +262,13 @@
[:format="snorm16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="snorm16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="snorm8x2"]
@ -304,36 +292,31 @@
[:format="uint16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint32"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint32x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint32x3"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint32x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint8x2"]
@ -352,15 +335,13 @@
[:format="unorm16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="unorm16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="unorm8x2"]
@ -592,15 +573,13 @@
[:format="sint16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="sint32"]
@ -668,15 +647,13 @@
[:format="uint16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="uint32"]
@ -720,15 +697,13 @@
[:format="unorm16x2"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="unorm16x4"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [PASS, FAIL]
if os == "linux": [PASS, FAIL]
if os == "mac": FAIL
[:format="unorm8x2"]

View file

@ -2597,21 +2597,24 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="differentGroups"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="forward";bindGroupTest="sameGroup"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleFragmentStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
expected:
@ -2634,21 +2637,24 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="backward";bindGroupTest="sameGroup"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="differentGroups"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="forward";bindGroupTest="sameGroup"]
expected:
@ -2662,14 +2668,16 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="sameGroup"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=true;bindingCombination="compute";order="backward";bindGroupTest="differentGroups"]
expected:

View file

@ -2550,7 +2550,8 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="backward";bindGroupTest="sameGroup"]
expected:
@ -2578,14 +2579,16 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="fragment";order="shiftByHalf";bindGroupTest="sameGroup"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertex";order="backward";bindGroupTest="differentGroups"]
expected:
@ -2706,7 +2709,8 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";async=false;bindingCombination="vertexAndFragmentWithPossibleVertexStageOverflow";order="shiftByHalf";bindGroupTest="differentGroups"]
expected:

View file

@ -1503,7 +1503,7 @@
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="backward"]
expected:
if os == "win": [PASS, FAIL]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:limitTest="overMaximum";testValueName="overLimit";visibility=6;type="read-only-storage";order="forward"]
expected:
@ -6142,7 +6142,8 @@
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="atMaximum";testValueName="overLimit";visibility=4;type="storage";order="forward"]
expected:
@ -6154,7 +6155,8 @@
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:limitTest="atMaximum";testValueName="overLimit";visibility=5;type="read-only-storage";order="backward"]
expected:

View file

@ -11200,7 +11200,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]]
@ -11291,7 +11291,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]]

View file

@ -18,9 +18,7 @@
[cts.https.html?q=webgpu:api,validation,encoding,cmds,render,draw:index_buffer_OOB:*]
[:bufferSizeInElements=100;bindingSizeInElements=10;drawIndexCount=10;drawType="drawIndexed"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:bufferSizeInElements=100;bindingSizeInElements=10;drawIndexCount=10;drawType="drawIndexedIndirect"]
@ -32,9 +30,7 @@
[:bufferSizeInElements=100;bindingSizeInElements=10;drawIndexCount=11;drawType="drawIndexed"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:bufferSizeInElements=100;bindingSizeInElements=10;drawIndexCount=11;drawType="drawIndexedIndirect"]
@ -46,9 +42,7 @@
[:bufferSizeInElements=10;bindingSizeInElements=10;drawIndexCount=10;drawType="drawIndexed"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:bufferSizeInElements=10;bindingSizeInElements=10;drawIndexCount=10;drawType="drawIndexedIndirect"]
@ -60,9 +54,7 @@
[:bufferSizeInElements=10;bindingSizeInElements=10;drawIndexCount=11;drawType="drawIndexed"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "linux": FAIL
if os == "mac": FAIL
[:bufferSizeInElements=10;bindingSizeInElements=10;drawIndexCount=11;drawType="drawIndexedIndirect"]
@ -163,6 +155,7 @@
[cts.https.html?q=webgpu:api,validation,encoding,cmds,render,draw:vertex_buffer_OOB:*]
expected:
if os == "win": TIMEOUT
if os == "linux" and not debug: [OK, TIMEOUT]
[:type="draw";VBSize="exact";IBSize="exact";AStride="exact"]
expected: FAIL
@ -261,7 +254,11 @@
if os == "mac": FAIL
[:type="drawIndexed";VBSize="zero";IBSize="exact";AStride="exact"]
expected: FAIL
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
[:type="drawIndexed";VBSize="zero";IBSize="exact";AStride="oversize"]
expected:
@ -272,7 +269,11 @@
if os == "mac": FAIL
[:type="drawIndexed";VBSize="zero";IBSize="exact";AStride="zero"]
expected: FAIL
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="exact";IBSize="exact";AStride="exact"]
expected:
@ -305,7 +306,8 @@
[:type="drawIndexedIndirect";VBSize="exact";IBSize="oneTooSmall";AStride="oversize"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="exact";IBSize="oneTooSmall";AStride="zero"]
@ -339,37 +341,43 @@
[:type="drawIndexedIndirect";VBSize="oneTooSmall";IBSize="exact";AStride="exact"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="oneTooSmall";IBSize="exact";AStride="oversize"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="oneTooSmall";IBSize="exact";AStride="zero"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="zero";IBSize="exact";AStride="exact"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="zero";IBSize="exact";AStride="oversize"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndexedIndirect";VBSize="zero";IBSize="exact";AStride="zero"]
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:type="drawIndirect";VBSize="exact";IBSize="exact";AStride="exact"]

View file

@ -1,69 +1,133 @@
[cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_binding_mismatch:*]
expected:
if os == "mac" and not debug: [OK, TIMEOUT]
[:encoderType="compute%20pass";call="dispatch";callWithZero=false]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatch";callWithZero=true]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="draw";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="draw";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="drawIndexed";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="drawIndexed";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="drawIndexedIndirect";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="drawIndexedIndirect";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="drawIndirect";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="drawIndirect";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="draw";callWithZero=false]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="draw";callWithZero=true]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexed";callWithZero=false]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexed";callWithZero=true]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndirect";callWithZero=false]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndirect";callWithZero=true]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_resource_type_mismatch:*]
@ -274,17 +338,22 @@
[cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:buffer_binding,render_pipeline:*]
expected:
if os == "mac" and not debug: [OK, TIMEOUT]
[:type="read-only-storage"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:type="storage"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:type="uniform"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:empty_bind_group_layouts_requires_empty_bind_groups,compute_pass:*]

View file

@ -7886,6 +7886,8 @@
expected: FAIL
[:method="WriteTexture";format="rgba8uint";dimension="1d"]
expected:
if os == "win" and not debug: [PASS, FAIL]
[:method="WriteTexture";format="rgba8uint";dimension="2d"]
expected: FAIL

View file

@ -4001,7 +4001,11 @@
if os == "win": [PASS, FAIL]
[:method="CopyB2T";format="rgb10a2uint";depthOrArrayLayers=1;dimension="1d"]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:method="CopyB2T";format="rgb10a2uint";depthOrArrayLayers=1;dimension="2d"]
expected:

View file

@ -20,42 +20,52 @@
[:attachmentCount=10]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=11]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=12]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=13]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=14]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=15]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=16]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=17]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=18]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=19]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=2]
expected: FAIL
@ -63,10 +73,12 @@
[:attachmentCount=20]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=21]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=22]
expected:
@ -127,23 +139,44 @@
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:attachmentCount=4]
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
[:attachmentCount=5]
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
[:attachmentCount=6]
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
[:attachmentCount=7]
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
[:attachmentCount=8]
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
[:attachmentCount=9]
expected:
if os == "win": [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,attachment_compatibility:render_pass_and_bundle,depth_format:*]

View file

@ -1,12 +1,11 @@
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:attachments,color_depth_mismatch:*]
expected:
if os == "mac" and debug: [OK, TIMEOUT]
if os == "mac": [OK, TIMEOUT]
[:]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:attachments,layer_count:*]
@ -65,11 +64,11 @@
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:attachments,one_depth_stencil_attachment:*]
expected:
if os == "mac" and not debug: [OK, TIMEOUT]
if os == "mac": [OK, TIMEOUT]
[:]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:attachments,same_size:*]
@ -95,212 +94,196 @@
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,limits,maxColorAttachmentBytesPerSample,aligned:*]
expected:
if os == "mac" and debug: [OK, TIMEOUT]
if os == "mac": [OK, TIMEOUT]
[:format="bgra8unorm"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="bgra8unorm-srgb"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="r16float"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r16sint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r16uint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r32float"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r32sint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r32uint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r8sint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r8uint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="r8unorm"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rg16float"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rg16sint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rg16uint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rg32float"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rg32sint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rg32uint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rg8sint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rg8uint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rg8unorm"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rgb10a2uint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgb10a2unorm"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba16float"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba16sint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba16uint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba32float"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba32sint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba32uint"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba8sint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rgba8uint"]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:format="rgba8unorm"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:format="rgba8unorm-srgb"]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,limits,maxColorAttachmentBytesPerSample,unaligned:*]
expected:
if os == "mac" and not debug: [OK, TIMEOUT]
if os == "mac": [OK, TIMEOUT]
[:formats=["r32float","rgba8unorm","rgba32float","r8unorm","r8unorm"\]]
expected:
if os == "win" and not debug: [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:formats=["r8unorm","r32float","rgba8unorm","rgba32float","r8unorm"\]]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,limits,maxColorAttachments:*]
@ -479,13 +462,12 @@
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:depth_stencil_attachment,sample_counts_mismatch:*]
expected:
if os == "mac" and not debug: [OK, TIMEOUT]
if os == "mac": [OK, TIMEOUT]
[:]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:occlusionQuerySet,query_set_type:*]
@ -525,8 +507,13 @@
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:resolveTarget,different_size:*]
expected:
if os == "mac": [OK, TIMEOUT]
[:]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:resolveTarget,error_state:*]
@ -678,8 +665,14 @@
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:resolveTarget,mipmap_level_count:*]
expected:
if os == "mac" and debug: [OK, TIMEOUT]
[:]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
[cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:resolveTarget,sample_count:*]

View file

@ -3055,6 +3055,7 @@
[:isAsync=false;format="depth32float-stencil8";faceAndOpType="backPassOp";op="_undef_"]
expected:
if os == "win": [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:isAsync=false;format="depth32float-stencil8";faceAndOpType="backPassOp";op="decrement-clamp"]
expected:
@ -3084,14 +3085,17 @@
[:isAsync=false;format="depth32float-stencil8";faceAndOpType="backPassOp";op="keep"]
expected:
if os == "win": [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:isAsync=false;format="depth32float-stencil8";faceAndOpType="backPassOp";op="replace"]
expected:
if os == "win": [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:isAsync=false;format="depth32float-stencil8";faceAndOpType="backPassOp";op="zero"]
expected:
if os == "win": [PASS, FAIL]
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:isAsync=false;format="depth32float-stencil8";faceAndOpType="frontDepthFailOp";op="_undef_"]
expected:

View file

@ -2418,6 +2418,7 @@
[:view0Levels={"base":1,"count":2};view0Layers={"base":1,"count":2};view1Levels={"base":0,"count":1};view1Layers={"base":0,"count":1};aspect0="depth-only";aspect1="depth-only";inSamePass=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]

View file

@ -321,7 +321,7 @@
[:inputSource="storage_r";common_dim=3;x_rows=3;y_cols=3]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [TIMEOUT, NOTRUN]
@ -330,7 +330,7 @@
[:inputSource="storage_r";common_dim=3;x_rows=3;y_cols=4]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [TIMEOUT, NOTRUN]
@ -655,32 +655,37 @@
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
[:inputSource="uniform";common_dim=2;x_rows=2;y_cols=4]
expected:
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=2;x_rows=3;y_cols=2]
expected:
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=2;x_rows=3;y_cols=3]
expected:
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
[:inputSource="uniform";common_dim=2;x_rows=3;y_cols=4]
expected:
if os == "win" and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=2;x_rows=4;y_cols=2]
expected:
@ -853,56 +858,64 @@
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=2;x_rows=4]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=3;x_rows=2]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=3;x_rows=3]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=3;x_rows=4]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=4;x_rows=2]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=4;x_rows=3]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="const";common_dim=4;x_rows=4]
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL
[:inputSource="storage_r";common_dim=2;x_rows=2]
@ -945,6 +958,7 @@
expected:
if os == "win": [PASS, FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="storage_r";common_dim=4;x_rows=3]
expected:
@ -1026,44 +1040,52 @@
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=2;x_rows=3]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=2;x_rows=4]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=3;x_rows=2]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:inputSource="uniform";common_dim=3;x_rows=3]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:inputSource="uniform";common_dim=3;x_rows=4]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac": FAIL
[:inputSource="uniform";common_dim=4;x_rows=2]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=4;x_rows=3]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [PASS, FAIL]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:inputSource="uniform";common_dim=4;x_rows=4]
expected:

View file

@ -5262,24 +5262,28 @@
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=10000]
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1000000]
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=4]
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=0]
@ -5342,19 +5346,22 @@
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=10000]
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=1000000]
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=4]
expected:
@ -5367,7 +5374,8 @@
expected:
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=1]
expected:
@ -11886,14 +11894,14 @@
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=4;partialLastNumber=true;offsetVertexBuffer=true;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";additionalBuffers=4;partialLastNumber=true;offsetVertexBuffer=true;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -11907,182 +11915,182 @@
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=4;partialLastNumber=false;offsetVertexBuffer=false;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=4;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -12110,7 +12118,7 @@
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";additionalBuffers=4;partialLastNumber=false;offsetVertexBuffer=false;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -12586,151 +12594,176 @@
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=false;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=false;offsetVertexBuffer=true;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=false;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=100]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=10000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=1000000]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=0;partialLastNumber=true;offsetVertexBuffer=true;errorScale=4]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=4;partialLastNumber=false;offsetVertexBuffer=false;errorScale=0]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=4;partialLastNumber=false;offsetVertexBuffer=false;errorScale=1]
expected:
if os == "win": [FAIL, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";additionalBuffers=4;partialLastNumber=false;offsetVertexBuffer=false;errorScale=100]

View file

@ -768,7 +768,7 @@
expected:
if os == "win" and debug: [TIMEOUT, NOTRUN]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
@ -777,7 +777,7 @@
expected:
if os == "win" and debug: [TIMEOUT, NOTRUN]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
@ -786,7 +786,7 @@
expected:
if os == "win" and debug: [TIMEOUT, NOTRUN]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
@ -795,7 +795,7 @@
expected:
if os == "win" and debug: [TIMEOUT, NOTRUN]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]

View file

@ -1927,7 +1927,7 @@
[:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="function"]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="module"]
@ -1945,7 +1945,7 @@
[:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="module"]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="function"]
@ -4317,7 +4317,8 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_false";rhs="const_eq_literal_int_true";scope="module"]
expected:
@ -4331,14 +4332,16 @@
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_false";rhs="literal_false";scope="module"]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_false";rhs="literal_not_false";scope="function"]
expected:
@ -4506,7 +4509,7 @@
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_not_false";rhs="any_true";scope="module"]
expected:
@ -4514,7 +4517,7 @@
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="function"]
expected:
@ -4522,7 +4525,7 @@
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="module"]
expected:
@ -4530,7 +4533,7 @@
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="function"]
expected:
@ -4538,7 +4541,7 @@
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="module"]
expected:
@ -4546,7 +4549,7 @@
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN]
[:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="function"]
expected:
@ -6680,7 +6683,7 @@
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 not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -6689,7 +6692,7 @@
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 not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]

View file

@ -19443,7 +19443,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19482,7 +19482,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19490,6 +19490,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19497,7 +19498,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19505,7 +19506,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19513,7 +19514,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19521,7 +19522,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19529,6 +19530,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19536,7 +19538,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19544,7 +19546,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19552,7 +19554,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19560,7 +19562,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19568,6 +19570,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19575,7 +19578,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19583,7 +19586,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19591,7 +19594,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19599,7 +19602,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19607,6 +19610,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19614,7 +19618,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19622,7 +19626,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19630,7 +19634,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19638,7 +19642,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19646,6 +19650,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19653,7 +19658,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19661,7 +19666,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19669,7 +19674,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19677,7 +19682,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19685,6 +19690,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19692,7 +19698,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19700,7 +19706,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19708,7 +19714,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19716,7 +19722,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19724,6 +19730,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19731,7 +19738,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19739,7 +19746,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19747,7 +19754,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19755,7 +19762,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19763,6 +19770,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19770,7 +19778,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19778,7 +19786,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19786,7 +19794,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19794,7 +19802,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19802,6 +19810,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19809,7 +19818,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19817,7 +19826,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19825,7 +19834,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19833,7 +19842,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19841,6 +19850,7 @@
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19848,7 +19858,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19856,7 +19866,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -19864,7 +19874,7 @@
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
@ -20227,14 +20237,14 @@
[:case="let_3u";vector_decl="var";vector_width=3;element_type="f16"]
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
[:case="let_3u";vector_decl="var";vector_width=3;element_type="f32"]
expected:
if os == "win" and debug: FAIL
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]

View file

@ -4418,14 +4418,16 @@
[:stage="override";type="vec3%3Cf32%3E";value=-2207528.25]
expected:
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" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec3%3Cf32%3E";value=-24413495296]
expected:
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" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -4805,7 +4807,8 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf16%3E";value=-2584]
expected:
@ -4847,14 +4850,16 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf16%3E";value=-7540]
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf16%3E";value=-861.5]
expected:
@ -5400,7 +5405,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=2.9319629499658658e%2B26]
expected:
@ -5408,7 +5414,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=2.938735877055719e-39]
expected:
@ -5434,7 +5441,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=24413495296]
expected:
@ -5442,7 +5450,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=251846010601472]
expected:
@ -5450,7 +5459,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=2669923195007533000]
expected:
@ -5458,7 +5468,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=3.2024852974055647e%2B30]
expected:
@ -5466,7 +5477,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=3.3886565974372464e%2B34]
expected:
@ -5474,7 +5486,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=3.4028234663852886e%2B38]
expected:
@ -5482,7 +5495,8 @@
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:stage="override";type="vec4%3Cf32%3E";value=5.877471754111438e-39]
expected:

View file

@ -6006,6 +6006,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="bitcast";aliased=true]
@ -6020,6 +6021,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="builtin_arg";aliased=true]
@ -6027,6 +6029,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="compound_assign_lhs";aliased=false]
@ -6064,6 +6067,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="convert";aliased=true]
@ -6071,6 +6075,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="increment";aliased=false]
@ -6094,6 +6099,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="index_access";aliased=true]
@ -6101,6 +6107,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="let_init";aliased=false]
@ -6108,6 +6115,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="let_init";aliased=true]
@ -6115,6 +6123,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="function";a_use="var_init";b_use="no_access";aliased=false]
@ -6192,6 +6201,7 @@
if os == "win" and debug: [PASS, FAIL]
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:address_space="private";a_use="assign";b_use="assign";aliased=false]

View file

@ -3677,7 +3677,7 @@
[:name="workgroup_id";stage="compute";io="in";type="vec3%3Cu32%3E";use_struct=true;target_type="vec4%3Cbool%3E"]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:name="workgroup_id";stage="compute";io="in";type="vec3%3Cu32%3E";use_struct=true;target_type="vec4%3Cf32%3E"]

View file

@ -6116,8 +6116,12 @@
[:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"]
[:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"]
expected:
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"]
expected:
if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN]
[:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"]
expected:

View file

@ -7329,8 +7329,12 @@
[:e1="nonuniform_struct";e2="nonuniform";op="minus"]
expected:
if debug: FAIL
if not debug: [TIMEOUT, NOTRUN]
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:e1="nonuniform_struct";e2="nonuniform";op="notequal"]
expected:
@ -7352,8 +7356,12 @@
[:e1="nonuniform_struct";e2="nonuniform";op="plus"]
expected:
if debug: FAIL
if not debug: [TIMEOUT, NOTRUN]
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:e1="nonuniform_struct";e2="nonuniform";op="rem"]
expected:
@ -7384,8 +7392,12 @@
[:e1="nonuniform_struct";e2="nonuniform";op="times"]
expected:
if debug: FAIL
if not debug: [TIMEOUT, NOTRUN]
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:e1="nonuniform_struct";e2="nonuniform";op="xor"]
expected:
@ -7823,8 +7835,12 @@
[:e1="nonuniform_struct";e2="uniform";op="notequal"]
expected:
if debug: FAIL
if not debug: [TIMEOUT, NOTRUN]
if os == "win" and debug: FAIL
if os == "win" and not debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: FAIL
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:e1="nonuniform_struct";e2="uniform";op="or"]
expected:

View file

@ -49,8 +49,7 @@
expected:
if os == "win" and debug: CRASH
if os == "win" and not debug: [TIMEOUT, ERROR]
if os == "linux" and debug: ERROR
if os == "linux" and not debug: [TIMEOUT, ERROR]
if os == "linux": [TIMEOUT, ERROR]
if os == "mac": [TIMEOUT, ERROR]
[:canvasType="offscreen"]
expected:
@ -79,10 +78,12 @@
[:canvasType="offscreen"]
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "linux": FAIL
if os == "linux" and debug: [PASS, FAIL]
if os == "linux" and not debug: FAIL
[:canvasType="onscreen"]
expected:
if os == "win" and debug: [PASS, FAIL]
if os == "linux": FAIL
if os == "linux" and debug: [PASS, FAIL]
if os == "linux" and not debug: FAIL
if os == "mac": FAIL

View file

@ -518,7 +518,8 @@
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [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="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false]
expected:
@ -824,6 +825,8 @@
if os == "mac" and debug: [TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true]
expected:
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false]
expected:
@ -854,6 +857,8 @@
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false]
expected:
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true]
@ -892,12 +897,20 @@
if debug: [TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false]
expected:
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true]
expected:
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false]
expected:
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true]
expected:
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
[:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false]
expected: [TIMEOUT, NOTRUN]
@ -2261,7 +2274,7 @@
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false]
expected:
if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and debug: [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and debug: [TIMEOUT, NOTRUN]
[:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true]

View file

@ -20,14 +20,16 @@
[:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm";dstPremultiplied=false]
expected:
if os == "win": FAIL
if os == "linux": 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
[:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm";dstPremultiplied=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
@ -43,7 +45,8 @@
[:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=true]
expected:
if os == "win": FAIL
if os == "linux": 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
@ -66,22 +69,46 @@
expected: FAIL
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rgb10a2unorm";dstPremultiplied=false]
expected:
@ -138,20 +165,33 @@
if os == "mac" and not debug: FAIL
[:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux" and not debug: FAIL
if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "mac" and not debug: FAIL
[:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=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
[:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm";dstPremultiplied=false]
expected: FAIL

View file

@ -792,6 +792,7 @@
expected:
if os == "win": TIMEOUT
if os == "linux": TIMEOUT
if os == "mac" and debug: [OK, TIMEOUT]
if os == "mac" and not debug: TIMEOUT
[:canvasType="offscreen";contextName="webgl";dstColorFormat="bgra8unorm";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
@ -2033,6 +2034,7 @@
expected:
if os == "win": [TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";contextName="webgl2";dstColorFormat="rgba32float";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
@ -2449,7 +2451,8 @@
[:canvasType="onscreen";contextName="webgl";dstColorFormat="rgb10a2unorm";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
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, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
if os == "mac": FAIL
@ -2713,82 +2716,98 @@
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r16float";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r32float";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="r8unorm";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
@ -2941,22 +2960,26 @@
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="rg8unorm";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="rg8unorm";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="rg8unorm";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="rg8unorm";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux": [TIMEOUT, NOTRUN]
if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN]
if os == "linux" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="onscreen";contextName="webgl2";dstColorFormat="rgb10a2unorm";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
@ -3213,59 +3236,68 @@
[cts.https.html?q=webgpu:web_platform,copyToTexture,canvas:copy_contents_from_gpu_context_canvas:*]
expected:
if os == "win" and not debug: [OK, TIMEOUT]
if os == "mac" and not debug: TIMEOUT
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="bgra8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -3428,84 +3460,96 @@
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgb10a2unorm";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgb10a2unorm";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgb10a2unorm";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgb10a2unorm";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba16float";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba16float";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba16float";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba16float";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba32float";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba32float";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba32float";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba32float";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -3540,7 +3584,8 @@
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="opaque";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
@ -3554,14 +3599,16 @@
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]
[:canvasType="offscreen";srcAndDstInSameGPUDevice=false;dstColorFormat="rgba8unorm-srgb";srcAlphaMode="premultiplied";dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true]
expected:
if os == "win": FAIL
if os == "win" and debug: FAIL
if os == "win" and not debug: [FAIL, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac" and debug: FAIL
if os == "mac" and not debug: [TIMEOUT, NOTRUN]

View file

@ -73,7 +73,11 @@
if os == "mac": FAIL
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=false]
expected:
@ -90,7 +94,11 @@
if os == "mac": FAIL
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=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
[:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=true]
expected: FAIL
@ -99,7 +107,7 @@
expected:
if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
if os == "win" and not debug: FAIL
if os == "linux" and debug: [TIMEOUT, NOTRUN]
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

File diff suppressed because one or more lines are too long

View file

@ -42,7 +42,7 @@ First, install `naga-cli` from crates.io or directly from GitHub.
cargo install naga-cli
# development version
cargo install naga-cli --git https://github.com/gfx-rs/naga.git
cargo install naga-cli --git https://github.com/gfx-rs/wgpu.git
```
Then, you can run `naga` command.

View file

@ -16,14 +16,19 @@ pub mod spv;
#[cfg(feature = "wgsl-out")]
pub mod wgsl;
const COMPONENTS: &[char] = &['x', 'y', 'z', 'w'];
const INDENT: &str = " ";
const BAKE_PREFIX: &str = "_e";
/// Names of vector components.
pub const COMPONENTS: &[char] = &['x', 'y', 'z', 'w'];
/// Indent for backends.
pub const INDENT: &str = " ";
/// Prefix used for baking.
pub const BAKE_PREFIX: &str = "_e";
type NeedBakeExpressions = crate::FastHashSet<crate::Handle<crate::Expression>>;
/// Expressions that need baking.
pub type NeedBakeExpressions = crate::FastHashSet<crate::Handle<crate::Expression>>;
/// Indentation level.
#[derive(Clone, Copy)]
struct Level(usize);
pub struct Level(pub usize);
impl Level {
const fn next(&self) -> Self {
@ -52,7 +57,7 @@ impl std::fmt::Display for Level {
/// [`EntryPoint`]: crate::EntryPoint
/// [`Module`]: crate::Module
/// [`Module::entry_points`]: crate::Module::entry_points
enum FunctionType {
pub enum FunctionType {
/// A regular function.
Function(crate::Handle<crate::Function>),
/// An [`EntryPoint`], and its index in [`Module::entry_points`].
@ -63,7 +68,8 @@ enum FunctionType {
}
impl FunctionType {
fn is_compute_entry_point(&self, module: &crate::Module) -> bool {
/// Returns true if the function is an entry point for a compute shader.
pub fn is_compute_entry_point(&self, module: &crate::Module) -> bool {
match *self {
FunctionType::EntryPoint(index) => {
module.entry_points[index as usize].stage == crate::ShaderStage::Compute
@ -74,19 +80,20 @@ impl FunctionType {
}
/// Helper structure that stores data needed when writing the function
struct FunctionCtx<'a> {
pub struct FunctionCtx<'a> {
/// The current function being written
ty: FunctionType,
pub ty: FunctionType,
/// Analysis about the function
info: &'a crate::valid::FunctionInfo,
pub info: &'a crate::valid::FunctionInfo,
/// The expression arena of the current function being written
expressions: &'a crate::Arena<crate::Expression>,
pub expressions: &'a crate::Arena<crate::Expression>,
/// Map of expressions that have associated variable names
named_expressions: &'a crate::NamedExpressions,
pub named_expressions: &'a crate::NamedExpressions,
}
impl FunctionCtx<'_> {
fn resolve_type<'a>(
/// Helper method that resolves a type of a given expression.
pub fn resolve_type<'a>(
&'a self,
handle: crate::Handle<crate::Expression>,
types: &'a crate::UniqueArena<crate::Type>,
@ -95,7 +102,10 @@ impl FunctionCtx<'_> {
}
/// Helper method that generates a [`NameKey`](crate::proc::NameKey) for a local in the current function
const fn name_key(&self, local: crate::Handle<crate::LocalVariable>) -> crate::proc::NameKey {
pub const fn name_key(
&self,
local: crate::Handle<crate::LocalVariable>,
) -> crate::proc::NameKey {
match self.ty {
FunctionType::Function(handle) => crate::proc::NameKey::FunctionLocal(handle, local),
FunctionType::EntryPoint(idx) => crate::proc::NameKey::EntryPointLocal(idx, local),
@ -106,7 +116,7 @@ impl FunctionCtx<'_> {
///
/// # Panics
/// - If the function arguments are less or equal to `arg`
const fn argument_key(&self, arg: u32) -> crate::proc::NameKey {
pub const fn argument_key(&self, arg: u32) -> crate::proc::NameKey {
match self.ty {
FunctionType::Function(handle) => crate::proc::NameKey::FunctionArgument(handle, arg),
FunctionType::EntryPoint(ep_index) => {
@ -115,8 +125,8 @@ impl FunctionCtx<'_> {
}
}
// Returns true if the given expression points to a fixed-function pipeline input.
fn is_fixed_function_input(
/// Returns true if the given expression points to a fixed-function pipeline input.
pub fn is_fixed_function_input(
&self,
mut expression: crate::Handle<crate::Expression>,
module: &crate::Module,
@ -162,7 +172,7 @@ impl crate::Expression {
/// See the [module-level documentation][emit] for details.
///
/// [emit]: index.html#expression-evaluation-time
const fn bake_ref_count(&self) -> usize {
pub const fn bake_ref_count(&self) -> usize {
match *self {
// accesses are never cached, only loads are
crate::Expression::Access { .. } | crate::Expression::AccessIndex { .. } => usize::MAX,
@ -181,9 +191,7 @@ impl crate::Expression {
}
/// Helper function that returns the string corresponding to the [`BinaryOperator`](crate::BinaryOperator)
/// # Notes
/// Used by `glsl-out`, `msl-out`, `wgsl-out`, `hlsl-out`.
const fn binary_operation_str(op: crate::BinaryOperator) -> &'static str {
pub const fn binary_operation_str(op: crate::BinaryOperator) -> &'static str {
use crate::BinaryOperator as Bo;
match op {
Bo::Add => "+",
@ -208,8 +216,6 @@ const fn binary_operation_str(op: crate::BinaryOperator) -> &'static str {
}
/// Helper function that returns the string corresponding to the [`VectorSize`](crate::VectorSize)
/// # Notes
/// Used by `msl-out`, `wgsl-out`, `hlsl-out`.
const fn vector_size_str(size: crate::VectorSize) -> &'static str {
match size {
crate::VectorSize::Bi => "2",
@ -219,7 +225,8 @@ const fn vector_size_str(size: crate::VectorSize) -> &'static str {
}
impl crate::TypeInner {
const fn is_handle(&self) -> bool {
/// Returns true if this is a handle to a type rather than the type directly.
pub const fn is_handle(&self) -> bool {
match *self {
crate::TypeInner::Image { .. } | crate::TypeInner::Sampler { .. } => true,
_ => false,
@ -266,8 +273,9 @@ bitflags::bitflags! {
}
}
/// The intersection test to use for ray queries.
#[repr(u32)]
enum RayIntersectionType {
pub enum RayIntersectionType {
Triangle = 1,
BoundingBox = 4,
}

View file

@ -3,8 +3,9 @@ Bounds-checking for SPIR-V output.
*/
use super::{
helpers::global_needs_wrapper, selection::Selection, Block, BlockContext, Error, IdGenerator,
Instruction, Word,
helpers::{global_needs_wrapper, map_storage_class},
selection::Selection,
Block, BlockContext, Error, IdGenerator, Instruction, Word,
};
use crate::{arena::Handle, proc::BoundsCheckPolicy};
@ -42,32 +43,113 @@ impl<'w> BlockContext<'w> {
array: Handle<crate::Expression>,
block: &mut Block,
) -> Result<Word, Error> {
// Naga IR permits runtime-sized arrays as global variables or as the
// final member of a struct that is a global variable. SPIR-V permits
// only the latter, so this back end wraps bare runtime-sized arrays
// in a made-up struct; see `helpers::global_needs_wrapper` and its uses.
// This code must handle both cases.
let (structure_id, last_member_index) = match self.ir_function.expressions[array] {
// Naga IR permits runtime-sized arrays as global variables, or as the
// final member of a struct that is a global variable, or one of these
// inside a buffer that is itself an element in a buffer bindings array.
// SPIR-V requires that runtime-sized arrays are wrapped in structs.
// See `helpers::global_needs_wrapper` and its uses.
let (opt_array_index_id, global_handle, opt_last_member_index) = match self
.ir_function
.expressions[array]
{
crate::Expression::AccessIndex { base, index } => {
match self.ir_function.expressions[base] {
crate::Expression::GlobalVariable(handle) => (
self.writer.global_variables[handle.index()].access_id,
index,
),
_ => return Err(Error::Validation("array length expression")),
// The global variable is an array of buffer bindings of structs,
// we are accessing one of them with a static index,
// and the last member of it.
crate::Expression::AccessIndex {
base: base_outer,
index: index_outer,
} => match self.ir_function.expressions[base_outer] {
crate::Expression::GlobalVariable(handle) => {
let index_id = self.get_index_constant(index_outer);
(Some(index_id), handle, Some(index))
}
_ => return Err(Error::Validation("array length expression case-1a")),
},
// The global variable is an array of buffer bindings of structs,
// we are accessing one of them with a dynamic index,
// and the last member of it.
crate::Expression::Access {
base: base_outer,
index: index_outer,
} => match self.ir_function.expressions[base_outer] {
crate::Expression::GlobalVariable(handle) => {
let index_id = self.cached[index_outer];
(Some(index_id), handle, Some(index))
}
_ => return Err(Error::Validation("array length expression case-1b")),
},
// The global variable is a buffer, and we are accessing the last member.
crate::Expression::GlobalVariable(handle) => {
let global = &self.ir_module.global_variables[handle];
match self.ir_module.types[global.ty].inner {
// The global variable is an array of buffer bindings of run-time arrays.
crate::TypeInner::BindingArray { .. } => (Some(index), handle, None),
// The global variable is a struct, and we are accessing the last member
_ => (None, handle, Some(index)),
}
}
_ => return Err(Error::Validation("array length expression case-1c")),
}
}
// The global variable is an array of buffer bindings of arrays.
crate::Expression::Access { base, index } => match self.ir_function.expressions[base] {
crate::Expression::GlobalVariable(handle) => {
let index_id = self.cached[index];
let global = &self.ir_module.global_variables[handle];
match self.ir_module.types[global.ty].inner {
crate::TypeInner::BindingArray { .. } => (Some(index_id), handle, None),
_ => return Err(Error::Validation("array length expression case-2a")),
}
}
_ => return Err(Error::Validation("array length expression case-2b")),
},
// The global variable is a run-time array.
crate::Expression::GlobalVariable(handle) => {
let global = &self.ir_module.global_variables[handle];
if !global_needs_wrapper(self.ir_module, global) {
return Err(Error::Validation("array length expression"));
return Err(Error::Validation("array length expression case-3"));
}
(self.writer.global_variables[handle.index()].var_id, 0)
(None, handle, None)
}
_ => return Err(Error::Validation("array length expression")),
_ => return Err(Error::Validation("array length expression case-4")),
};
let gvar = self.writer.global_variables[global_handle.index()].clone();
let global = &self.ir_module.global_variables[global_handle];
let (last_member_index, gvar_id) = match opt_last_member_index {
Some(index) => (index, gvar.access_id),
None => {
if !global_needs_wrapper(self.ir_module, global) {
return Err(Error::Validation(
"pointer to a global that is not a wrapped array",
));
}
(0, gvar.var_id)
}
};
let structure_id = match opt_array_index_id {
// We are indexing inside a binding array, generate the access op.
Some(index_id) => {
let element_type_id = match self.ir_module.types[global.ty].inner {
crate::TypeInner::BindingArray { base, size: _ } => {
let class = map_storage_class(global.space);
self.get_pointer_id(base, class)?
}
_ => return Err(Error::Validation("array length expression case-5")),
};
let structure_id = self.gen_id();
block.body.push(Instruction::access_chain(
element_type_id,
structure_id,
gvar_id,
&[index_id],
));
structure_id
}
None => gvar_id,
};
let length_id = self.gen_id();
block.body.push(Instruction::array_length(
self.writer.get_uint_type_id(),

View file

@ -576,6 +576,15 @@ impl BlockContext<'_> {
self.writer
.get_constant_scalar(crate::Literal::I32(scope as _))
}
fn get_pointer_id(
&mut self,
handle: Handle<crate::Type>,
class: spirv::StorageClass,
) -> Result<Word, Error> {
self.writer
.get_pointer_id(&self.ir_module.types, handle, class)
}
}
#[derive(Clone, Copy, Default)]

View file

@ -565,36 +565,38 @@ impl Writer {
// Handle globals are pre-emitted and should be loaded automatically.
//
// Any that are binding arrays we skip as we cannot load the array, we must load the result after indexing.
let is_binding_array = match ir_module.types[var.ty].inner {
crate::TypeInner::BindingArray { .. } => true,
_ => false,
};
if var.space == crate::AddressSpace::Handle && !is_binding_array {
let var_type_id = self.get_type_id(LookupType::Handle(var.ty));
let id = self.id_gen.next();
prelude
.body
.push(Instruction::load(var_type_id, id, gv.var_id, None));
gv.access_id = gv.var_id;
gv.handle_id = id;
} else if global_needs_wrapper(ir_module, var) {
let class = map_storage_class(var.space);
let pointer_type_id = self.get_pointer_id(&ir_module.types, var.ty, class)?;
let index_id = self.get_index_constant(0);
let id = self.id_gen.next();
prelude.body.push(Instruction::access_chain(
pointer_type_id,
id,
gv.var_id,
&[index_id],
));
gv.access_id = id;
} else {
// by default, the variable ID is accessed as is
gv.access_id = gv.var_id;
};
match ir_module.types[var.ty].inner {
crate::TypeInner::BindingArray { .. } => {
gv.access_id = gv.var_id;
}
_ => {
if var.space == crate::AddressSpace::Handle {
let var_type_id = self.get_type_id(LookupType::Handle(var.ty));
let id = self.id_gen.next();
prelude
.body
.push(Instruction::load(var_type_id, id, gv.var_id, None));
gv.access_id = gv.var_id;
gv.handle_id = id;
} else if global_needs_wrapper(ir_module, var) {
let class = map_storage_class(var.space);
let pointer_type_id =
self.get_pointer_id(&ir_module.types, var.ty, class)?;
let index_id = self.get_index_constant(0);
let id = self.id_gen.next();
prelude.body.push(Instruction::access_chain(
pointer_type_id,
id,
gv.var_id,
&[index_id],
));
gv.access_id = id;
} else {
// by default, the variable ID is accessed as is
gv.access_id = gv.var_id;
};
}
}
// work around borrow checking in the presence of `self.xxx()` calls
self.global_variables[handle.index()] = gv;
@ -1858,9 +1860,15 @@ impl Writer {
.iter()
.flat_map(|entry| entry.function.arguments.iter())
.any(|arg| has_view_index_check(ir_module, arg.binding.as_ref(), arg.ty));
let 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();
for (_, &crate::Type { ref inner, .. }) in ir_module.types.iter() {
if let &crate::TypeInner::AccelerationStructure | &crate::TypeInner::RayQuery = inner {
has_ray_query = true
}
}
if self.physical_layout.version < 0x10300 && has_storage_buffers {
// enable the storage buffer class on < SPV-1.3
Instruction::extension("SPV_KHR_storage_buffer_storage_class")

View file

@ -65,7 +65,7 @@ impl Frontend {
let idx = self.entry_args.len();
self.entry_args.push(EntryArg {
name: None,
name: Some(name.into()),
binding: Binding::BuiltIn(data.builtin),
handle,
storage: data.storage,

View file

@ -145,10 +145,35 @@ pub struct SamplingKey {
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
/// Information about an expression in a function body.
pub struct ExpressionInfo {
/// Whether this expression is uniform, and why.
///
/// If this expression's value is not uniform, this is the handle
/// of the expression from which this one's non-uniformity
/// originates. Otherwise, this is `None`.
pub uniformity: Uniformity,
/// The number of statements and other expressions using this
/// expression's value.
pub ref_count: usize,
/// The global variable into which this expression produces a pointer.
///
/// This is `None` unless this expression is either a
/// [`GlobalVariable`], or an [`Access`] or [`AccessIndex`] that
/// ultimately refers to some part of a global.
///
/// [`Load`] expressions applied to pointer-typed arguments could
/// refer to globals, but we leave this as `None` for them.
///
/// [`GlobalVariable`]: crate::Expression::GlobalVariable
/// [`Access`]: crate::Expression::Access
/// [`AccessIndex`]: crate::Expression::AccessIndex
/// [`Load`]: crate::Expression::Load
assignable_global: Option<Handle<crate::GlobalVariable>>,
/// The type of this expression.
pub ty: TypeResolution,
}
@ -311,14 +336,20 @@ pub enum UniformityDisruptor {
}
impl FunctionInfo {
/// Adds a value-type reference to an expression.
/// Record a use of `expr` of the sort given by `global_use`.
///
/// Bump `expr`'s reference count, and return its uniformity.
///
/// If `expr` is a pointer to a global variable, or some part of
/// a global variable, add `global_use` to that global's set of
/// uses.
#[must_use]
fn add_ref_impl(
&mut self,
handle: Handle<crate::Expression>,
expr: Handle<crate::Expression>,
global_use: GlobalUse,
) -> NonUniformResult {
let info = &mut self.expressions[handle.index()];
let info = &mut self.expressions[expr.index()];
info.ref_count += 1;
// mark the used global as read
if let Some(global) = info.assignable_global {
@ -327,22 +358,38 @@ impl FunctionInfo {
info.uniformity.non_uniform_result
}
/// Adds a value-type reference to an expression.
/// Record a use of `expr` for its value.
///
/// This is used for almost all expression references. Anything
/// that writes to the value `expr` points to, or otherwise wants
/// contribute flags other than `GlobalUse::READ`, should use
/// `add_ref_impl` directly.
#[must_use]
fn add_ref(&mut self, handle: Handle<crate::Expression>) -> NonUniformResult {
self.add_ref_impl(handle, GlobalUse::READ)
fn add_ref(&mut self, expr: Handle<crate::Expression>) -> NonUniformResult {
self.add_ref_impl(expr, GlobalUse::READ)
}
/// Adds a potentially assignable reference to an expression.
/// These are destinations for `Store` and `ImageStore` statements,
/// which can transit through `Access` and `AccessIndex`.
/// Record a use of `expr`, and indicate which global variable it
/// refers to, if any.
///
/// Bump `expr`'s reference count, and return its uniformity.
///
/// If `expr` is a pointer to a global variable, or some part
/// thereof, store that global in `*assignable_global`. Leave the
/// global's uses unchanged.
///
/// This is used to determine the [`assignable_global`] for
/// [`Access`] and [`AccessIndex`] expressions that ultimately
/// refer to a global variable. Those expressions don't contribute
/// any usage to the global themselves; that depends on how other
/// expressions use them.
#[must_use]
fn add_assignable_ref(
&mut self,
handle: Handle<crate::Expression>,
expr: Handle<crate::Expression>,
assignable_global: &mut Option<Handle<crate::GlobalVariable>>,
) -> NonUniformResult {
let info = &mut self.expressions[handle.index()];
let info = &mut self.expressions[expr.index()];
info.ref_count += 1;
// propagate the assignable global up the chain, till it either hits
// a value-type expression, or the assignment statement.

View file

@ -510,7 +510,6 @@ impl super::Validator {
ti.uniform_layout = Ok(Alignment::MIN_UNIFORM);
let mut min_offset = 0;
let mut prev_struct_data: Option<(u32, u32)> = None;
for (i, member) in members.iter().enumerate() {
@ -662,6 +661,7 @@ impl super::Validator {
// Currently Naga only supports binding arrays of structs for non-handle types.
match gctx.types[base].inner {
crate::TypeInner::Struct { .. } => {}
crate::TypeInner::Array { .. } => {}
_ => return Err(TypeError::BindingArrayBaseTypeNotStruct(base)),
};
}

View file

@ -1 +1 @@
{"files":{"Cargo.toml":"3f5fa464854359b0150d4fe82cf5b0c17874dbb3c3c708b2a9cc24ebc1a61349","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","build.rs":"a99478d7f63fb41429e3834f4d0e5cd333f94ba1834c68295f929170e16987de","src/any_surface.rs":"1c032bc1894a222a47f0116b976f1543c1140c0534678502ee1172d4f77fc515","src/binding_model.rs":"bb4aefad17957e770a5f70f00bf5853dc13da1d9f836493c9aa9adbbe7bb8147","src/command/bind.rs":"a37f042484b65d9fdea4cdab3667381623ee9a8943a6d32683d410b92736d306","src/command/bundle.rs":"fea00382acdf204bcb58522953335dd8f0092565693fa65d0c008e2698e39445","src/command/clear.rs":"03cfc0d4c689d56010391440ab279e615ef1d3235eb1f9f9df0323682d275109","src/command/compute.rs":"2b6beed328ed351ad6fe7088cfa1824c1bf4be50deaeab971cdcb09914d791de","src/command/draw.rs":"15f9ad857504d8098279f9c789317feba321c9b6b8f0de20b8ba98f358c99d89","src/command/memory_init.rs":"6ec93b9e2eb21edaa534e60770b4ba95735e9de61e74d827bc492df8e3639449","src/command/mod.rs":"1d347e1746194f7a07d1f75bd3a9d3cbe121fbaa479c25ba6b8c16e9d699e06b","src/command/query.rs":"43b78a163eb0eb5f1427b7a57b6d39a2748c25f880ba024c91e2f71e2a6a817d","src/command/render.rs":"808dc8106811b32877637851e63baeba7c7438748dec67cbb17ea93c58dc61bd","src/command/transfer.rs":"bf1077d1a99a258bad46087ae7234703627e7f4d30b38e6142d016c02deaad3a","src/conv.rs":"7e3ffe33b47a6fd3617aabf9f11cc68f1ccbee2c7343b8dbbcd0e8f3447e1ad8","src/device/any_device.rs":"65f47b58939b60f88f47861e65d5d45209492df8e73e7c1b60b3b459f510c09e","src/device/bgl.rs":"ec8bdd6e9b4cd50c25bed317275863d0c16bb6619f62ed85bf0464948010dfc1","src/device/global.rs":"ff90a9e3b261bedbec37ab1aed0bf23f1e50c5418da72184e2b175057ed18fce","src/device/life.rs":"1bb035d8fe225f03a21c0931e4be2c384d6026fe4131880e73c661e4224b9af9","src/device/mod.rs":"fff41f92e1a9f6660e18dc30452d9911ca827701bb8303af2ae06f1c1e1a795f","src/device/queue.rs":"da0aeebfd1d1c6e155dc89cebf75dfdb6ec18062f9512044ed7e0fef0bda2f74","src/device/resource.rs":"74d3180c12602133bee46925d3788ac510d2ad5ea141a2b46f6904f38549053b","src/device/trace.rs":"9deb1b083165e07253b4928ac2f564aba06f9089c3aca1c0a1d438d87d981542","src/error.rs":"e3b6b7a69877437f4e46af7f0e8ca1db1822beae7c8448db41c2bae0f64b2bb4","src/global.rs":"0966475959706650fd036a18d51441a8e14c3ef10107db617f597614ca47e50a","src/hal_api.rs":"1cd9c3fe1c9d8c3a24e3e7f963a2ef26e056a2b26d529b840dbc969090aaf201","src/hash_utils.rs":"e8d484027c7ce81978e4679a5e20af9416ab7d2fa595f1ca95992b29d625b0ca","src/hub.rs":"352a1b75d4535f24b06d16134421db98f910e6e719f50f863a204df6768e3369","src/id.rs":"9f67dbef5d7a416eb740281ecf8a94673f624da16f21ec33c425c11d9ed01e90","src/identity.rs":"12b820eb4b8bd7b226e15eec97d0f100a695f6b9be7acd79ad2421f2d0fe1985","src/init_tracker/buffer.rs":"61eb9cfaa312135b7a937ff6a3117f531b5b7323fae6553a41d6de9bc106d7e0","src/init_tracker/mod.rs":"a0f64730cc025113b656b4690f9dcb0ec18b8770bc7ef24c7b4ad8bebae03d24","src/init_tracker/texture.rs":"030fd594bf9948fad391390d85c5e1fec7eaf67b6e812c60f2dd59bc4fda8fd5","src/instance.rs":"b6de2a371ef3b43d3217102fe87e423dd1eb12da86b65f54b902d9eaa38b6b9f","src/lib.rs":"4ad9979442cf88557fb3b9f8d3b26c7b929a710c60cabcd1f51788917c95aecb","src/pipeline.rs":"89d88de4b8b8e1dd2bc834d101a1bdf34816ebcaa616dc795f604e9183a21cd0","src/pool.rs":"778ea1c23fcfaaa5001606e686f712f606826039d60dd5a3cd26e7de91ac057a","src/present.rs":"f69580ee0baf181162f9dd82b159596c738558d8abb60db93047effbe1436b2f","src/registry.rs":"913e651dc585ff12fe7659443c38d635a2904881e56cb7159c5ca72d45ae5800","src/resource.rs":"59731bc9a207d87b07b6db9c897e20d64be27c144bb8eb8ab2505807163acfc4","src/snatch.rs":"29a1135ee09c06883eac4df6f45b7220c2ba8f89f34232ea1d270d6e7b05c7a8","src/storage.rs":"f0c41461b8f9cdc862dbd3de04c8e720ee416c7c57310696f6f4fd22183fcc85","src/track/buffer.rs":"83a0cbb8026dbd651d32ea5a47f332f691afed1c5e6f14e78a4fe8aa25e2ad12","src/track/metadata.rs":"655985fdfdd1c7fe8220af98abadf33de7e8920b485e3dd27c28688c3dd2e47d","src/track/mod.rs":"52470a48de6b5dce55385e23ba7a3cbf512cc10cdf431a35aa42190e2fc4306d","src/track/range.rs":"2a15794e79b0470d5ba6b3267173a42f34312878e1cb288f198d2854a7888e53","src/track/stateless.rs":"305e0a493fb1cd0a325274c0757e99c19f9d14deaa8ca11ada41c1399a4ae5c4","src/track/texture.rs":"ba3e3814b341b5242548b55d77bef1d1d9e7d52d63784be98c51e342da7fefff","src/validation.rs":"026168ac4f23bc6a58a90c78fd3eb73485b3c1aad630ef43755604d1babade79"},"package":null}
{"files":{"Cargo.toml":"3f5fa464854359b0150d4fe82cf5b0c17874dbb3c3c708b2a9cc24ebc1a61349","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","build.rs":"a99478d7f63fb41429e3834f4d0e5cd333f94ba1834c68295f929170e16987de","src/any_surface.rs":"1c032bc1894a222a47f0116b976f1543c1140c0534678502ee1172d4f77fc515","src/binding_model.rs":"bb4aefad17957e770a5f70f00bf5853dc13da1d9f836493c9aa9adbbe7bb8147","src/command/bind.rs":"a37f042484b65d9fdea4cdab3667381623ee9a8943a6d32683d410b92736d306","src/command/bundle.rs":"3435ea21daba6f5a26f9a4158b342d0b9a1839da39b82fa8c23d84ee144b9da0","src/command/clear.rs":"2eb9c323c3ae3644563cab1bb1d26e4a17a54f5a120698c7f09ef9f9e9077780","src/command/compute.rs":"1ad1d8b83774422bd73c7c67c153205e451fd71602b37f34162b59e5f7dbbc75","src/command/draw.rs":"15f9ad857504d8098279f9c789317feba321c9b6b8f0de20b8ba98f358c99d89","src/command/memory_init.rs":"71550dabbf7cc3c3ff6aa4ccd31af080bb5e1cb1e21422daea63fee30294476f","src/command/mod.rs":"1d347e1746194f7a07d1f75bd3a9d3cbe121fbaa479c25ba6b8c16e9d699e06b","src/command/query.rs":"43b78a163eb0eb5f1427b7a57b6d39a2748c25f880ba024c91e2f71e2a6a817d","src/command/render.rs":"875545efa83e56face9a857c5d8c814bc46f4b0538a152933265533176ad1e84","src/command/transfer.rs":"63042151145825c5cac6459a5a254a82142c86d299895f72bef2682f71de7ad1","src/conv.rs":"7e3ffe33b47a6fd3617aabf9f11cc68f1ccbee2c7343b8dbbcd0e8f3447e1ad8","src/device/any_device.rs":"65f47b58939b60f88f47861e65d5d45209492df8e73e7c1b60b3b459f510c09e","src/device/bgl.rs":"ec8bdd6e9b4cd50c25bed317275863d0c16bb6619f62ed85bf0464948010dfc1","src/device/global.rs":"6a08dcc25059f2194999c4f5e3a57a1a96b17031873b1a871095dc58115470fb","src/device/life.rs":"efba75c8632e0bd9c655dbff1f8ff027900f388b6eeb357a9c02ddad24474b23","src/device/mod.rs":"e578d03253a9af314e1e81168d45ea8cc0a8f56df79e440dc1ade945d75277ec","src/device/queue.rs":"4405a6b8ea29093239f1556e5352f7c777f4f6b783fd5dea458fde22556741ca","src/device/resource.rs":"65f84150c467aa50615a097d15f6b4dba3514b0adf2de1e9b9837e5084619a80","src/device/trace.rs":"9deb1b083165e07253b4928ac2f564aba06f9089c3aca1c0a1d438d87d981542","src/error.rs":"e3b6b7a69877437f4e46af7f0e8ca1db1822beae7c8448db41c2bae0f64b2bb4","src/global.rs":"0966475959706650fd036a18d51441a8e14c3ef10107db617f597614ca47e50a","src/hal_api.rs":"1cd9c3fe1c9d8c3a24e3e7f963a2ef26e056a2b26d529b840dbc969090aaf201","src/hash_utils.rs":"e8d484027c7ce81978e4679a5e20af9416ab7d2fa595f1ca95992b29d625b0ca","src/hub.rs":"352a1b75d4535f24b06d16134421db98f910e6e719f50f863a204df6768e3369","src/id.rs":"9f67dbef5d7a416eb740281ecf8a94673f624da16f21ec33c425c11d9ed01e90","src/identity.rs":"12b820eb4b8bd7b226e15eec97d0f100a695f6b9be7acd79ad2421f2d0fe1985","src/init_tracker/buffer.rs":"61eb9cfaa312135b7a937ff6a3117f531b5b7323fae6553a41d6de9bc106d7e0","src/init_tracker/mod.rs":"a0f64730cc025113b656b4690f9dcb0ec18b8770bc7ef24c7b4ad8bebae03d24","src/init_tracker/texture.rs":"030fd594bf9948fad391390d85c5e1fec7eaf67b6e812c60f2dd59bc4fda8fd5","src/instance.rs":"b6de2a371ef3b43d3217102fe87e423dd1eb12da86b65f54b902d9eaa38b6b9f","src/lib.rs":"4ad9979442cf88557fb3b9f8d3b26c7b929a710c60cabcd1f51788917c95aecb","src/pipeline.rs":"89d88de4b8b8e1dd2bc834d101a1bdf34816ebcaa616dc795f604e9183a21cd0","src/pool.rs":"778ea1c23fcfaaa5001606e686f712f606826039d60dd5a3cd26e7de91ac057a","src/present.rs":"f69580ee0baf181162f9dd82b159596c738558d8abb60db93047effbe1436b2f","src/registry.rs":"913e651dc585ff12fe7659443c38d635a2904881e56cb7159c5ca72d45ae5800","src/resource.rs":"59731bc9a207d87b07b6db9c897e20d64be27c144bb8eb8ab2505807163acfc4","src/snatch.rs":"5cf0e4e4611083e8256092696ecf0caa9e855dd680c18fc7dbb227d071aa2548","src/storage.rs":"f0c41461b8f9cdc862dbd3de04c8e720ee416c7c57310696f6f4fd22183fcc85","src/track/buffer.rs":"d1b4c85dfaf1bcc93013d7f51ba677f97c36245c9de224fb328595aa15109cf6","src/track/metadata.rs":"7016911136bc5b97053f54241b01d344f5d65c4337a292c8aa32bb142a26be0c","src/track/mod.rs":"5365c532a531d224a958bd8217769ef59d67d293b4f95972c10db71f6bff1a80","src/track/range.rs":"2a15794e79b0470d5ba6b3267173a42f34312878e1cb288f198d2854a7888e53","src/track/stateless.rs":"305e0a493fb1cd0a325274c0757e99c19f9d14deaa8ca11ada41c1399a4ae5c4","src/track/texture.rs":"da83403d5990021c5db78f1ffdf69198eadb99cc77a6bc481648337a5403295c","src/validation.rs":"026168ac4f23bc6a58a90c78fd3eb73485b3c1aad630ef43755604d1babade79"},"package":null}

View file

@ -99,6 +99,7 @@ use crate::{
pipeline::{PipelineFlags, RenderPipeline, VertexStep},
resource::{Buffer, Resource, ResourceInfo, ResourceType},
resource_log,
snatch::SnatchGuard,
track::RenderBundleScope,
validation::check_buffer_usage,
Label, LabelHelpers,
@ -165,7 +166,7 @@ fn validate_indexed_draw<A: HalApi>(
) -> Result<(), DrawError> {
let last_index = first_index as u64 + index_count as u64;
let index_limit = index_state.limit();
if last_index <= index_limit {
if last_index > index_limit {
return Err(DrawError::IndexBeyondLimit {
last_index,
index_limit,
@ -894,7 +895,11 @@ impl<A: HalApi> RenderBundle<A> {
/// Note that the function isn't expected to fail, generally.
/// All the validation has already been done by this point.
/// The only failure condition is if some of the used buffers are destroyed.
pub(super) unsafe fn execute(&self, raw: &mut A::CommandEncoder) -> Result<(), ExecutionError> {
pub(super) unsafe fn execute(
&self,
raw: &mut A::CommandEncoder,
snatch_guard: &SnatchGuard,
) -> Result<(), ExecutionError> {
let mut offsets = self.base.dynamic_offsets.as_slice();
let mut pipeline_layout = None::<Arc<PipelineLayout<A>>>;
if !self.discard_hal_labels {
@ -903,8 +908,6 @@ impl<A: HalApi> RenderBundle<A> {
}
}
let snatch_guard = self.device.snatchable_lock.read();
use ArcRenderCommand as Cmd;
for command in self.base.commands.iter() {
match command {
@ -914,7 +917,7 @@ impl<A: HalApi> RenderBundle<A> {
bind_group,
} => {
let raw_bg = bind_group
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or(ExecutionError::InvalidBindGroup(bind_group.info.id()))?;
unsafe {
raw.set_bind_group(
@ -938,7 +941,7 @@ impl<A: HalApi> RenderBundle<A> {
size,
} => {
let buffer: &A::Buffer = buffer
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or(ExecutionError::DestroyedBuffer(buffer.info.id()))?;
let bb = hal::BufferBinding {
buffer,
@ -954,7 +957,7 @@ impl<A: HalApi> RenderBundle<A> {
size,
} => {
let buffer = buffer
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or(ExecutionError::DestroyedBuffer(buffer.info.id()))?;
let bb = hal::BufferBinding {
buffer,
@ -1041,7 +1044,7 @@ impl<A: HalApi> RenderBundle<A> {
indexed: false,
} => {
let buffer = buffer
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or(ExecutionError::DestroyedBuffer(buffer.info.id()))?;
unsafe { raw.draw_indirect(buffer, *offset, 1) };
}
@ -1052,7 +1055,7 @@ impl<A: HalApi> RenderBundle<A> {
indexed: true,
} => {
let buffer = buffer
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or(ExecutionError::DestroyedBuffer(buffer.info.id()))?;
unsafe { raw.draw_indexed_indirect(buffer, *offset, 1) };
}

View file

@ -12,6 +12,7 @@ use crate::{
id::{BufferId, CommandEncoderId, DeviceId, TextureId},
init_tracker::{MemoryInitKind, TextureInitRange},
resource::{Resource, Texture, TextureClearMode},
snatch::SnatchGuard,
track::{TextureSelector, TextureTracker},
};
@ -239,6 +240,7 @@ impl Global {
}
let (encoder, tracker) = cmd_buf_data.open_encoder_and_tracker()?;
let snatch_guard = device.snatchable_lock.read();
clear_texture(
&dst_texture,
TextureInitRange {
@ -249,6 +251,7 @@ impl Global {
&mut tracker.textures,
&device.alignments,
device.zero_buffer.as_ref().unwrap(),
&snatch_guard,
)
}
}
@ -260,10 +263,10 @@ pub(crate) fn clear_texture<A: HalApi>(
texture_tracker: &mut TextureTracker<A>,
alignments: &hal::Alignments,
zero_buffer: &A::Buffer,
snatch_guard: &SnatchGuard<'_>,
) -> Result<(), ClearError> {
let snatch_guard = dst_texture.device.snatchable_lock.read();
let dst_raw = dst_texture
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or_else(|| ClearError::InvalidTexture(dst_texture.as_info().id()))?;
// Issue the right barrier.

View file

@ -272,14 +272,14 @@ where
}
}
struct State<A: HalApi> {
struct State<'a, A: HalApi> {
binder: Binder<A>,
pipeline: Option<id::ComputePipelineId>,
scope: UsageScope<A>,
scope: UsageScope<'a, A>,
debug_scope_depth: u32,
}
impl<A: HalApi> State<A> {
impl<'a, A: HalApi> State<'a, A> {
fn is_ready(&self) -> Result<(), DispatchError> {
let bind_mask = self.binder.invalid_mask();
if bind_mask != 0 {
@ -407,7 +407,7 @@ impl Global {
let mut state = State {
binder: Binder::new(),
pipeline: None,
scope: UsageScope::new(&device.tracker_indices),
scope: device.new_usage_scope(),
debug_scope_depth: 0,
};
let mut temp_offsets = Vec::new();
@ -868,6 +868,7 @@ impl Global {
transit,
&mut tracker.textures,
device,
&snatch_guard,
);
CommandBuffer::insert_barriers_from_tracker(
transit,

View file

@ -7,6 +7,7 @@ use crate::{
hal_api::HalApi,
init_tracker::*,
resource::{Resource, Texture},
snatch::SnatchGuard,
track::{TextureTracker, Tracker},
FastHashMap,
};
@ -144,6 +145,7 @@ pub(crate) fn fixup_discarded_surfaces<
encoder: &mut A::CommandEncoder,
texture_tracker: &mut TextureTracker<A>,
device: &Device<A>,
snatch_guard: &SnatchGuard<'_>,
) {
for init in inits {
clear_texture(
@ -156,6 +158,7 @@ pub(crate) fn fixup_discarded_surfaces<
texture_tracker,
&device.alignments,
device.zero_buffer.as_ref().unwrap(),
snatch_guard,
)
.unwrap();
}
@ -167,6 +170,7 @@ impl<A: HalApi> BakedCommands<A> {
pub(crate) fn initialize_buffer_memory(
&mut self,
device_tracker: &mut Tracker<A>,
snatch_guard: &SnatchGuard<'_>,
) -> Result<(), DestroyedBufferError> {
// Gather init ranges for each buffer so we can collapse them.
// It is not possible to do this at an earlier point since previously
@ -225,16 +229,15 @@ impl<A: HalApi> BakedCommands<A> {
.unwrap()
.1;
let snatch_guard = buffer.device.snatchable_lock.read();
let raw_buf = buffer
.raw
.get(&snatch_guard)
.get(snatch_guard)
.ok_or(DestroyedBufferError(buffer_id))?;
unsafe {
self.encoder.transition_buffers(
transition
.map(|pending| pending.into_hal(&buffer, &snatch_guard))
.map(|pending| pending.into_hal(&buffer, snatch_guard))
.into_iter(),
);
}
@ -271,6 +274,7 @@ impl<A: HalApi> BakedCommands<A> {
&mut self,
device_tracker: &mut Tracker<A>,
device: &Device<A>,
snatch_guard: &SnatchGuard<'_>,
) -> Result<(), DestroyedTextureError> {
let mut ranges: Vec<TextureInitRange> = Vec::new();
for texture_use in self.texture_memory_actions.drain_init_actions() {
@ -310,6 +314,7 @@ impl<A: HalApi> BakedCommands<A> {
&mut device_tracker.textures,
&device.alignments,
device.zero_buffer.as_ref().unwrap(),
snatch_guard,
);
// A Texture can be destroyed between the command recording

View file

@ -739,9 +739,9 @@ impl<A: HalApi> TextureView<A> {
const MAX_TOTAL_ATTACHMENTS: usize = hal::MAX_COLOR_ATTACHMENTS + hal::MAX_COLOR_ATTACHMENTS + 1;
type AttachmentDataVec<T> = ArrayVec<T, MAX_TOTAL_ATTACHMENTS>;
struct RenderPassInfo<'a, A: HalApi> {
struct RenderPassInfo<'a, 'd, A: HalApi> {
context: RenderPassContext,
usage_scope: UsageScope<A>,
usage_scope: UsageScope<'d, A>,
/// All render attachments, including depth/stencil
render_attachments: AttachmentDataVec<RenderAttachment<'a, A>>,
is_depth_read_only: bool,
@ -754,7 +754,7 @@ struct RenderPassInfo<'a, A: HalApi> {
multiview: Option<NonZeroU32>,
}
impl<'a, A: HalApi> RenderPassInfo<'a, A> {
impl<'a, 'd, A: HalApi> RenderPassInfo<'a, 'd, A> {
fn add_pass_texture_init_actions<V>(
channel: &PassChannel<V>,
texture_memory_actions: &mut CommandBufferTextureMemoryActions<A>,
@ -790,7 +790,7 @@ impl<'a, A: HalApi> RenderPassInfo<'a, A> {
}
fn start(
device: &Device<A>,
device: &'d Device<A>,
label: Option<&str>,
color_attachments: &[Option<RenderPassColorAttachment>],
depth_stencil_attachment: Option<&RenderPassDepthStencilAttachment>,
@ -1214,7 +1214,7 @@ impl<'a, A: HalApi> RenderPassInfo<'a, A> {
Ok(Self {
context,
usage_scope: UsageScope::new(&device.tracker_indices),
usage_scope: device.new_usage_scope(),
render_attachments,
is_depth_read_only,
is_stencil_read_only,
@ -1230,7 +1230,7 @@ impl<'a, A: HalApi> RenderPassInfo<'a, A> {
mut self,
raw: &mut A::CommandEncoder,
snatch_guard: &SnatchGuard,
) -> Result<(UsageScope<A>, SurfacesInDiscardState<A>), RenderPassErrorInner> {
) -> Result<(UsageScope<'d, A>, SurfacesInDiscardState<A>), RenderPassErrorInner> {
profiling::scope!("RenderPassInfo::finish");
unsafe {
raw.end_render_pass();
@ -2374,7 +2374,7 @@ impl Global {
.extend(texture_memory_actions.register_init_action(action));
}
unsafe { bundle.execute(raw) }
unsafe { bundle.execute(raw, &snatch_guard) }
.map_err(|e| match e {
ExecutionError::DestroyedBuffer(id) => {
RenderCommandError::DestroyedBuffer(id)
@ -2427,6 +2427,7 @@ impl Global {
transit,
&mut tracker.textures,
&cmd_buf.device,
&snatch_guard,
);
cmd_buf_data

View file

@ -14,6 +14,7 @@ use crate::{
TextureInitTrackerAction,
},
resource::{Resource, Texture, TextureErrorDimension},
snatch::SnatchGuard,
track::{TextureSelector, Tracker},
};
@ -452,6 +453,7 @@ fn handle_texture_init<A: HalApi>(
copy_texture: &ImageCopyTexture,
copy_size: &Extent3d,
texture: &Arc<Texture<A>>,
snatch_guard: &SnatchGuard<'_>,
) -> Result<(), ClearError> {
let init_action = TextureInitTrackerAction {
texture: texture.clone(),
@ -480,6 +482,7 @@ fn handle_texture_init<A: HalApi>(
&mut trackers.textures,
&device.alignments,
device.zero_buffer.as_ref().unwrap(),
snatch_guard,
)?;
}
}
@ -499,6 +502,7 @@ fn handle_src_texture_init<A: HalApi>(
source: &ImageCopyTexture,
copy_size: &Extent3d,
texture: &Arc<Texture<A>>,
snatch_guard: &SnatchGuard<'_>,
) -> Result<(), TransferError> {
handle_texture_init(
MemoryInitKind::NeedsInitializedMemory,
@ -509,6 +513,7 @@ fn handle_src_texture_init<A: HalApi>(
source,
copy_size,
texture,
snatch_guard,
)?;
Ok(())
}
@ -525,6 +530,7 @@ fn handle_dst_texture_init<A: HalApi>(
destination: &ImageCopyTexture,
copy_size: &Extent3d,
texture: &Arc<Texture<A>>,
snatch_guard: &SnatchGuard<'_>,
) -> Result<(), TransferError> {
// Attention: If we don't write full texture subresources, we need to a full
// clear first since we don't track subrects. This means that in rare cases
@ -549,6 +555,7 @@ fn handle_dst_texture_init<A: HalApi>(
destination,
copy_size,
texture,
snatch_guard,
)?;
Ok(())
}
@ -779,6 +786,8 @@ impl Global {
let (dst_range, dst_base) = extract_texture_selector(destination, copy_size, &dst_texture)?;
let snatch_guard = device.snatchable_lock.read();
// Handle texture init *before* dealing with barrier transitions so we
// have an easier time inserting "immediate-inits" that may be required
// by prior discards in rare cases.
@ -790,10 +799,9 @@ impl Global {
destination,
copy_size,
&dst_texture,
&snatch_guard,
)?;
let snatch_guard = device.snatchable_lock.read();
let (src_buffer, src_pending) = {
let buffer_guard = hub.buffers.read();
let src_buffer = buffer_guard
@ -935,6 +943,8 @@ impl Global {
let (src_range, src_base) = extract_texture_selector(source, copy_size, &src_texture)?;
let snatch_guard = device.snatchable_lock.read();
// Handle texture init *before* dealing with barrier transitions so we
// have an easier time inserting "immediate-inits" that may be required
// by prior discards in rare cases.
@ -946,10 +956,9 @@ impl Global {
source,
copy_size,
&src_texture,
&snatch_guard,
)?;
let snatch_guard = device.snatchable_lock.read();
let src_pending = tracker
.textures
.set_single(&src_texture, src_range, hal::TextureUses::COPY_SRC)
@ -1152,6 +1161,7 @@ impl Global {
source,
copy_size,
&src_texture,
&snatch_guard,
)?;
handle_dst_texture_init(
encoder,
@ -1161,6 +1171,7 @@ impl Global {
destination,
copy_size,
&dst_texture,
&snatch_guard,
)?;
let src_pending = cmd_buf_data

View file

@ -192,7 +192,15 @@ impl Global {
let ptr = if map_size == 0 {
std::ptr::NonNull::dangling()
} else {
match map_buffer(device.raw(), &buffer, 0, map_size, HostMap::Write) {
let snatch_guard = device.snatchable_lock.read();
match map_buffer(
device.raw(),
&buffer,
0,
map_size,
HostMap::Write,
&snatch_guard,
) {
Ok(ptr) => ptr,
Err(e) => {
to_destroy.push(buffer);
@ -2008,9 +2016,10 @@ impl Global {
}
// Wait for all work to finish before configuring the surface.
let snatch_guard = device.snatchable_lock.read();
let fence = device.fence.read();
let fence = fence.as_ref().unwrap();
match device.maintain(fence, wgt::Maintain::Wait) {
match device.maintain(fence, wgt::Maintain::Wait, snatch_guard) {
Ok((closures, _)) => {
user_callbacks = closures;
}
@ -2120,9 +2129,10 @@ impl Global {
device: &crate::device::Device<A>,
maintain: wgt::Maintain<queue::WrappedSubmissionIndex>,
) -> Result<DevicePoll, WaitIdleError> {
let snatch_guard = device.snatchable_lock.read();
let fence = device.fence.read();
let fence = fence.as_ref().unwrap();
let (closures, queue_empty) = device.maintain(fence, maintain)?;
let (closures, queue_empty) = device.maintain(fence, maintain, snatch_guard)?;
// Some deferred destroys are scheduled in maintain so run this right after
// to avoid holding on to them until the next device poll.
@ -2240,6 +2250,15 @@ impl Global {
}
}
// This is a test-only function to force the device into an
// invalid state by inserting an error value in its place in
// the registry.
pub fn device_make_invalid<A: HalApi>(&self, device_id: DeviceId) {
let hub = A::hub(self);
hub.devices
.force_replace_with_error(device_id, "Made invalid.");
}
pub fn device_drop<A: HalApi>(&self, device_id: DeviceId) {
profiling::scope!("Device::drop");
api_log!("Device::drop {device_id:?}");
@ -2275,7 +2294,7 @@ impl Global {
) {
let hub = A::hub(self);
if let Ok(device) = hub.devices.get(device_id) {
if let Ok(Some(device)) = hub.devices.try_get(device_id) {
let mut life_tracker = device.lock_life();
if let Some(existing_closure) = life_tracker.device_lost_closure.take() {
// It's important to not hold the lock while calling the closure.
@ -2284,6 +2303,12 @@ impl Global {
life_tracker = device.lock_life();
}
life_tracker.device_lost_closure = Some(device_lost_closure);
} else {
// No device? Okay. Just like we have to call any existing closure
// before we drop it, we need to call this closure before we exit
// this function, because there's no device that is ever going to
// call it.
device_lost_closure.call(DeviceLostReason::DeviceInvalid, "".to_string());
}
}

View file

@ -12,6 +12,7 @@ use crate::{
self, Buffer, DestroyedBuffer, DestroyedTexture, QuerySet, Resource, Sampler,
StagingBuffer, Texture, TextureView,
},
snatch::SnatchGuard,
track::{ResourceTracker, Tracker, TrackerIndex},
FastHashMap, SubmissionIndex,
};
@ -780,6 +781,7 @@ impl<A: HalApi> LifetimeTracker<A> {
&mut self,
raw: &A::Device,
trackers: &Mutex<Tracker<A>>,
snatch_guard: &SnatchGuard,
) -> Vec<super::BufferMapPendingClosure> {
if self.ready_to_map.is_empty() {
return Vec::new();
@ -816,7 +818,14 @@ impl<A: HalApi> LifetimeTracker<A> {
log::debug!("Buffer {tracker_index:?} map state -> Active");
let host = mapping.op.host;
let size = mapping.range.end - mapping.range.start;
match super::map_buffer(raw, &buffer, mapping.range.start, size, host) {
match super::map_buffer(
raw,
&buffer,
mapping.range.start,
size,
host,
snatch_guard,
) {
Ok(ptr) => {
*buffer.map_state.lock() = resource::BufferMapState::Active {
ptr,

View file

@ -3,9 +3,10 @@ use crate::{
hal_api::HalApi,
hub::Hub,
id::{BindGroupLayoutId, PipelineLayoutId},
resource::{Buffer, BufferAccessResult},
resource::{BufferAccessError, BufferMapOperation},
resource_log, Label, DOWNLEVEL_ERROR_MESSAGE,
resource::{Buffer, BufferAccessError, BufferAccessResult, BufferMapOperation},
resource_log,
snatch::SnatchGuard,
Label, DOWNLEVEL_ERROR_MESSAGE,
};
use arrayvec::ArrayVec;
@ -317,10 +318,10 @@ fn map_buffer<A: HalApi>(
offset: BufferAddress,
size: BufferAddress,
kind: HostMap,
snatch_guard: &SnatchGuard,
) -> Result<ptr::NonNull<u8>, BufferAccessError> {
let snatch_guard = buffer.device.snatchable_lock.read();
let raw_buffer = buffer
.raw(&snatch_guard)
.raw(snatch_guard)
.ok_or(BufferAccessError::Destroyed)?;
let mapping = unsafe {
raw.map_buffer(raw_buffer, offset..offset + size)

View file

@ -815,6 +815,7 @@ impl Global {
&mut trackers.textures,
&device.alignments,
device.zero_buffer.as_ref().unwrap(),
&device.snatchable_lock.read(),
)
.map_err(QueueWriteError::from)?;
}
@ -1084,6 +1085,7 @@ impl Global {
&mut trackers.textures,
&device.alignments,
device.zero_buffer.as_ref().unwrap(),
&device.snatchable_lock.read(),
)
.map_err(QueueWriteError::from)?;
}
@ -1147,6 +1149,9 @@ impl Global {
let device = queue.device.as_ref().unwrap();
let snatch_guard = device.snatchable_lock.read();
// Fence lock must be acquired after the snatch lock everywhere to avoid deadlocks.
let mut fence = device.fence.write();
let fence = fence.as_mut().unwrap();
let submit_index = device
@ -1155,9 +1160,7 @@ impl Global {
+ 1;
let mut active_executions = Vec::new();
let mut used_surface_textures = track::TextureUsageScope::new();
let snatch_guard = device.snatchable_lock.read();
let mut used_surface_textures = track::TextureUsageScope::default();
let mut submit_surface_textures_owned = SmallVec::<[_; 2]>::new();
@ -1391,10 +1394,10 @@ impl Global {
//Note: locking the trackers has to be done after the storages
let mut trackers = device.trackers.lock();
baked
.initialize_buffer_memory(&mut *trackers)
.initialize_buffer_memory(&mut *trackers, &snatch_guard)
.map_err(|err| QueueSubmitError::DestroyedBuffer(err.0))?;
baked
.initialize_texture_memory(&mut *trackers, device)
.initialize_texture_memory(&mut *trackers, device, &snatch_guard)
.map_err(|err| QueueSubmitError::DestroyedTexture(err.0))?;
//Note: stateless trackers are not merged:
// device already knows these resources exist.
@ -1435,7 +1438,7 @@ impl Global {
baked.encoder.end_encoding().unwrap()
};
baked.list.push(present);
used_surface_textures = track::TextureUsageScope::new();
used_surface_textures = track::TextureUsageScope::default();
}
// done
@ -1542,7 +1545,7 @@ impl Global {
// This will schedule destruction of all resources that are no longer needed
// by the user but used in the command stream, among other things.
let (closures, _) = match device.maintain(fence, wgt::Maintain::Poll) {
let (closures, _) = match device.maintain(fence, wgt::Maintain::Poll, snatch_guard) {
Ok(closures) => closures,
Err(WaitIdleError::Device(err)) => return Err(QueueSubmitError::Queue(err)),
Err(WaitIdleError::StuckGpu) => return Err(QueueSubmitError::StuckGpu),

View file

@ -28,7 +28,10 @@ use crate::{
resource_log,
snatch::{SnatchGuard, SnatchLock, Snatchable},
storage::Storage,
track::{BindGroupStates, TextureSelector, Tracker, TrackerIndexAllocators},
track::{
BindGroupStates, TextureSelector, Tracker, TrackerIndexAllocators, UsageScope,
UsageScopePool,
},
validation::{
self, check_buffer_usage, check_texture_usage, validate_color_attachment_bytes_per_sample,
},
@ -97,6 +100,8 @@ pub struct Device<A: HalApi> {
pub(crate) command_allocator: Mutex<Option<CommandAllocator<A>>>,
//Note: The submission index here corresponds to the last submission that is done.
pub(crate) active_submission_index: AtomicU64, //SubmissionIndex,
// NOTE: if both are needed, the `snatchable_lock` must be consistently acquired before the
// `fence` lock to avoid deadlocks.
pub(crate) fence: RwLock<Option<A::Fence>>,
pub(crate) snatchable_lock: SnatchLock,
@ -135,6 +140,7 @@ pub struct Device<A: HalApi> {
pub(crate) deferred_destroy: Mutex<Vec<DeferredDestroy<A>>>,
#[cfg(feature = "trace")]
pub(crate) trace: Mutex<Option<trace::Trace>>,
pub(crate) usage_scopes: UsageScopePool<A>,
}
pub(crate) enum DeferredDestroy<A: HalApi> {
@ -296,6 +302,7 @@ impl<A: HalApi> Device<A> {
instance_flags,
pending_writes: Mutex::new(Some(pending_writes)),
deferred_destroy: Mutex::new(Vec::new()),
usage_scopes: Default::default(),
})
}
@ -387,6 +394,7 @@ impl<A: HalApi> Device<A> {
&'this self,
fence: &A::Fence,
maintain: wgt::Maintain<queue::WrappedSubmissionIndex>,
snatch_guard: SnatchGuard,
) -> Result<(UserClosures, bool), WaitIdleError> {
profiling::scope!("Device::maintain");
let last_done_index = if maintain.is_wait() {
@ -440,7 +448,8 @@ impl<A: HalApi> Device<A> {
life_tracker.triage_mapped();
}
let mapping_closures = life_tracker.handle_mapping(self.raw(), &self.trackers);
let mapping_closures =
life_tracker.handle_mapping(self.raw(), &self.trackers, &snatch_guard);
let queue_empty = life_tracker.queue_empty();
@ -467,8 +476,9 @@ impl<A: HalApi> Device<A> {
}
}
// Don't hold the lock while calling release_gpu_resources.
// Don't hold the locks while calling release_gpu_resources.
drop(life_tracker);
drop(snatch_guard);
if should_release_gpu_resource {
self.release_gpu_resources();
@ -3568,6 +3578,10 @@ impl<A: HalApi> Device<A> {
let _ = texture.destroy();
}
}
pub(crate) fn new_usage_scope(&self) -> UsageScope<'_, A> {
UsageScope::new_pooled(&self.usage_scopes, &self.tracker_indices)
}
}
impl<A: HalApi> Device<A> {

View file

@ -1,7 +1,12 @@
#![allow(unused)]
use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard};
use std::cell::UnsafeCell;
use std::{
backtrace::Backtrace,
cell::{Cell, RefCell, UnsafeCell},
panic::{self, Location},
thread,
};
/// A guard that provides read access to snatchable data.
pub struct SnatchGuard<'a>(RwLockReadGuard<'a, ()>);
@ -59,6 +64,10 @@ impl<T> std::fmt::Debug for Snatchable<T> {
unsafe impl<T> Sync for Snatchable<T> {}
thread_local! {
static READ_LOCK_LOCATION: Cell<Option<(&'static Location<'static>, Backtrace)>> = const { Cell::new(None) };
}
/// A Device-global lock for all snatchable data.
pub struct SnatchLock {
lock: RwLock<()>,
@ -76,7 +85,24 @@ impl SnatchLock {
}
/// Request read access to snatchable resources.
#[track_caller]
pub fn read(&self) -> SnatchGuard {
if cfg!(debug_assertions) {
let caller = Location::caller();
let backtrace = Backtrace::capture();
if let Some((prev, bt)) = READ_LOCK_LOCATION.take() {
let current = thread::current();
let name = current.name().unwrap_or("<unnamed>");
panic!(
"thread '{name}' attempted to acquire a snatch read lock recursively.\n
- {prev}\n{bt}\n
- {caller}\n{backtrace}"
);
} else {
READ_LOCK_LOCATION.set(Some((caller, backtrace)));
}
}
SnatchGuard(self.lock.read())
}
@ -89,3 +115,10 @@ impl SnatchLock {
ExclusiveSnatchGuard(self.lock.write())
}
}
impl Drop for SnatchGuard<'_> {
fn drop(&mut self) {
#[cfg(debug_assertions)]
READ_LOCK_LOCATION.take();
}
}

View file

@ -108,23 +108,27 @@ impl<A: HalApi> BufferBindGroupState<A> {
#[derive(Debug)]
pub(crate) struct BufferUsageScope<A: HalApi> {
state: Vec<BufferUses>,
metadata: ResourceMetadata<Buffer<A>>,
}
impl<A: HalApi> BufferUsageScope<A> {
pub fn new() -> Self {
impl<A: HalApi> Default for BufferUsageScope<A> {
fn default() -> Self {
Self {
state: Vec::new(),
metadata: ResourceMetadata::new(),
}
}
}
impl<A: HalApi> BufferUsageScope<A> {
fn tracker_assert_in_bounds(&self, index: usize) {
strict_assert!(index < self.state.len());
self.metadata.tracker_assert_in_bounds(index);
}
pub fn clear(&mut self) {
self.state.clear();
self.metadata.clear();
}
/// Sets the size of all the vectors inside the tracker.
///

View file

@ -39,6 +39,11 @@ impl<T: Resource> ResourceMetadata<T> {
resize_bitvec(&mut self.owned, size);
}
pub(super) fn clear(&mut self) {
self.resources.clear();
self.owned.clear();
}
/// Ensures a given index is in bounds for all arrays and does
/// sanity checks of the presence of a refcount.
///

View file

@ -480,8 +480,8 @@ impl<A: HalApi> RenderBundleScope<A> {
/// Create the render bundle scope and pull the maximum IDs from the hubs.
pub fn new() -> Self {
Self {
buffers: RwLock::new(BufferUsageScope::new()),
textures: RwLock::new(TextureUsageScope::new()),
buffers: RwLock::new(BufferUsageScope::default()),
textures: RwLock::new(TextureUsageScope::default()),
bind_groups: RwLock::new(StatelessTracker::new()),
render_pipelines: RwLock::new(StatelessTracker::new()),
query_sets: RwLock::new(StatelessTracker::new()),
@ -512,28 +512,52 @@ impl<A: HalApi> RenderBundleScope<A> {
}
}
/// A pool for storing the memory used by [`UsageScope`]s. We take and store this memory when the
/// scope is dropped to avoid reallocating. The memory required only grows and allocation cost is
/// significant when a large number of resources have been used.
pub(crate) type UsageScopePool<A> = Mutex<Vec<(BufferUsageScope<A>, TextureUsageScope<A>)>>;
/// A usage scope tracker. Only needs to store stateful resources as stateless
/// resources cannot possibly have a usage conflict.
#[derive(Debug)]
pub(crate) struct UsageScope<A: HalApi> {
pub(crate) struct UsageScope<'a, A: HalApi> {
pub pool: &'a UsageScopePool<A>,
pub buffers: BufferUsageScope<A>,
pub textures: TextureUsageScope<A>,
}
impl<A: HalApi> UsageScope<A> {
/// Create the render bundle scope and pull the maximum IDs from the hubs.
pub fn new(tracker_indices: &TrackerIndexAllocators) -> Self {
let mut value = Self {
buffers: BufferUsageScope::new(),
textures: TextureUsageScope::new(),
impl<'a, A: HalApi> Drop for UsageScope<'a, A> {
fn drop(&mut self) {
// clear vecs and push into pool
self.buffers.clear();
self.textures.clear();
self.pool.lock().push((
std::mem::take(&mut self.buffers),
std::mem::take(&mut self.textures),
));
}
}
impl<A: HalApi> UsageScope<'static, A> {
pub fn new_pooled<'d>(
pool: &'d UsageScopePool<A>,
tracker_indices: &TrackerIndexAllocators,
) -> UsageScope<'d, A> {
let pooled = pool.lock().pop().unwrap_or_default();
let mut scope = UsageScope::<'d, A> {
pool,
buffers: pooled.0,
textures: pooled.1,
};
value.buffers.set_size(tracker_indices.buffers.size());
value.textures.set_size(tracker_indices.textures.size());
value
scope.buffers.set_size(tracker_indices.buffers.size());
scope.textures.set_size(tracker_indices.textures.size());
scope
}
}
impl<'a, A: HalApi> UsageScope<'a, A> {
/// Merge the inner contents of a bind group into the usage scope.
///
/// Only stateful things are merged in here, all other resources are owned

View file

@ -210,6 +210,7 @@ pub(crate) struct TextureStateSet {
simple: Vec<TextureUses>,
complex: FastHashMap<usize, ComplexTextureState>,
}
impl TextureStateSet {
fn new() -> Self {
Self {
@ -235,15 +236,16 @@ pub(crate) struct TextureUsageScope<A: HalApi> {
metadata: ResourceMetadata<Texture<A>>,
}
impl<A: HalApi> TextureUsageScope<A> {
pub fn new() -> Self {
impl<A: HalApi> Default for TextureUsageScope<A> {
fn default() -> Self {
Self {
set: TextureStateSet::new(),
metadata: ResourceMetadata::new(),
}
}
}
impl<A: HalApi> TextureUsageScope<A> {
fn tracker_assert_in_bounds(&self, index: usize) {
self.metadata.tracker_assert_in_bounds(index);
@ -258,6 +260,11 @@ impl<A: HalApi> TextureUsageScope<A> {
});
}
pub fn clear(&mut self) {
self.set.clear();
self.metadata.clear();
}
/// Sets the size of all the vectors inside the tracker.
///
/// Must be called with the highest possible Texture ID before

File diff suppressed because one or more lines are too long

View file

@ -432,7 +432,9 @@ impl super::Adapter {
}
}
impl crate::Adapter<super::Api> for super::Adapter {
impl crate::Adapter for super::Adapter {
type A = super::Api;
unsafe fn open(
&self,
_features: wgt::Features,

View file

@ -249,7 +249,9 @@ impl super::CommandEncoder {
}
}
impl crate::CommandEncoder<super::Api> for super::CommandEncoder {
impl crate::CommandEncoder for super::CommandEncoder {
type A = super::Api;
unsafe fn begin_encoding(&mut self, label: crate::Label) -> Result<(), crate::DeviceError> {
let list = loop {
if let Some(list) = self.free_lists.pop() {

View file

@ -323,7 +323,9 @@ impl super::Device {
}
}
impl crate::Device<super::Api> for super::Device {
impl crate::Device for super::Device {
type A = super::Api;
unsafe fn exit(mut self, _queue: super::Queue) {
self.rtv_pool.lock().free_handle(self.null_rtv_handle);
self.mem_allocator = None;
@ -1098,7 +1100,16 @@ impl crate::Device<super::Api> for super::Device {
}
let mut dynamic_buffers = Vec::new();
for (layout, entry) in desc.layout.entries.iter().zip(desc.entries.iter()) {
let layout_and_entry_iter = desc.entries.iter().map(|entry| {
let layout = desc
.layout
.entries
.iter()
.find(|layout_entry| layout_entry.binding == entry.binding)
.expect("internal error: no layout entry found with binding slot");
(layout, entry)
});
for (layout, entry) in layout_and_entry_iter {
match layout.ty {
wgt::BindingType::Buffer {
has_dynamic_offset: true,

View file

@ -13,7 +13,9 @@ impl Drop for super::Instance {
}
}
impl crate::Instance<super::Api> for super::Instance {
impl crate::Instance for super::Instance {
type A = super::Api;
unsafe fn init(desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
profiling::scope!("Init DX12 Backend");
let lib_main = d3d12::D3D12Lib::new().map_err(|e| {

View file

@ -639,7 +639,9 @@ impl SwapChain {
}
}
impl crate::Surface<Api> for Surface {
impl crate::Surface for Surface {
type A = Api;
unsafe fn configure(
&self,
device: &Device,
@ -884,7 +886,9 @@ impl crate::Surface<Api> for Surface {
}
}
impl crate::Queue<Api> for Queue {
impl crate::Queue for Queue {
type A = Api;
unsafe fn submit(
&self,
command_buffers: &[&CommandBuffer],

View file

@ -39,7 +39,9 @@ impl crate::Api for Api {
type ComputePipeline = Resource;
}
impl crate::Instance<Api> for Context {
impl crate::Instance for Context {
type A = Api;
unsafe fn init(desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
Ok(Context)
}
@ -56,7 +58,9 @@ impl crate::Instance<Api> for Context {
}
}
impl crate::Surface<Api> for Context {
impl crate::Surface for Context {
type A = Api;
unsafe fn configure(
&self,
device: &Context,
@ -76,7 +80,9 @@ impl crate::Surface<Api> for Context {
unsafe fn discard_texture(&self, texture: Resource) {}
}
impl crate::Adapter<Api> for Context {
impl crate::Adapter for Context {
type A = Api;
unsafe fn open(
&self,
features: wgt::Features,
@ -100,7 +106,9 @@ impl crate::Adapter<Api> for Context {
}
}
impl crate::Queue<Api> for Context {
impl crate::Queue for Context {
type A = Api;
unsafe fn submit(
&self,
command_buffers: &[&Resource],
@ -122,7 +130,9 @@ impl crate::Queue<Api> for Context {
}
}
impl crate::Device<Api> for Context {
impl crate::Device for Context {
type A = Api;
unsafe fn exit(self, queue: Context) {}
unsafe fn create_buffer(&self, desc: &crate::BufferDescriptor) -> DeviceResult<Resource> {
Ok(Resource)
@ -259,7 +269,9 @@ impl crate::Device<Api> for Context {
unsafe fn destroy_acceleration_structure(&self, _acceleration_structure: Resource) {}
}
impl crate::CommandEncoder<Api> for Encoder {
impl crate::CommandEncoder for Encoder {
type A = Api;
unsafe fn begin_encoding(&mut self, label: crate::Label) -> DeviceResult<()> {
Ok(())
}

View file

@ -922,7 +922,9 @@ impl super::Adapter {
}
}
impl crate::Adapter<super::Api> for super::Adapter {
impl crate::Adapter for super::Adapter {
type A = super::Api;
unsafe fn open(
&self,
features: wgt::Features,

View file

@ -250,7 +250,9 @@ impl super::CommandEncoder {
}
}
impl crate::CommandEncoder<super::Api> for super::CommandEncoder {
impl crate::CommandEncoder for super::CommandEncoder {
type A = super::Api;
unsafe fn begin_encoding(&mut self, label: crate::Label) -> Result<(), crate::DeviceError> {
self.state = State::default();
self.cmd_buffer.label = label.map(str::to_string);

View file

@ -483,7 +483,9 @@ impl super::Device {
}
}
impl crate::Device<super::Api> for super::Device {
impl crate::Device for super::Device {
type A = super::Api;
unsafe fn exit(self, queue: super::Queue) {
let gl = &self.shared.context.lock();
unsafe { gl.delete_vertex_array(self.main_vao) };
@ -1123,8 +1125,10 @@ impl crate::Device<super::Api> for super::Device {
!0;
bg_layout
.entries
.last()
.map_or(0, |b| b.binding as usize + 1)
.iter()
.map(|b| b.binding)
.max()
.map_or(0, |idx| idx as usize + 1)
]
.into_boxed_slice();
@ -1177,7 +1181,16 @@ impl crate::Device<super::Api> for super::Device {
) -> Result<super::BindGroup, crate::DeviceError> {
let mut contents = Vec::new();
for (entry, layout) in desc.entries.iter().zip(desc.layout.entries.iter()) {
let layout_and_entry_iter = desc.entries.iter().map(|entry| {
let layout = desc
.layout
.entries
.iter()
.find(|layout_entry| layout_entry.binding == entry.binding)
.expect("internal error: no layout entry found with binding slot");
(entry, layout)
});
for (entry, layout) in layout_and_entry_iter {
let binding = match layout.ty {
wgt::BindingType::Buffer { .. } => {
let bb = &desc.buffers[entry.resource_index as usize];

View file

@ -703,7 +703,9 @@ impl Instance {
unsafe impl Send for Instance {}
unsafe impl Sync for Instance {}
impl crate::Instance<super::Api> for Instance {
impl crate::Instance for Instance {
type A = super::Api;
unsafe fn init(desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
profiling::scope!("Init OpenGL (EGL) Backend");
#[cfg(Emscripten)]
@ -1165,7 +1167,9 @@ impl Surface {
}
}
impl crate::Surface<super::Api> for Surface {
impl crate::Surface for Surface {
type A = super::Api;
unsafe fn configure(
&self,
device: &super::Device,

View file

@ -1748,7 +1748,9 @@ impl super::Queue {
}
}
impl crate::Queue<super::Api> for super::Queue {
impl crate::Queue for super::Queue {
type A = super::Api;
unsafe fn submit(
&self,
command_buffers: &[&super::CommandBuffer],

View file

@ -116,7 +116,9 @@ unsafe impl Sync for Instance {}
#[cfg(send_sync)]
unsafe impl Send for Instance {}
impl crate::Instance<super::Api> for Instance {
impl crate::Instance for Instance {
type A = super::Api;
unsafe fn init(_desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
profiling::scope!("Init OpenGL (WebGL) Backend");
Ok(Instance {
@ -309,7 +311,9 @@ impl Surface {
}
}
impl crate::Surface<super::Api> for Surface {
impl crate::Surface for Surface {
type A = super::Api;
unsafe fn configure(
&self,
device: &super::Device,

View file

@ -422,7 +422,9 @@ fn create_instance_device() -> Result<InstanceDevice, crate::InstanceError> {
Ok(InstanceDevice { dc, _tx: drop_tx })
}
impl crate::Instance<super::Api> for Instance {
impl crate::Instance for Instance {
type A = super::Api;
unsafe fn init(desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
profiling::scope!("Init OpenGL (WGL) Backend");
let opengl_module = unsafe { LoadLibraryA("opengl32.dll\0".as_ptr() as *const _) };
@ -676,7 +678,9 @@ impl Surface {
}
}
impl crate::Surface<super::Api> for Surface {
impl crate::Surface for Surface {
type A = super::Api;
unsafe fn configure(
&self,
device: &super::Device,

View file

@ -191,13 +191,13 @@ impl InstanceError {
}
pub trait Api: Clone + fmt::Debug + Sized {
type Instance: Instance<Self>;
type Surface: Surface<Self>;
type Adapter: Adapter<Self>;
type Device: Device<Self>;
type Instance: Instance<A = Self>;
type Surface: Surface<A = Self>;
type Adapter: Adapter<A = Self>;
type Device: Device<A = Self>;
type Queue: Queue<Self>;
type CommandEncoder: CommandEncoder<Self>;
type Queue: Queue<A = Self>;
type CommandEncoder: CommandEncoder<A = Self>;
type CommandBuffer: WasmNotSendSync + fmt::Debug;
type Buffer: fmt::Debug + WasmNotSendSync + 'static;
@ -218,18 +218,22 @@ pub trait Api: Clone + fmt::Debug + Sized {
type AccelerationStructure: fmt::Debug + WasmNotSendSync + 'static;
}
pub trait Instance<A: Api>: Sized + WasmNotSendSync {
pub trait Instance: Sized + WasmNotSendSync {
type A: Api;
unsafe fn init(desc: &InstanceDescriptor) -> Result<Self, InstanceError>;
unsafe fn create_surface(
&self,
display_handle: raw_window_handle::RawDisplayHandle,
window_handle: raw_window_handle::RawWindowHandle,
) -> Result<A::Surface, InstanceError>;
unsafe fn destroy_surface(&self, surface: A::Surface);
unsafe fn enumerate_adapters(&self) -> Vec<ExposedAdapter<A>>;
) -> Result<<Self::A as Api>::Surface, InstanceError>;
unsafe fn destroy_surface(&self, surface: <Self::A as Api>::Surface);
unsafe fn enumerate_adapters(&self) -> Vec<ExposedAdapter<Self::A>>;
}
pub trait Surface<A: Api>: WasmNotSendSync {
pub trait Surface: WasmNotSendSync {
type A: Api;
/// Configures the surface to use the given device.
///
/// # Safety
@ -240,7 +244,7 @@ pub trait Surface<A: Api>: WasmNotSendSync {
/// - All surfaces created using other devices must have been unconfigured before this call.
unsafe fn configure(
&self,
device: &A::Device,
device: &<Self::A as Api>::Device,
config: &SurfaceConfiguration,
) -> Result<(), SurfaceError>;
@ -252,7 +256,7 @@ pub trait Surface<A: Api>: WasmNotSendSync {
/// - All [`AcquiredSurfaceTexture`]s must have been destroyed.
/// - All [`Api::TextureView`]s derived from the [`AcquiredSurfaceTexture`]s must have been destroyed.
/// - The surface must have been configured on the given device.
unsafe fn unconfigure(&self, device: &A::Device);
unsafe fn unconfigure(&self, device: &<Self::A as Api>::Device);
/// Returns the next texture to be presented by the swapchain for drawing
///
@ -267,16 +271,18 @@ pub trait Surface<A: Api>: WasmNotSendSync {
unsafe fn acquire_texture(
&self,
timeout: Option<std::time::Duration>,
) -> Result<Option<AcquiredSurfaceTexture<A>>, SurfaceError>;
unsafe fn discard_texture(&self, texture: A::SurfaceTexture);
) -> Result<Option<AcquiredSurfaceTexture<Self::A>>, SurfaceError>;
unsafe fn discard_texture(&self, texture: <Self::A as Api>::SurfaceTexture);
}
pub trait Adapter<A: Api>: WasmNotSendSync {
pub trait Adapter: WasmNotSendSync {
type A: Api;
unsafe fn open(
&self,
features: wgt::Features,
limits: &wgt::Limits,
) -> Result<OpenDevice<A>, DeviceError>;
) -> Result<OpenDevice<Self::A>, DeviceError>;
/// Return the set of supported capabilities for a texture format.
unsafe fn texture_format_capabilities(
@ -287,7 +293,10 @@ pub trait Adapter<A: Api>: WasmNotSendSync {
/// Returns the capabilities of working with a specified surface.
///
/// `None` means presentation is not supported for it.
unsafe fn surface_capabilities(&self, surface: &A::Surface) -> Option<SurfaceCapabilities>;
unsafe fn surface_capabilities(
&self,
surface: &<Self::A as Api>::Surface,
) -> Option<SurfaceCapabilities>;
/// Creates a [`PresentationTimestamp`] using the adapter's WSI.
///
@ -295,97 +304,111 @@ pub trait Adapter<A: Api>: WasmNotSendSync {
unsafe fn get_presentation_timestamp(&self) -> wgt::PresentationTimestamp;
}
pub trait Device<A: Api>: WasmNotSendSync {
pub trait Device: WasmNotSendSync {
type A: Api;
/// Exit connection to this logical device.
unsafe fn exit(self, queue: A::Queue);
unsafe fn exit(self, queue: <Self::A as Api>::Queue);
/// Creates a new buffer.
///
/// The initial usage is `BufferUses::empty()`.
unsafe fn create_buffer(&self, desc: &BufferDescriptor) -> Result<A::Buffer, DeviceError>;
unsafe fn destroy_buffer(&self, buffer: A::Buffer);
unsafe fn create_buffer(
&self,
desc: &BufferDescriptor,
) -> Result<<Self::A as Api>::Buffer, DeviceError>;
unsafe fn destroy_buffer(&self, buffer: <Self::A as Api>::Buffer);
//TODO: clarify if zero-sized mapping is allowed
unsafe fn map_buffer(
&self,
buffer: &A::Buffer,
buffer: &<Self::A as Api>::Buffer,
range: MemoryRange,
) -> Result<BufferMapping, DeviceError>;
unsafe fn unmap_buffer(&self, buffer: &A::Buffer) -> Result<(), DeviceError>;
unsafe fn flush_mapped_ranges<I>(&self, buffer: &A::Buffer, ranges: I)
unsafe fn unmap_buffer(&self, buffer: &<Self::A as Api>::Buffer) -> Result<(), DeviceError>;
unsafe fn flush_mapped_ranges<I>(&self, buffer: &<Self::A as Api>::Buffer, ranges: I)
where
I: Iterator<Item = MemoryRange>;
unsafe fn invalidate_mapped_ranges<I>(&self, buffer: &A::Buffer, ranges: I)
unsafe fn invalidate_mapped_ranges<I>(&self, buffer: &<Self::A as Api>::Buffer, ranges: I)
where
I: Iterator<Item = MemoryRange>;
/// Creates a new texture.
///
/// The initial usage for all subresources is `TextureUses::UNINITIALIZED`.
unsafe fn create_texture(&self, desc: &TextureDescriptor) -> Result<A::Texture, DeviceError>;
unsafe fn destroy_texture(&self, texture: A::Texture);
unsafe fn create_texture(
&self,
desc: &TextureDescriptor,
) -> Result<<Self::A as Api>::Texture, DeviceError>;
unsafe fn destroy_texture(&self, texture: <Self::A as Api>::Texture);
unsafe fn create_texture_view(
&self,
texture: &A::Texture,
texture: &<Self::A as Api>::Texture,
desc: &TextureViewDescriptor,
) -> Result<A::TextureView, DeviceError>;
unsafe fn destroy_texture_view(&self, view: A::TextureView);
unsafe fn create_sampler(&self, desc: &SamplerDescriptor) -> Result<A::Sampler, DeviceError>;
unsafe fn destroy_sampler(&self, sampler: A::Sampler);
) -> Result<<Self::A as Api>::TextureView, DeviceError>;
unsafe fn destroy_texture_view(&self, view: <Self::A as Api>::TextureView);
unsafe fn create_sampler(
&self,
desc: &SamplerDescriptor,
) -> Result<<Self::A as Api>::Sampler, DeviceError>;
unsafe fn destroy_sampler(&self, sampler: <Self::A as Api>::Sampler);
/// Create a fresh [`CommandEncoder`].
///
/// The new `CommandEncoder` is in the "closed" state.
unsafe fn create_command_encoder(
&self,
desc: &CommandEncoderDescriptor<A>,
) -> Result<A::CommandEncoder, DeviceError>;
unsafe fn destroy_command_encoder(&self, pool: A::CommandEncoder);
desc: &CommandEncoderDescriptor<Self::A>,
) -> Result<<Self::A as Api>::CommandEncoder, DeviceError>;
unsafe fn destroy_command_encoder(&self, pool: <Self::A as Api>::CommandEncoder);
/// Creates a bind group layout.
unsafe fn create_bind_group_layout(
&self,
desc: &BindGroupLayoutDescriptor,
) -> Result<A::BindGroupLayout, DeviceError>;
unsafe fn destroy_bind_group_layout(&self, bg_layout: A::BindGroupLayout);
) -> Result<<Self::A as Api>::BindGroupLayout, DeviceError>;
unsafe fn destroy_bind_group_layout(&self, bg_layout: <Self::A as Api>::BindGroupLayout);
unsafe fn create_pipeline_layout(
&self,
desc: &PipelineLayoutDescriptor<A>,
) -> Result<A::PipelineLayout, DeviceError>;
unsafe fn destroy_pipeline_layout(&self, pipeline_layout: A::PipelineLayout);
desc: &PipelineLayoutDescriptor<Self::A>,
) -> Result<<Self::A as Api>::PipelineLayout, DeviceError>;
unsafe fn destroy_pipeline_layout(&self, pipeline_layout: <Self::A as Api>::PipelineLayout);
unsafe fn create_bind_group(
&self,
desc: &BindGroupDescriptor<A>,
) -> Result<A::BindGroup, DeviceError>;
unsafe fn destroy_bind_group(&self, group: A::BindGroup);
desc: &BindGroupDescriptor<Self::A>,
) -> Result<<Self::A as Api>::BindGroup, DeviceError>;
unsafe fn destroy_bind_group(&self, group: <Self::A as Api>::BindGroup);
unsafe fn create_shader_module(
&self,
desc: &ShaderModuleDescriptor,
shader: ShaderInput,
) -> Result<A::ShaderModule, ShaderError>;
unsafe fn destroy_shader_module(&self, module: A::ShaderModule);
) -> Result<<Self::A as Api>::ShaderModule, ShaderError>;
unsafe fn destroy_shader_module(&self, module: <Self::A as Api>::ShaderModule);
unsafe fn create_render_pipeline(
&self,
desc: &RenderPipelineDescriptor<A>,
) -> Result<A::RenderPipeline, PipelineError>;
unsafe fn destroy_render_pipeline(&self, pipeline: A::RenderPipeline);
desc: &RenderPipelineDescriptor<Self::A>,
) -> Result<<Self::A as Api>::RenderPipeline, PipelineError>;
unsafe fn destroy_render_pipeline(&self, pipeline: <Self::A as Api>::RenderPipeline);
unsafe fn create_compute_pipeline(
&self,
desc: &ComputePipelineDescriptor<A>,
) -> Result<A::ComputePipeline, PipelineError>;
unsafe fn destroy_compute_pipeline(&self, pipeline: A::ComputePipeline);
desc: &ComputePipelineDescriptor<Self::A>,
) -> Result<<Self::A as Api>::ComputePipeline, PipelineError>;
unsafe fn destroy_compute_pipeline(&self, pipeline: <Self::A as Api>::ComputePipeline);
unsafe fn create_query_set(
&self,
desc: &wgt::QuerySetDescriptor<Label>,
) -> Result<A::QuerySet, DeviceError>;
unsafe fn destroy_query_set(&self, set: A::QuerySet);
unsafe fn create_fence(&self) -> Result<A::Fence, DeviceError>;
unsafe fn destroy_fence(&self, fence: A::Fence);
unsafe fn get_fence_value(&self, fence: &A::Fence) -> Result<FenceValue, DeviceError>;
) -> Result<<Self::A as Api>::QuerySet, DeviceError>;
unsafe fn destroy_query_set(&self, set: <Self::A as Api>::QuerySet);
unsafe fn create_fence(&self) -> Result<<Self::A as Api>::Fence, DeviceError>;
unsafe fn destroy_fence(&self, fence: <Self::A as Api>::Fence);
unsafe fn get_fence_value(
&self,
fence: &<Self::A as Api>::Fence,
) -> Result<FenceValue, DeviceError>;
/// Calling wait with a lower value than the current fence value will immediately return.
unsafe fn wait(
&self,
fence: &A::Fence,
fence: &<Self::A as Api>::Fence,
value: FenceValue,
timeout_ms: u32,
) -> Result<bool, DeviceError>;
@ -396,22 +419,24 @@ pub trait Device<A: Api>: WasmNotSendSync {
unsafe fn create_acceleration_structure(
&self,
desc: &AccelerationStructureDescriptor,
) -> Result<A::AccelerationStructure, DeviceError>;
) -> Result<<Self::A as Api>::AccelerationStructure, DeviceError>;
unsafe fn get_acceleration_structure_build_sizes(
&self,
desc: &GetAccelerationStructureBuildSizesDescriptor<A>,
desc: &GetAccelerationStructureBuildSizesDescriptor<Self::A>,
) -> AccelerationStructureBuildSizes;
unsafe fn get_acceleration_structure_device_address(
&self,
acceleration_structure: &A::AccelerationStructure,
acceleration_structure: &<Self::A as Api>::AccelerationStructure,
) -> wgt::BufferAddress;
unsafe fn destroy_acceleration_structure(
&self,
acceleration_structure: A::AccelerationStructure,
acceleration_structure: <Self::A as Api>::AccelerationStructure,
);
}
pub trait Queue<A: Api>: WasmNotSendSync {
pub trait Queue: WasmNotSendSync {
type A: Api;
/// Submits the command buffers for execution on GPU.
///
/// Valid usage:
@ -422,14 +447,14 @@ pub trait Queue<A: Api>: WasmNotSendSync {
/// passed to the surface_textures argument.
unsafe fn submit(
&self,
command_buffers: &[&A::CommandBuffer],
surface_textures: &[&A::SurfaceTexture],
signal_fence: Option<(&mut A::Fence, FenceValue)>,
command_buffers: &[&<Self::A as Api>::CommandBuffer],
surface_textures: &[&<Self::A as Api>::SurfaceTexture],
signal_fence: Option<(&mut <Self::A as Api>::Fence, FenceValue)>,
) -> Result<(), DeviceError>;
unsafe fn present(
&self,
surface: &A::Surface,
texture: A::SurfaceTexture,
surface: &<Self::A as Api>::Surface,
texture: <Self::A as Api>::SurfaceTexture,
) -> Result<(), SurfaceError>;
unsafe fn get_timestamp_period(&self) -> f32;
}
@ -472,7 +497,9 @@ pub trait Queue<A: Api>: WasmNotSendSync {
/// built it.
///
/// - A `CommandEncoder` must not outlive its `Device`.
pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
pub trait CommandEncoder: WasmNotSendSync + fmt::Debug {
type A: Api;
/// Begin encoding a new command buffer.
///
/// This puts this `CommandEncoder` in the "recording" state.
@ -510,7 +537,7 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
///
/// [`CommandBuffer`]: Api::CommandBuffer
/// [`begin_encoding`]: CommandEncoder::begin_encoding
unsafe fn end_encoding(&mut self) -> Result<A::CommandBuffer, DeviceError>;
unsafe fn end_encoding(&mut self) -> Result<<Self::A as Api>::CommandBuffer, DeviceError>;
/// Reclaim all resources belonging to this `CommandEncoder`.
///
@ -525,22 +552,26 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// [`CommandBuffer`]: Api::CommandBuffer
unsafe fn reset_all<I>(&mut self, command_buffers: I)
where
I: Iterator<Item = A::CommandBuffer>;
I: Iterator<Item = <Self::A as Api>::CommandBuffer>;
unsafe fn transition_buffers<'a, T>(&mut self, barriers: T)
where
T: Iterator<Item = BufferBarrier<'a, A>>;
T: Iterator<Item = BufferBarrier<'a, Self::A>>;
unsafe fn transition_textures<'a, T>(&mut self, barriers: T)
where
T: Iterator<Item = TextureBarrier<'a, A>>;
T: Iterator<Item = TextureBarrier<'a, Self::A>>;
// copy operations
unsafe fn clear_buffer(&mut self, buffer: &A::Buffer, range: MemoryRange);
unsafe fn clear_buffer(&mut self, buffer: &<Self::A as Api>::Buffer, range: MemoryRange);
unsafe fn copy_buffer_to_buffer<T>(&mut self, src: &A::Buffer, dst: &A::Buffer, regions: T)
where
unsafe fn copy_buffer_to_buffer<T>(
&mut self,
src: &<Self::A as Api>::Buffer,
dst: &<Self::A as Api>::Buffer,
regions: T,
) where
T: Iterator<Item = BufferCopy>;
/// Copy from an external image to an internal texture.
@ -551,7 +582,7 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
unsafe fn copy_external_image_to_texture<T>(
&mut self,
src: &wgt::ImageCopyExternalImage,
dst: &A::Texture,
dst: &<Self::A as Api>::Texture,
dst_premultiplication: bool,
regions: T,
) where
@ -563,9 +594,9 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// Note: the copy extent is in physical size (rounded to the block size)
unsafe fn copy_texture_to_texture<T>(
&mut self,
src: &A::Texture,
src: &<Self::A as Api>::Texture,
src_usage: TextureUses,
dst: &A::Texture,
dst: &<Self::A as Api>::Texture,
regions: T,
) where
T: Iterator<Item = TextureCopy>;
@ -574,8 +605,12 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// Works with a single array layer.
/// Note: `dst` current usage has to be `TextureUses::COPY_DST`.
/// Note: the copy extent is in physical size (rounded to the block size)
unsafe fn copy_buffer_to_texture<T>(&mut self, src: &A::Buffer, dst: &A::Texture, regions: T)
where
unsafe fn copy_buffer_to_texture<T>(
&mut self,
src: &<Self::A as Api>::Buffer,
dst: &<Self::A as Api>::Texture,
regions: T,
) where
T: Iterator<Item = BufferTextureCopy>;
/// Copy from texture to buffer.
@ -583,9 +618,9 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// Note: the copy extent is in physical size (rounded to the block size)
unsafe fn copy_texture_to_buffer<T>(
&mut self,
src: &A::Texture,
src: &<Self::A as Api>::Texture,
src_usage: TextureUses,
dst: &A::Buffer,
dst: &<Self::A as Api>::Buffer,
regions: T,
) where
T: Iterator<Item = BufferTextureCopy>;
@ -596,9 +631,9 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// of all the preceding groups to be taken from `layout`.
unsafe fn set_bind_group(
&mut self,
layout: &A::PipelineLayout,
layout: &<Self::A as Api>::PipelineLayout,
index: u32,
group: &A::BindGroup,
group: &<Self::A as Api>::BindGroup,
dynamic_offsets: &[wgt::DynamicOffset],
);
@ -612,7 +647,7 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// - The range of push constants written must be valid for the pipeline layout at draw time.
unsafe fn set_push_constants(
&mut self,
layout: &A::PipelineLayout,
layout: &<Self::A as Api>::PipelineLayout,
stages: wgt::ShaderStages,
offset_bytes: u32,
data: &[u32],
@ -627,18 +662,18 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
/// # Safety:
///
/// - If `set` is an occlusion query set, it must be the same one as used in the [`RenderPassDescriptor::occlusion_query_set`] parameter.
unsafe fn begin_query(&mut self, set: &A::QuerySet, index: u32);
unsafe fn begin_query(&mut self, set: &<Self::A as Api>::QuerySet, index: u32);
/// # Safety:
///
/// - If `set` is an occlusion query set, it must be the same one as used in the [`RenderPassDescriptor::occlusion_query_set`] parameter.
unsafe fn end_query(&mut self, set: &A::QuerySet, index: u32);
unsafe fn write_timestamp(&mut self, set: &A::QuerySet, index: u32);
unsafe fn reset_queries(&mut self, set: &A::QuerySet, range: Range<u32>);
unsafe fn end_query(&mut self, set: &<Self::A as Api>::QuerySet, index: u32);
unsafe fn write_timestamp(&mut self, set: &<Self::A as Api>::QuerySet, index: u32);
unsafe fn reset_queries(&mut self, set: &<Self::A as Api>::QuerySet, range: Range<u32>);
unsafe fn copy_query_results(
&mut self,
set: &A::QuerySet,
set: &<Self::A as Api>::QuerySet,
range: Range<u32>,
buffer: &A::Buffer,
buffer: &<Self::A as Api>::Buffer,
offset: wgt::BufferAddress,
stride: wgt::BufferSize,
);
@ -646,17 +681,17 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
// render passes
// Begins a render pass, clears all active bindings.
unsafe fn begin_render_pass(&mut self, desc: &RenderPassDescriptor<A>);
unsafe fn begin_render_pass(&mut self, desc: &RenderPassDescriptor<Self::A>);
unsafe fn end_render_pass(&mut self);
unsafe fn set_render_pipeline(&mut self, pipeline: &A::RenderPipeline);
unsafe fn set_render_pipeline(&mut self, pipeline: &<Self::A as Api>::RenderPipeline);
unsafe fn set_index_buffer<'a>(
&mut self,
binding: BufferBinding<'a, A>,
binding: BufferBinding<'a, Self::A>,
format: wgt::IndexFormat,
);
unsafe fn set_vertex_buffer<'a>(&mut self, index: u32, binding: BufferBinding<'a, A>);
unsafe fn set_vertex_buffer<'a>(&mut self, index: u32, binding: BufferBinding<'a, Self::A>);
unsafe fn set_viewport(&mut self, rect: &Rect<f32>, depth_range: Range<f32>);
unsafe fn set_scissor_rect(&mut self, rect: &Rect<u32>);
unsafe fn set_stencil_reference(&mut self, value: u32);
@ -679,29 +714,29 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
);
unsafe fn draw_indirect(
&mut self,
buffer: &A::Buffer,
buffer: &<Self::A as Api>::Buffer,
offset: wgt::BufferAddress,
draw_count: u32,
);
unsafe fn draw_indexed_indirect(
&mut self,
buffer: &A::Buffer,
buffer: &<Self::A as Api>::Buffer,
offset: wgt::BufferAddress,
draw_count: u32,
);
unsafe fn draw_indirect_count(
&mut self,
buffer: &A::Buffer,
buffer: &<Self::A as Api>::Buffer,
offset: wgt::BufferAddress,
count_buffer: &A::Buffer,
count_buffer: &<Self::A as Api>::Buffer,
count_offset: wgt::BufferAddress,
max_count: u32,
);
unsafe fn draw_indexed_indirect_count(
&mut self,
buffer: &A::Buffer,
buffer: &<Self::A as Api>::Buffer,
offset: wgt::BufferAddress,
count_buffer: &A::Buffer,
count_buffer: &<Self::A as Api>::Buffer,
count_offset: wgt::BufferAddress,
max_count: u32,
);
@ -709,13 +744,17 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
// compute passes
// Begins a compute pass, clears all active bindings.
unsafe fn begin_compute_pass(&mut self, desc: &ComputePassDescriptor<A>);
unsafe fn begin_compute_pass(&mut self, desc: &ComputePassDescriptor<Self::A>);
unsafe fn end_compute_pass(&mut self);
unsafe fn set_compute_pipeline(&mut self, pipeline: &A::ComputePipeline);
unsafe fn set_compute_pipeline(&mut self, pipeline: &<Self::A as Api>::ComputePipeline);
unsafe fn dispatch(&mut self, count: [u32; 3]);
unsafe fn dispatch_indirect(&mut self, buffer: &A::Buffer, offset: wgt::BufferAddress);
unsafe fn dispatch_indirect(
&mut self,
buffer: &<Self::A as Api>::Buffer,
offset: wgt::BufferAddress,
);
/// To get the required sizes for the buffer allocations use `get_acceleration_structure_build_sizes` per descriptor
/// All buffers must be synchronized externally
@ -729,8 +768,8 @@ pub trait CommandEncoder<A: Api>: WasmNotSendSync + fmt::Debug {
descriptor_count: u32,
descriptors: T,
) where
A: 'a,
T: IntoIterator<Item = BuildAccelerationStructureDescriptor<'a, A>>;
Self::A: 'a,
T: IntoIterator<Item = BuildAccelerationStructureDescriptor<'a, Self::A>>;
unsafe fn place_acceleration_structure_barrier(
&mut self,

View file

@ -18,7 +18,9 @@ impl super::Adapter {
}
}
impl crate::Adapter<super::Api> for super::Adapter {
impl crate::Adapter for super::Adapter {
type A = super::Api;
unsafe fn open(
&self,
features: wgt::Features,

View file

@ -168,7 +168,9 @@ impl super::CommandState {
}
}
impl crate::CommandEncoder<super::Api> for super::CommandEncoder {
impl crate::CommandEncoder for super::CommandEncoder {
type A = super::Api;
unsafe fn begin_encoding(&mut self, label: crate::Label) -> Result<(), crate::DeviceError> {
let queue = &self.raw_queue.lock();
let retain_references = self.shared.settings.retain_command_buffer_references;

View file

@ -273,7 +273,9 @@ impl super::Device {
}
}
impl crate::Device<super::Api> for super::Device {
impl crate::Device for super::Device {
type A = super::Api;
unsafe fn exit(self, _queue: super::Queue) {}
unsafe fn create_buffer(&self, desc: &crate::BufferDescriptor) -> DeviceResult<super::Buffer> {
@ -706,7 +708,16 @@ impl crate::Device<super::Api> for super::Device {
for (&stage, counter) in super::NAGA_STAGES.iter().zip(bg.counters.iter_mut()) {
let stage_bit = map_naga_stage(stage);
let mut dynamic_offsets_count = 0u32;
for (entry, layout) in desc.entries.iter().zip(desc.layout.entries.iter()) {
let layout_and_entry_iter = desc.entries.iter().map(|entry| {
let layout = desc
.layout
.entries
.iter()
.find(|layout_entry| layout_entry.binding == entry.binding)
.expect("internal error: no layout entry found with binding slot");
(entry, layout)
});
for (entry, layout) in layout_and_entry_iter {
let size = layout.count.map_or(1, |c| c.get());
if let wgt::BindingType::Buffer {
has_dynamic_offset: true,

View file

@ -80,7 +80,9 @@ impl Instance {
}
}
impl crate::Instance<Api> for Instance {
impl crate::Instance for Instance {
type A = Api;
unsafe fn init(_desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
profiling::scope!("Init Metal Backend");
// We do not enable metal validation based on the validation flags as it affects the entire
@ -365,7 +367,9 @@ impl std::borrow::Borrow<Texture> for SurfaceTexture {
unsafe impl Send for SurfaceTexture {}
unsafe impl Sync for SurfaceTexture {}
impl crate::Queue<Api> for Queue {
impl crate::Queue for Queue {
type A = Api;
unsafe fn submit(
&self,
command_buffers: &[&CommandBuffer],

View file

@ -169,7 +169,9 @@ impl super::Surface {
}
}
impl crate::Surface<super::Api> for super::Surface {
impl crate::Surface for super::Surface {
type A = super::Api;
unsafe fn configure(
&self,
device: &super::Device,

View file

@ -20,25 +20,85 @@ fn indexing_features() -> wgt::Features {
| wgt::Features::PARTIALLY_BOUND_BINDING_ARRAY
}
/// Aggregate of the `vk::PhysicalDevice*Features` structs used by `gfx`.
/// Features supported by a [`vk::PhysicalDevice`] and its extensions.
///
/// This is used in two phases:
///
/// - When enumerating adapters, this represents the features offered by the
/// adapter. [`Instance::expose_adapter`] calls `vkGetPhysicalDeviceFeatures2`
/// (or `vkGetPhysicalDeviceFeatures` if that is not available) to collect
/// this information about the `VkPhysicalDevice` represented by the
/// `wgpu_hal::ExposedAdapter`.
///
/// - When opening a device, this represents the features we would like to
/// enable. At `wgpu_hal::Device` construction time,
/// [`PhysicalDeviceFeatures::from_extensions_and_requested_features`]
/// constructs an value of this type indicating which Vulkan features to
/// enable, based on the `wgpu_types::Features` requested.
#[derive(Debug, Default)]
pub struct PhysicalDeviceFeatures {
/// Basic Vulkan 1.0 features.
core: vk::PhysicalDeviceFeatures,
/// Features provided by `VK_EXT_descriptor_indexing`, promoted to Vulkan 1.2.
pub(super) descriptor_indexing: Option<vk::PhysicalDeviceDescriptorIndexingFeaturesEXT>,
/// Features provided by `VK_KHR_imageless_framebuffer`, promoted to Vulkan 1.2.
imageless_framebuffer: Option<vk::PhysicalDeviceImagelessFramebufferFeaturesKHR>,
/// Features provided by `VK_KHR_timeline_semaphore`, promoted to Vulkan 1.2
timeline_semaphore: Option<vk::PhysicalDeviceTimelineSemaphoreFeaturesKHR>,
/// Features provided by `VK_EXT_image_robustness`, promoted to Vulkan 1.3
image_robustness: Option<vk::PhysicalDeviceImageRobustnessFeaturesEXT>,
/// Features provided by `VK_EXT_robustness2`.
robustness2: Option<vk::PhysicalDeviceRobustness2FeaturesEXT>,
/// Features provided by `VK_KHR_multiview`, promoted to Vulkan 1.1.
multiview: Option<vk::PhysicalDeviceMultiviewFeaturesKHR>,
/// Features provided by `VK_KHR_sampler_ycbcr_conversion`, promoted to Vulkan 1.1.
sampler_ycbcr_conversion: Option<vk::PhysicalDeviceSamplerYcbcrConversionFeatures>,
/// Features provided by `VK_EXT_texture_compression_astc_hdr`, promoted to Vulkan 1.3.
astc_hdr: Option<vk::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>,
/// Features provided by `VK_KHR_shader_float16_int8` (promoted to Vulkan
/// 1.2) and `VK_KHR_16bit_storage` (promoted to Vulkan 1.1). We use these
/// features together, or not at all.
shader_float16: Option<(
vk::PhysicalDeviceShaderFloat16Int8Features,
vk::PhysicalDevice16BitStorageFeatures,
)>,
/// Features provided by `VK_KHR_acceleration_structure`.
acceleration_structure: Option<vk::PhysicalDeviceAccelerationStructureFeaturesKHR>,
/// Features provided by `VK_KHR_buffer_device_address`, promoted to Vulkan 1.2.
///
/// We only use this feature for
/// [`Features::RAY_TRACING_ACCELERATION_STRUCTURE`], which requires
/// `VK_KHR_acceleration_structure`, which depends on
/// `VK_KHR_buffer_device_address`, so [`Instance::expose_adapter`] only
/// bothers to check if `VK_KHR_acceleration_structure` is available,
/// leaving this `None`.
///
/// However, we do populate this when creating a device if
/// [`Features::RAY_TRACING_ACCELERATION_STRUCTURE`] is requested.
buffer_device_address: Option<vk::PhysicalDeviceBufferDeviceAddressFeaturesKHR>,
/// Features provided by `VK_KHR_ray_query`,
///
/// Vulkan requires that the feature be present if the `VK_KHR_ray_query`
/// extension is present, so [`Instance::expose_adapter`] doesn't bother retrieving
/// this from `vkGetPhysicalDeviceFeatures2`.
///
/// However, we do populate this when creating a device if ray tracing is requested.
ray_query: Option<vk::PhysicalDeviceRayQueryFeaturesKHR>,
/// Features provided by `VK_KHR_zero_initialize_workgroup_memory`, promoted
/// to Vulkan 1.3.
zero_initialize_workgroup_memory:
Option<vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>,
}
@ -91,9 +151,32 @@ impl PhysicalDeviceFeatures {
info
}
/// Create a `PhysicalDeviceFeatures` that will be used to create a logical device.
/// Create a `PhysicalDeviceFeatures` that can be used to create a logical
/// device.
///
/// `requested_features` should be the same as what was used to generate `enabled_extensions`.
/// Return a `PhysicalDeviceFeatures` value capturing all the Vulkan
/// features needed for the given [`Features`], [`DownlevelFlags`], and
/// [`PrivateCapabilities`]. You can use the returned value's
/// [`add_to_device_create_builder`] method to configure a
/// [`DeviceCreateInfoBuilder`] to build a logical device providing those
/// features.
///
/// To ensure that the returned value is able to select all the Vulkan
/// features needed to express `requested_features`, `downlevel_flags`, and
/// `private_caps`:
///
/// - The given `enabled_extensions` set must include all the extensions
/// selected by [`Adapter::required_device_extensions`] when passed
/// `features`.
///
/// - The given `device_api_version` must be the Vulkan API version of the
/// physical device we will use to create the logical device.
///
/// [`Features`]: wgt::Features
/// [`DownlevelFlags`]: wgt::DownlevelFlags
/// [`PrivateCapabilities`]: super::PrivateCapabilities
/// [`DeviceCreateInfoBuilder`]: vk::DeviceCreateInfoBuilder
/// [`Adapter::required_device_extensions`]: super::Adapter::required_device_extensions
fn from_extensions_and_requested_features(
device_api_version: u32,
enabled_extensions: &[&'static CStr],
@ -354,11 +437,16 @@ impl PhysicalDeviceFeatures {
}
}
/// Compute the wgpu [`Features`] and [`DownlevelFlags`] supported by a physical device.
///
/// Given `self`, together with the instance and physical device it was
/// built from, and a `caps` also built from those, determine which wgpu
/// features and downlevel flags the device can support.
fn to_wgpu(
&self,
instance: &ash::Instance,
phd: vk::PhysicalDevice,
caps: &PhysicalDeviceCapabilities,
caps: &PhysicalDeviceProperties,
) -> (wgt::Features, wgt::DownlevelFlags) {
use crate::auxil::db;
use wgt::{DownlevelFlags as Df, Features as F};
@ -639,15 +727,52 @@ impl PhysicalDeviceFeatures {
}
}
/// Information gathered about a physical device capabilities.
/// Vulkan "properties" structures gathered about a physical device.
///
/// This structure holds the properties of a [`vk::PhysicalDevice`]:
/// - the standard Vulkan device properties
/// - the `VkExtensionProperties` structs for all available extensions, and
/// - the per-extension properties structures for the available extensions that
/// `wgpu` cares about.
///
/// Generally, if you get it from any of these functions, it's stored
/// here:
/// - `vkEnumerateDeviceExtensionProperties`
/// - `vkGetPhysicalDeviceProperties`
/// - `vkGetPhysicalDeviceProperties2`
///
/// This also includes a copy of the device API version, since we can
/// use that as a shortcut for searching for an extension, if the
/// extension has been promoted to core in the current version.
///
/// This does not include device features; for those, see
/// [`PhysicalDeviceFeatures`].
#[derive(Default, Debug)]
pub struct PhysicalDeviceCapabilities {
pub struct PhysicalDeviceProperties {
/// Extensions supported by the `vk::PhysicalDevice`,
/// as returned by `vkEnumerateDeviceExtensionProperties`.
supported_extensions: Vec<vk::ExtensionProperties>,
/// Properties of the `vk::PhysicalDevice`, as returned by
/// `vkGetPhysicalDeviceProperties`.
properties: vk::PhysicalDeviceProperties,
/// Additional `vk::PhysicalDevice` properties from the
/// `VK_KHR_maintenance3` extension, promoted to Vulkan 1.1.
maintenance_3: Option<vk::PhysicalDeviceMaintenance3Properties>,
/// Additional `vk::PhysicalDevice` properties from the
/// `VK_EXT_descriptor_indexing` extension, promoted to Vulkan 1.2.
descriptor_indexing: Option<vk::PhysicalDeviceDescriptorIndexingPropertiesEXT>,
/// Additional `vk::PhysicalDevice` properties from the
/// `VK_KHR_acceleration_structure` extension.
acceleration_structure: Option<vk::PhysicalDeviceAccelerationStructurePropertiesKHR>,
/// Additional `vk::PhysicalDevice` properties from the
/// `VK_KHR_driver_properties` extension, promoted to Vulkan 1.2.
driver: Option<vk::PhysicalDeviceDriverPropertiesKHR>,
/// The device API version.
///
/// Which is the version of Vulkan supported for device-level functionality.
@ -657,10 +782,10 @@ pub struct PhysicalDeviceCapabilities {
}
// This is safe because the structs have `p_next: *mut c_void`, which we null out/never read.
unsafe impl Send for PhysicalDeviceCapabilities {}
unsafe impl Sync for PhysicalDeviceCapabilities {}
unsafe impl Send for PhysicalDeviceProperties {}
unsafe impl Sync for PhysicalDeviceProperties {}
impl PhysicalDeviceCapabilities {
impl PhysicalDeviceProperties {
pub fn properties(&self) -> vk::PhysicalDeviceProperties {
self.properties
}
@ -899,9 +1024,9 @@ impl super::InstanceShared {
fn inspect(
&self,
phd: vk::PhysicalDevice,
) -> (PhysicalDeviceCapabilities, PhysicalDeviceFeatures) {
) -> (PhysicalDeviceProperties, PhysicalDeviceFeatures) {
let capabilities = {
let mut capabilities = PhysicalDeviceCapabilities::default();
let mut capabilities = PhysicalDeviceProperties::default();
capabilities.supported_extensions =
unsafe { self.raw.enumerate_device_extension_properties(phd).unwrap() };
capabilities.properties = unsafe { self.raw.get_physical_device_properties(phd) };
@ -923,9 +1048,10 @@ impl super::InstanceShared {
let mut builder = vk::PhysicalDeviceProperties2KHR::builder();
if supports_maintenance3 {
capabilities.maintenance_3 =
Some(vk::PhysicalDeviceMaintenance3Properties::default());
builder = builder.push_next(capabilities.maintenance_3.as_mut().unwrap());
let next = capabilities
.maintenance_3
.insert(vk::PhysicalDeviceMaintenance3Properties::default());
builder = builder.push_next(next);
}
if supports_descriptor_indexing {
@ -1001,7 +1127,8 @@ impl super::InstanceShared {
builder = builder.push_next(next);
}
// `VK_KHR_imageless_framebuffer` is promoted to 1.2, but has no changes, so we can keep using the extension unconditionally.
// `VK_KHR_imageless_framebuffer` is promoted to 1.2, but has no
// changes, so we can keep using the extension unconditionally.
if capabilities.supports_extension(vk::KhrImagelessFramebufferFn::name()) {
let next = features
.imageless_framebuffer
@ -1009,7 +1136,8 @@ impl super::InstanceShared {
builder = builder.push_next(next);
}
// `VK_KHR_timeline_semaphore` is promoted to 1.2, but has no changes, so we can keep using the extension unconditionally.
// `VK_KHR_timeline_semaphore` is promoted to 1.2, but has no
// changes, so we can keep using the extension unconditionally.
if capabilities.supports_extension(vk::KhrTimelineSemaphoreFn::name()) {
let next = features
.timeline_semaphore
@ -1295,7 +1423,7 @@ impl super::Adapter {
self.raw
}
pub fn physical_device_capabilities(&self) -> &PhysicalDeviceCapabilities {
pub fn physical_device_capabilities(&self) -> &PhysicalDeviceProperties {
&self.phd_capabilities
}
@ -1320,7 +1448,20 @@ impl super::Adapter {
supported_extensions
}
/// `features` must be the same features used to create `enabled_extensions`.
/// Create a `PhysicalDeviceFeatures` for opening a logical device with
/// `features` from this adapter.
///
/// The given `enabled_extensions` set must include all the extensions
/// selected by [`required_device_extensions`] when passed `features`.
/// Otherwise, the `PhysicalDeviceFeatures` value may not be able to select
/// all the Vulkan features needed to represent `features` and this
/// adapter's characteristics.
///
/// Typically, you'd simply call `required_device_extensions`, and then pass
/// its return value and the feature set you gave it directly to this
/// function. But it's fine to add more extensions to the list.
///
/// [`required_device_extensions`]: Self::required_device_extensions
pub fn physical_device_features(
&self,
enabled_extensions: &[&'static CStr],
@ -1607,7 +1748,9 @@ impl super::Adapter {
}
}
impl crate::Adapter<super::Api> for super::Adapter {
impl crate::Adapter for super::Adapter {
type A = super::Api;
unsafe fn open(
&self,
features: wgt::Features,

View file

@ -60,7 +60,9 @@ impl super::CommandEncoder {
}
}
impl crate::CommandEncoder<super::Api> for super::CommandEncoder {
impl crate::CommandEncoder for super::CommandEncoder {
type A = super::Api;
unsafe fn begin_encoding(&mut self, label: crate::Label) -> Result<(), crate::DeviceError> {
if self.free.is_empty() {
let vk_info = vk::CommandBufferAllocateInfo::builder()

View file

@ -830,7 +830,9 @@ impl super::Device {
}
}
impl crate::Device<super::Api> for super::Device {
impl crate::Device for super::Device {
type A = super::Api;
unsafe fn exit(self, queue: super::Queue) {
unsafe { self.mem_allocator.into_inner().cleanup(&*self.shared) };
unsafe { self.desc_allocator.into_inner().cleanup(&*self.shared) };

View file

@ -579,7 +579,9 @@ impl Drop for super::InstanceShared {
}
}
impl crate::Instance<super::Api> for super::Instance {
impl crate::Instance for super::Instance {
type A = super::Api;
unsafe fn init(desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
profiling::scope!("Init Vulkan Backend");
use crate::auxil::cstr_from_bytes_until_nul;
@ -956,7 +958,9 @@ impl crate::Instance<super::Api> for super::Instance {
}
}
impl crate::Surface<super::Api> for super::Surface {
impl crate::Surface for super::Surface {
type A = super::Api;
unsafe fn configure(
&self,
device: &super::Device,

View file

@ -189,7 +189,7 @@ pub struct Adapter {
instance: Arc<InstanceShared>,
//queue_families: Vec<vk::QueueFamilyProperties>,
known_memory_flags: vk::MemoryPropertyFlags,
phd_capabilities: adapter::PhysicalDeviceCapabilities,
phd_capabilities: adapter::PhysicalDeviceProperties,
//phd_features: adapter::PhysicalDeviceFeatures,
downlevel_flags: wgt::DownlevelFlags,
private_caps: PrivateCapabilities,
@ -594,7 +594,9 @@ impl Fence {
}
}
impl crate::Queue<Api> for Queue {
impl crate::Queue for Queue {
type A = Api;
unsafe fn submit(
&self,
command_buffers: &[&CommandBuffer],

View file

@ -1 +1 @@
{"files":{"Cargo.toml":"0bcb9c2d557d01677740fea4690c79544898fe749880a72512dca33db171e590","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","src/assertions.rs":"3fe98027aa73970c8ab7874a3e13dbfd6faa87df2081beb5c83aeec4c60f372f","src/lib.rs":"13255166ac006b93ec6c89a984e9e2368afd39a6750b4852016c6ac0e200c51a","src/math.rs":"4d03039736dd6926feb139bc68734cb59df34ede310427bbf059e5c925e0af3b"},"package":null}
{"files":{"Cargo.toml":"0bcb9c2d557d01677740fea4690c79544898fe749880a72512dca33db171e590","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"c7fea58d1cfe49634cd92e54fc10a9d871f4b275321a4cd8c09e449122caaeb4","src/assertions.rs":"3fe98027aa73970c8ab7874a3e13dbfd6faa87df2081beb5c83aeec4c60f372f","src/lib.rs":"b9fda00d1b61364cdd7e544aee731ce075ea8403349ed286711d39aa8d414c28","src/math.rs":"4d03039736dd6926feb139bc68734cb59df34ede310427bbf059e5c925e0af3b"},"package":null}

View file

@ -337,7 +337,7 @@ bitflags::bitflags! {
/// For arbitrary timestamp write commands on encoders refer to [`Features::TIMESTAMP_QUERY_INSIDE_ENCODERS`].
/// For arbitrary timestamp write commands on passes refer to [`Features::TIMESTAMP_QUERY_INSIDE_PASSES`].
///
/// They must be resolved using [`CommandEncoder::resolve_query_sets`] into a buffer,
/// They must be resolved using [`CommandEncoder::resolve_query_set`] into a buffer,
/// then the result must be multiplied by the timestamp period [`Queue::get_timestamp_period`]
/// to get the timestamp in nanoseconds. Multiple timestamps can then be diffed to get the
/// time for operations between them to finish.
@ -480,10 +480,10 @@ bitflags::bitflags! {
// API:
/// Enables use of Pipeline Statistics Queries. These queries tell the count of various operations
/// performed between the start and stop call. Call [`RenderPassEncoder::begin_pipeline_statistics_query`] to start
/// a query, then call [`RenderPassEncoder::end_pipeline_statistics_query`] to stop one.
/// performed between the start and stop call. Call [`RenderPass::begin_pipeline_statistics_query`] to start
/// a query, then call [`RenderPass::end_pipeline_statistics_query`] to stop one.
///
/// They must be resolved using [`CommandEncoder::resolve_query_sets`] into a buffer.
/// They must be resolved using [`CommandEncoder::resolve_query_set`] into a buffer.
/// The rules on how these resolve into buffers are detailed in the documentation for [`PipelineStatisticsTypes`].
///
/// Supported Platforms:
@ -511,8 +511,8 @@ bitflags::bitflags! {
/// Implies [`Features::TIMESTAMP_QUERY`] & [`Features::TIMESTAMP_QUERY_INSIDE_ENCODERS`] is supported.
///
/// Additionally allows for timestamp queries to be used inside render & compute passes using:
/// - [`RenderPassEncoder::write_timestamp`]
/// - [`ComputePassEncoder::write_timestamp`]
/// - [`RenderPass::write_timestamp`]
/// - [`ComputePass::write_timestamp`]
///
/// Supported platforms:
/// - Vulkan
@ -7190,7 +7190,7 @@ mod send_sync {
///
/// Corresponds to [WebGPU `GPUDeviceLostReason`](https://gpuweb.github.io/gpuweb/#enumdef-gpudevicelostreason).
#[repr(u8)]
#[derive(Debug, Copy, Clone)]
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum DeviceLostReason {
/// Triggered by driver
Unknown = 0,
@ -7210,4 +7210,10 @@ pub enum DeviceLostReason {
/// exactly once before it is dropped, which helps with managing the
/// memory owned by the callback.
ReplacedCallback = 3,
/// When setting the callback, but the device is already invalid
///
/// As above, when the callback is provided, wgpu guarantees that it
/// will eventually be called. If the device is already invalid, wgpu
/// will call the callback immediately, with this reason.
DeviceInvalid = 4,
}