tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 5fda67dc70d3e2315c0fcd466e1b64834b5c0a38
parent a723a587f01de205f977444433ac8bd0b51817f6
Author: Teodor Tanasoaia <ttanasoaia@mozilla.com>
Date:   Tue, 28 Oct 2025 11:49:16 +0000

Bug 1996195 - Update `wgpu` to revision 18f4ed66c004d68003528510a0726d86a56acb9c. r=webgpu-reviewers,supply-chain-reviewers,ErichDonGubler

Differential Revision: https://phabricator.services.mozilla.com/D269941

Diffstat:
M.cargo/config.toml.in | 4++--
MCargo.lock | 13++++++-------
Mgfx/wgpu_bindings/Cargo.toml | 12++++++------
Mgfx/wgpu_bindings/moz.yaml | 4++--
Msupply-chain/audits.toml | 18++++++++++++------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pass/render_pass_descriptor/cts.https.html.ini | 4----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/buffer/in_pass_encoder/cts.https.html.ini | 2--
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_pass_encoder/cts.https.html.ini | 1-
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_render_common/cts.https.html.ini | 5-----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini | 29+++++++++++++----------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/dot/cts.https.html.ini | 23+++++------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/length/cts.https.html.ini | 18++++--------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/normalize/cts.https.html.ini | 12------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini | 2+-
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureGather/cts.https.html.ini | 20++++++++++----------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureGatherCompare/cts.https.html.ini | 86++++++++++++++++++++++++++++++-------------------------------------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureLoad/cts.https.html.ini | 14+++++++-------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini | 16++++++++--------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini | 10++++------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompare/cts.https.html.ini | 9++++++---
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini | 84+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini | 146+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini | 35++++++++++++++++++++++++-----------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini | 8--------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini | 12------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/length/cts.https.html.ini | 18++----------------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/normalize/cts.https.html.ini | 5-----
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupShuffle/cts.https.html.ini | 10++++++++++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/cts.https.html.ini | 12+++++-------
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/shared.https.html.ini | 2++
Mtesting/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/canvas/cts.https.html.ini | 16++++++++--------
Mthird_party/rust/naga/.cargo-checksum.json | 4++--
Mthird_party/rust/naga/src/arena/handlevec.rs | 2+-
Mthird_party/rust/naga/src/front/wgsl/index.rs | 2+-
Mthird_party/rust/naga/src/proc/constant_evaluator.rs | 522+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mthird_party/rust/wgpu-core/.cargo-checksum.json | 4++--
Mthird_party/rust/wgpu-core/src/as_hal.rs | 6++++++
Mthird_party/rust/wgpu-core/src/command/bind.rs | 54++++++++++++++++++++++++++++++++++++------------------
Mthird_party/rust/wgpu-core/src/command/compute.rs | 95++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Mthird_party/rust/wgpu-core/src/command/mod.rs | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Mthird_party/rust/wgpu-core/src/command/pass.rs | 130++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mthird_party/rust/wgpu-core/src/command/ray_tracing.rs | 1+
Mthird_party/rust/wgpu-core/src/command/render.rs | 39++++++++++++++++++++++++++++++---------
Mthird_party/rust/wgpu-core/src/device/queue.rs | 7+++++++
Mthird_party/rust/wgpu-core/src/device/resource.rs | 1-
Mthird_party/rust/wgpu-core/src/resource.rs | 4+---
Mthird_party/rust/wgpu-core/src/track/buffer.rs | 20++++++++++----------
Mthird_party/rust/wgpu-core/src/track/metadata.rs | 8--------
Mthird_party/rust/wgpu-core/src/track/mod.rs | 58++++++++++++++++++++++++++++++++--------------------------
Mthird_party/rust/wgpu-core/src/track/texture.rs | 18+++++++++---------
Mthird_party/rust/wgpu-hal/.cargo-checksum.json | 4++--
Mthird_party/rust/wgpu-hal/Cargo.toml | 2+-
Mthird_party/rust/wgpu-hal/src/vulkan/device.rs | 8++++++++
Mthird_party/rust/wgpu-hal/src/vulkan/instance.rs | 28+++++++++++++++++++++++++++-
Mthird_party/rust/wgpu-hal/src/vulkan/mod.rs | 2++
Mthird_party/rust/wgpu-types/.cargo-checksum.json | 4++--
Mthird_party/rust/wgpu-types/Cargo.toml | 6------
Mthird_party/rust/wgpu-types/src/lib.rs | 31+++++++++++++++++++++----------
58 files changed, 1223 insertions(+), 550 deletions(-)

diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in @@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust" rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" replace-with = "vendored-sources" -[source."git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad"] +[source."git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c"] git = "https://github.com/gfx-rs/wgpu" -rev = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" replace-with = "vendored-sources" [source."git+https://github.com/glandium/allocator-api2?rev=ad5f3d56a5a4519eff52af4ff85293431466ef5c"] diff --git a/Cargo.lock b/Cargo.lock @@ -4733,7 +4733,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664" [[package]] name = "naga" version = "27.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad#a70b8336c01b0869e0459baae5a30fdfe365e5ad" +source = "git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c#18f4ed66c004d68003528510a0726d86a56acb9c" dependencies = [ "arrayvec", "bit-set", @@ -7884,7 +7884,7 @@ dependencies = [ [[package]] name = "wgpu-core" version = "27.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad#a70b8336c01b0869e0459baae5a30fdfe365e5ad" +source = "git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c#18f4ed66c004d68003528510a0726d86a56acb9c" dependencies = [ "arrayvec", "bit-set", @@ -7914,7 +7914,7 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" version = "27.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad#a70b8336c01b0869e0459baae5a30fdfe365e5ad" +source = "git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c#18f4ed66c004d68003528510a0726d86a56acb9c" dependencies = [ "wgpu-hal", ] @@ -7922,7 +7922,7 @@ dependencies = [ [[package]] name = "wgpu-core-deps-windows-linux-android" version = "27.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad#a70b8336c01b0869e0459baae5a30fdfe365e5ad" +source = "git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c#18f4ed66c004d68003528510a0726d86a56acb9c" dependencies = [ "wgpu-hal", ] @@ -7930,7 +7930,7 @@ dependencies = [ [[package]] name = "wgpu-hal" version = "27.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad#a70b8336c01b0869e0459baae5a30fdfe365e5ad" +source = "git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c#18f4ed66c004d68003528510a0726d86a56acb9c" dependencies = [ "android_system_properties", "arrayvec", @@ -7968,14 +7968,13 @@ dependencies = [ [[package]] name = "wgpu-types" version = "27.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=a70b8336c01b0869e0459baae5a30fdfe365e5ad#a70b8336c01b0869e0459baae5a30fdfe365e5ad" +source = "git+https://github.com/gfx-rs/wgpu?rev=18f4ed66c004d68003528510a0726d86a56acb9c#18f4ed66c004d68003528510a0726d86a56acb9c" dependencies = [ "bitflags 2.9.0", "bytemuck", "js-sys", "log", "serde", - "thiserror 2.0.12", "web-sys", ] diff --git a/gfx/wgpu_bindings/Cargo.toml b/gfx/wgpu_bindings/Cargo.toml @@ -17,7 +17,7 @@ default = [] [dependencies.wgc] package = "wgpu-core" git = "https://github.com/gfx-rs/wgpu" -rev = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" features = ["serde", "trace", "strict_asserts", "wgsl", "api_log_info"] # We want the wgpu-core Metal backend on macOS and iOS. @@ -25,32 +25,32 @@ features = ["serde", "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 = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" 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 = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" 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 = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" features = ["vulkan"] [dependencies.wgt] package = "wgpu-types" git = "https://github.com/gfx-rs/wgpu" -rev = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" [dependencies.wgh] package = "wgpu-hal" git = "https://github.com/gfx-rs/wgpu" -rev = "a70b8336c01b0869e0459baae5a30fdfe365e5ad" +rev = "18f4ed66c004d68003528510a0726d86a56acb9c" features = ["device_lost_panic", "internal_error_panic"] [target.'cfg(windows)'.dependencies] diff --git a/gfx/wgpu_bindings/moz.yaml b/gfx/wgpu_bindings/moz.yaml @@ -8,8 +8,8 @@ origin: name: wgpu description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard url: https://github.com/gfx-rs/wgpu - release: a70b8336c01b0869e0459baae5a30fdfe365e5ad (Thu Oct 16 15:58:18 2025 -0400) - revision: a70b8336c01b0869e0459baae5a30fdfe365e5ad + release: commit 18f4ed66c004d68003528510a0726d86a56acb9c + revision: 18f4ed66c004d68003528510a0726d86a56acb9c license: ['MIT', 'Apache-2.0'] updatebot: diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml @@ -4325,9 +4325,10 @@ delta = "26.0.0 -> 27.0.0" who = [ "Andy Leiserson <aleiserson@mozilla.com>", "Jim Blandy <jimb@red-bean.com>", + "Teodor Tanasoaia <ttanasoaia@mozilla.com>", ] criteria = "safe-to-deploy" -delta = "27.0.0 -> 27.0.0@git:a70b8336c01b0869e0459baae5a30fdfe365e5ad" +delta = "27.0.0 -> 27.0.0@git:18f4ed66c004d68003528510a0726d86a56acb9c" importable = false [[audits.net2]] @@ -6854,9 +6855,10 @@ delta = "26.0.0 -> 27.0.0" who = [ "Andy Leiserson <aleiserson@mozilla.com>", "Jim Blandy <jimb@red-bean.com>", + "Teodor Tanasoaia <ttanasoaia@mozilla.com>", ] criteria = "safe-to-deploy" -delta = "27.0.0 -> 27.0.0@git:a70b8336c01b0869e0459baae5a30fdfe365e5ad" +delta = "27.0.0 -> 27.0.0@git:18f4ed66c004d68003528510a0726d86a56acb9c" importable = false [[audits.wgpu-core-deps-apple]] @@ -6883,9 +6885,10 @@ delta = "26.0.0 -> 27.0.0" who = [ "Andy Leiserson <aleiserson@mozilla.com>", "Jim Blandy <jimb@red-bean.com>", + "Teodor Tanasoaia <ttanasoaia@mozilla.com>", ] criteria = "safe-to-deploy" -delta = "27.0.0 -> 27.0.0@git:a70b8336c01b0869e0459baae5a30fdfe365e5ad" +delta = "27.0.0 -> 27.0.0@git:18f4ed66c004d68003528510a0726d86a56acb9c" importable = false [[audits.wgpu-core-deps-windows-linux-android]] @@ -6912,9 +6915,10 @@ delta = "26.0.0 -> 27.0.0" who = [ "Andy Leiserson <aleiserson@mozilla.com>", "Jim Blandy <jimb@red-bean.com>", + "Teodor Tanasoaia <ttanasoaia@mozilla.com>", ] criteria = "safe-to-deploy" -delta = "27.0.0 -> 27.0.0@git:a70b8336c01b0869e0459baae5a30fdfe365e5ad" +delta = "27.0.0 -> 27.0.0@git:18f4ed66c004d68003528510a0726d86a56acb9c" importable = false [[audits.wgpu-hal]] @@ -7019,9 +7023,10 @@ delta = "26.0.0 -> 27.0.0" who = [ "Andy Leiserson <aleiserson@mozilla.com>", "Jim Blandy <jimb@red-bean.com>", + "Teodor Tanasoaia <ttanasoaia@mozilla.com>", ] criteria = "safe-to-deploy" -delta = "27.0.0 -> 27.0.0@git:a70b8336c01b0869e0459baae5a30fdfe365e5ad" +delta = "27.0.0 -> 27.0.0@git:18f4ed66c004d68003528510a0726d86a56acb9c" importable = false [[audits.wgpu-types]] @@ -7121,9 +7126,10 @@ delta = "26.0.0 -> 27.0.0" who = [ "Andy Leiserson <aleiserson@mozilla.com>", "Jim Blandy <jimb@red-bean.com>", + "Teodor Tanasoaia <ttanasoaia@mozilla.com>", ] criteria = "safe-to-deploy" -delta = "27.0.0 -> 27.0.0@git:a70b8336c01b0869e0459baae5a30fdfe365e5ad" +delta = "27.0.0 -> 27.0.0@git:18f4ed66c004d68003528510a0726d86a56acb9c" importable = false [[audits.whatsys]] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pass/render_pass_descriptor/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/render_pass/render_pass_descriptor/cts.https.html.ini @@ -53,20 +53,16 @@ [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,depthSlice,overlaps,diff_miplevel:*] - implementation-status: backlog [:sameMipLevel=false] [:sameMipLevel=true] - expected: FAIL [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,depthSlice,overlaps,same_miplevel:*] tags: [webgpu, webgpu-long] - implementation-status: backlog [:sameDepthSlice=false] [:sameDepthSlice=true] - expected: FAIL [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,empty:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/buffer/in_pass_encoder/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/buffer/in_pass_encoder/cts.https.html.ini @@ -53,7 +53,6 @@ [cts.https.html?q=webgpu:api,validation,resource_usages,buffer,in_pass_encoder:subresources,buffer_usage_in_one_compute_pass_with_one_dispatch:*] - implementation-status: backlog [:usage0AccessibleInDispatch=false;usage1AccessibleInDispatch=false;dispatchBeforeUsage1=false] [:usage0AccessibleInDispatch=false;usage1AccessibleInDispatch=false;dispatchBeforeUsage1=true] @@ -65,7 +64,6 @@ [:usage0AccessibleInDispatch=true;usage1AccessibleInDispatch=false;dispatchBeforeUsage1=true] [:usage0AccessibleInDispatch=true;usage1AccessibleInDispatch=true;dispatchBeforeUsage1=false] - expected: FAIL [cts.https.html?q=webgpu:api,validation,resource_usages,buffer,in_pass_encoder:subresources,buffer_usage_in_one_render_pass_with_no_draw:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_pass_encoder/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_pass_encoder/cts.https.html.ini @@ -225,7 +225,6 @@ [:compute=false;type0="readwrite-storage-texture";type1="render-target"] [:compute=false;type0="render-target";type1="render-target"] - expected: FAIL [:compute=false;type0="sampled-texture";type1="readonly-storage-texture"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_render_common/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/api/validation/resource_usages/texture/in_render_common/cts.https.html.ini @@ -577,11 +577,9 @@ [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_common:subresources,color_attachments:*] - implementation-status: backlog [:layer0=0;level0=0;layer1=0;level1=0;inSamePass=false] [:layer0=0;level0=0;layer1=0;level1=0;inSamePass=true] - expected: FAIL [:layer0=0;level0=0;layer1=0;level1=1;inSamePass=false] @@ -596,7 +594,6 @@ [:layer0=0;level0=1;layer1=0;level1=1;inSamePass=false] [:layer0=0;level0=1;layer1=0;level1=1;inSamePass=true] - expected: FAIL [:layer0=0;level0=1;layer1=1;level1=0;inSamePass=false] @@ -613,7 +610,6 @@ [:layer0=1;level0=0;layer1=1;level1=0;inSamePass=false] [:layer0=1;level0=0;layer1=1;level1=0;inSamePass=true] - expected: FAIL [:layer0=1;level0=0;layer1=1;level1=1;inSamePass=false] @@ -628,7 +624,6 @@ [:layer0=1;level0=1;layer1=1;level1=1;inSamePass=false] [:layer0=1;level0=1;layer1=1;level1=1;inSamePass=true] - expected: FAIL [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_common:subresources,depth_stencil_attachment_and_bind_group:*] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/distance/cts.https.html.ini @@ -23,9 +23,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -35,9 +33,11 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16_vec2:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:inputSource="const"] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="storage_r"] @@ -47,9 +47,12 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16_vec3:*] - implementation-status: backlog + implementation-status: + if os == "win": backlog + if os == "mac": backlog [:inputSource="const"] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="storage_r"] @@ -61,9 +64,11 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16_vec4:*] - implementation-status: backlog + implementation-status: + if os == "mac": backlog [:inputSource="const"] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="storage_r"] @@ -73,9 +78,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f32:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -85,9 +88,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f32_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -97,9 +98,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f32_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -109,9 +108,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f32_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/dot/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/dot/cts.https.html.ini @@ -17,27 +17,19 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:abstract_int_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:abstract_int_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:abstract_int_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -47,9 +39,12 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16_vec3:*] - implementation-status: backlog + implementation-status: + if os == "win": backlog + if os == "mac": backlog [:inputSource="const"] - expected: FAIL + expected: + if os == "mac": FAIL [:inputSource="storage_r"] @@ -61,9 +56,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -73,9 +66,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f32_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -85,9 +76,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f32_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -97,9 +86,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f32_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/length/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/length/cts.https.html.ini @@ -23,9 +23,11 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16:*] - implementation-status: backlog + implementation-status: + if os == "win": backlog [:inputSource="const"] - expected: FAIL + expected: + if os == "win": FAIL [:inputSource="storage_r"] @@ -35,9 +37,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -47,9 +47,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -59,9 +57,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -83,9 +79,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f32_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -95,9 +89,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f32_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -107,9 +99,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f32_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/normalize/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/normalize/cts.https.html.ini @@ -17,9 +17,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -29,9 +27,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -41,9 +37,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -53,9 +47,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f32_vec2:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -65,9 +57,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f32_vec3:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] @@ -77,9 +67,7 @@ [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f32_vec4:*] - implementation-status: backlog [:inputSource="const"] - expected: FAIL [:inputSource="storage_r"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/subgroupMinMax/cts.https.html.ini @@ -9075,7 +9075,7 @@ [:case=367;type="f32";op="subgroupMax";wgSize=[64,2,1\]] expected: if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux": [PASS, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:case=367;type="f32";op="subgroupMin";wgSize=[128,1,1\]] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureGather/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureGather/cts.https.html.ini @@ -33692,22 +33692,19 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="nearest";mode="m"] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="nearest";mode="r"] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="nearest";mode="c"] expected: @@ -33720,7 +33717,8 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac": [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="nearest";mode="r"] expected: @@ -33752,21 +33750,21 @@ if os == "win": FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth32float-stencil8";filt="nearest";mode="m"] expected: if os == "win": FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="depth32float-stencil8";filt="nearest";mode="r"] expected: if os == "win": FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:stage="f";format="eac-r11snorm";filt="linear";mode="c"] expected: @@ -70202,12 +70200,14 @@ [:stage="f";format="bc5-rg-snorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="bc5-rg-snorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureGatherCompare/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureGatherCompare/cts.https.html.ini @@ -706,21 +706,24 @@ [:stage="f";format="depth16unorm";filt="linear";modeU="m";modeV="c";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth16unorm";filt="linear";modeU="m";modeV="c";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth16unorm";filt="linear";modeU="m";modeV="m";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -735,14 +738,16 @@ [:stage="f";format="depth16unorm";filt="linear";modeU="m";modeV="r";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth16unorm";filt="linear";modeU="m";modeV="r";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -1575,27 +1580,18 @@ [:stage="f";format="depth32float";filt="nearest";modeU="m";modeV="c";offset=false] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="m";modeV="c";offset=true] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="m";modeV="m";offset=false] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="m";modeV="m";offset=true] expected: @@ -1604,19 +1600,13 @@ [:stage="f";format="depth32float";filt="nearest";modeU="m";modeV="r";offset=false] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="m";modeV="r";offset=true] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="r";modeV="c";offset=false] expected: @@ -1636,35 +1626,23 @@ [:stage="f";format="depth32float";filt="nearest";modeU="r";modeV="m";offset=false] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="r";modeV="m";offset=true] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="r";modeV="r";offset=false] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float";filt="nearest";modeU="r";modeV="r";offset=true] expected: - if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "win" and not debug: FAIL - if os == "linux": FAIL - if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] - if os == "mac" and not debug: FAIL + if debug: [FAIL, TIMEOUT, NOTRUN] + if not debug: FAIL [:stage="f";format="depth32float-stencil8";filt="linear";modeU="c";modeV="c";offset=false] expected: @@ -3327,7 +3305,8 @@ [:stage="v";format="depth32float-stencil8";filt="linear";mode="c"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -3342,7 +3321,8 @@ [:stage="v";format="depth32float-stencil8";filt="linear";mode="r"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -3351,7 +3331,7 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="v";format="depth32float-stencil8";filt="nearest";mode="m"] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureLoad/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureLoad/cts.https.html.ini @@ -3883,7 +3883,7 @@ [:stage="v";format="r16snorm"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="r16uint"] expected: @@ -3891,7 +3891,7 @@ [:stage="v";format="r16unorm"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="r32float"] expected: @@ -3935,7 +3935,7 @@ [:stage="v";format="rg16snorm"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="rg16uint"] expected: @@ -3943,7 +3943,7 @@ [:stage="v";format="rg16unorm"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="rg32float"] expected: @@ -3991,7 +3991,7 @@ [:stage="v";format="rgba16snorm"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="rgba16uint"] expected: @@ -3999,7 +3999,7 @@ [:stage="v";format="rgba16unorm"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="rgba32float"] expected: @@ -4015,7 +4015,7 @@ [:stage="v";format="rgba8sint"] expected: - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:stage="v";format="rgba8snorm"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSample/cts.https.html.ini @@ -55215,7 +55215,7 @@ [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="m";offset=true] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="c";modeV="r";offset=false] expected: @@ -55227,7 +55227,7 @@ [:format="rg11b10ufloat";filt="linear";modeU="m";modeV="c";offset=false] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="m";modeV="c";offset=true] expected: @@ -55251,27 +55251,27 @@ [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="c";offset=false] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="c";offset=true] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="m";offset=false] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="m";offset=true] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="r";offset=false] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="linear";modeU="r";modeV="r";offset=true] expected: - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac": [PASS, TIMEOUT, NOTRUN] [:format="rg11b10ufloat";filt="nearest";modeU="c";modeV="c";offset=false] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleBias/cts.https.html.ini @@ -5588,7 +5588,7 @@ if os == "win": FAIL if os == "linux": FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] [:format="depth24plus";filt="nearest";modeU="m";modeV="r";offset=true] expected: @@ -11015,7 +11015,7 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:format="depth32float-stencil8";filt="nearest";mode="m"] @@ -58910,15 +58910,13 @@ 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";dim="3d";filt="linear";modeU="c";modeV="r";modeW="m";offset=true] 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";dim="3d";filt="linear";modeU="c";modeV="r";modeW="r";offset=false] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompare/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompare/cts.https.html.ini @@ -986,7 +986,8 @@ [:format="depth24plus";filt="nearest";modeU="m";modeV="c";offset=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 @@ -1009,7 +1010,8 @@ [:format="depth24plus";filt="nearest";modeU="m";modeV="r";offset=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 @@ -1319,7 +1321,8 @@ [:format="depth24plus-stencil8";filt="nearest";modeU="r";modeV="r";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel/cts.https.html.ini @@ -876,7 +876,7 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth24plus-stencil8";filt="linear";modeU="r";modeV="m";offset=false] @@ -1655,13 +1655,15 @@ [:stage="v";format="depth24plus";filt="linear";modeU="m";modeV="r";offset=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": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus";filt="linear";modeU="m";modeV="r";offset=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": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus";filt="linear";modeU="r";modeV="c";offset=false] @@ -1840,42 +1842,48 @@ [:stage="v";format="depth24plus-stencil8";filt="linear";modeU="c";modeV="c";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="linear";modeU="c";modeV="c";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="linear";modeU="c";modeV="m";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="linear";modeU="c";modeV="m";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="linear";modeU="c";modeV="r";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="linear";modeU="c";modeV="r";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] @@ -2034,14 +2042,16 @@ [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="m";modeV="m";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="depth24plus-stencil8";filt="nearest";modeU="m";modeV="m";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac": [TIMEOUT, NOTRUN] @@ -3216,14 +3226,16 @@ [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="m";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="m";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] @@ -3231,14 +3243,16 @@ [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="r";offset=false] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="r";offset=true] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -4180,7 +4194,7 @@ if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="m";modeV="c";offset=true] @@ -4188,23 +4202,21 @@ if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="m";modeV="m";offset=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="m";modeV="m";offset=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="m";modeV="r";offset=false] @@ -4212,15 +4224,14 @@ if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="m";modeV="r";offset=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="r";modeV="c";offset=false] @@ -4244,7 +4255,7 @@ if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="r";modeV="m";offset=true] @@ -4252,7 +4263,7 @@ if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus";filt="linear";modeU="r";modeV="r";offset=false] @@ -4552,16 +4563,14 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="nearest";modeU="c";modeV="c";offset=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="nearest";modeU="c";modeV="m";offset=false] @@ -4584,8 +4593,7 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "win" and not debug: FAIL - if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: FAIL + if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="f";format="depth24plus-stencil8";filt="nearest";modeU="c";modeV="r";offset=true] @@ -6369,21 +6377,24 @@ [:stage="v";format="depth32float-stencil8";filt="linear";mode="c"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="v";format="depth32float-stencil8";filt="linear";mode="m"] expected: - if os == "win": FAIL + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="v";format="depth32float-stencil8";filt="linear";mode="r"] expected: - if os == "win": FAIL + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL @@ -6397,7 +6408,8 @@ [:stage="v";format="depth32float-stencil8";filt="nearest";mode="m"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleGrad/cts.https.html.ini @@ -4230,6 +4230,7 @@ [:stage="c";format="bc4-r-unorm";filt="nearest";modeU="r";modeV="c";offset=true] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -4250,6 +4251,7 @@ [:stage="c";format="bc4-r-unorm";filt="nearest";modeU="r";modeV="r";offset=false] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -168428,187 +168430,218 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm-srgb";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm-srgb";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm-srgb";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm-srgb";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm-srgb";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x5-unorm-srgb";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm-srgb";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm-srgb";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm-srgb";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm-srgb";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm-srgb";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x6-unorm-srgb";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm-srgb";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm-srgb";filt="linear";mode="m"] expected: @@ -168620,25 +168653,29 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm-srgb";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm-srgb";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-10x8-unorm-srgb";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-12x10-unorm";filt="linear";mode="c"] expected: @@ -169341,7 +169378,8 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x6-unorm-srgb";filt="linear";mode="r"] expected: @@ -169375,73 +169413,85 @@ expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm-srgb";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm-srgb";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm-srgb";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm-srgb";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm-srgb";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="astc-8x8-unorm-srgb";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "mac": [TIMEOUT, NOTRUN] + if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="f";format="bc1-rgba-unorm";filt="linear";mode="c"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/execution/expression/call/builtin/textureSampleLevel/cts.https.html.ini @@ -584,28 +584,32 @@ [:stage="f";format="depth24plus";viewDimension="cube";mode="c"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth24plus";viewDimension="cube";mode="m"] expected: - if os == "win": FAIL + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth24plus";viewDimension="cube";mode="r"] expected: - if os == "win": FAIL + if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:stage="f";format="depth24plus";viewDimension="cube-array";A="i32";mode="c"] expected: - if os == "win": FAIL + if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: FAIL if os == "linux": FAIL if os == "mac" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: [PASS, FAIL] @@ -630,7 +634,8 @@ 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" and debug: [TIMEOUT, NOTRUN] if os == "mac" and not debug: [PASS, FAIL] @@ -21064,8 +21069,7 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="depth24plus";filt="nearest";modeU="c";modeV="r";offset=false] expected: @@ -21124,15 +21128,13 @@ expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="c";offset=true] expected: if os == "win": FAIL if os == "linux": FAIL - if os == "mac" and debug: [TIMEOUT, NOTRUN] - if os == "mac" and not debug: [FAIL, TIMEOUT, NOTRUN] + if os == "mac": [FAIL, TIMEOUT, NOTRUN] [:stage="c";format="depth24plus";filt="nearest";modeU="r";modeV="m";offset=false] expected: @@ -49895,6 +49897,7 @@ [:stage="c";format="bc4-r-unorm";dim="3d";filt="linear";mode="r";offset=false] expected: if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and not debug: [PASS, TIMEOUT, NOTRUN] [:stage="c";format="bc4-r-unorm";dim="3d";filt="linear";mode="r";offset=true] expected: @@ -92700,36 +92703,42 @@ [:stage="v";format="r32float";filt="linear";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="r32float";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="r32float";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="r32float";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="r32float";filt="nearest";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="r32float";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -92991,6 +93000,7 @@ [:stage="v";format="rg32float";filt="nearest";mode="c"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -93004,6 +93014,7 @@ [:stage="v";format="rg32float";filt="nearest";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] @@ -93184,12 +93195,14 @@ [:stage="v";format="rgba16float";filt="linear";mode="m"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] [:stage="v";format="rgba16float";filt="linear";mode="r"] expected: if os == "win" and debug: [TIMEOUT, NOTRUN] + if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "linux": [TIMEOUT, NOTRUN] if os == "mac": [TIMEOUT, NOTRUN] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/distance/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,distance:args:*] - implementation-status: backlog [:arg="bad_0args"] [:arg="bad_0array"] @@ -53,7 +52,6 @@ [:arg="bad_no_parens"] [:arg="good"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,distance:must_use:*] @@ -88,7 +86,6 @@ expected: FAIL [:stage="constant";type="vec2%3Cf32%3E"] - expected: FAIL [:stage="constant";type="vec3%3Cabstract-float%3E"] expected: FAIL @@ -100,7 +97,6 @@ expected: FAIL [:stage="constant";type="vec3%3Cf32%3E"] - expected: FAIL [:stage="constant";type="vec4%3Cabstract-float%3E"] expected: FAIL @@ -112,7 +108,6 @@ expected: FAIL [:stage="constant";type="vec4%3Cf32%3E"] - expected: FAIL [:stage="override";type="f16"] expected: FAIL @@ -124,16 +119,13 @@ expected: FAIL [:stage="override";type="vec2%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec3%3Cf16%3E"] expected: FAIL [:stage="override";type="vec3%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec4%3Cf16%3E"] expected: FAIL [:stage="override";type="vec4%3Cf32%3E"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/dot/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,dot:args:*] - implementation-status: backlog [:arg="bad_0abstract"] [:arg="bad_0args"] @@ -43,7 +42,6 @@ [:arg="bad_vec_size"] [:arg="good"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,dot:must_use:*] @@ -52,7 +50,6 @@ expected: FAIL [:use=true] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,dot:values:*] @@ -61,52 +58,43 @@ expected: FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: FAIL [:stage="constant";type="vec2%3Cf32%3E"] - expected: FAIL [:stage="constant";type="vec3%3Cabstract-float%3E"] expected: FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: FAIL [:stage="constant";type="vec3%3Cf32%3E"] - expected: FAIL [:stage="constant";type="vec4%3Cabstract-float%3E"] expected: FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: FAIL [:stage="constant";type="vec4%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec2%3Cf16%3E"] expected: FAIL [:stage="override";type="vec2%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec3%3Cf16%3E"] expected: FAIL [:stage="override";type="vec3%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec4%3Cf16%3E"] expected: FAIL [:stage="override";type="vec4%3Cf32%3E"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/length/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/length/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:args:*] - implementation-status: backlog [:arg="bad_0args"] [:arg="bad_0array"] @@ -21,13 +20,10 @@ [:arg="bad_no_parens"] [:arg="good"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:integer_argument:*] - implementation-status: backlog [:type="f32"] - expected: FAIL [:type="i32"] @@ -60,16 +56,15 @@ expected: FAIL [:stage="constant";type="abstract-int"] - expected: FAIL [:stage="constant";type="f16"] - expected: FAIL [:stage="constant";type="f32"] expected: FAIL [:stage="override";type="f16"] - expected: FAIL + expected: + if os == "win": FAIL [:stage="override";type="f32"] expected: FAIL @@ -81,19 +76,16 @@ expected: FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: FAIL [:stage="constant";type="vec2%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec2%3Cf16%3E"] expected: FAIL [:stage="override";type="vec2%3Cf32%3E"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec3:*] @@ -102,26 +94,22 @@ expected: FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: FAIL [:stage="constant";type="vec3%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec3%3Cf16%3E"] expected: FAIL [:stage="override";type="vec3%3Cf32%3E"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec4:*] tags: [webgpu, webgpu-long] implementation-status: backlog [:stage="constant";type="vec4%3Cabstract-float%3E"] - expected: FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] expected: FAIL @@ -132,7 +120,6 @@ if os == "mac": FAIL [:stage="constant";type="vec4%3Cf32%3E"] - expected: FAIL [:stage="override";type="vec4%3Cf16%3E"] expected: @@ -140,4 +127,3 @@ if os == "mac": FAIL [:stage="override";type="vec4%3Cf32%3E"] - expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/normalize/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/normalize/cts.https.html.ini @@ -1,5 +1,4 @@ [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,normalize:args:*] - implementation-status: backlog [:arg="bad_0args"] [:arg="bad_0array"] @@ -11,7 +10,6 @@ [:arg="bad_no_parens"] [:arg="good"] - expected: FAIL [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,normalize:invalid_argument:*] @@ -60,7 +58,6 @@ expected: FAIL [:stage="constant";type="vec2%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec2%3Cf16%3E"] expected: FAIL @@ -72,7 +69,6 @@ expected: FAIL [:stage="constant";type="vec3%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec3%3Cf16%3E"] expected: FAIL @@ -84,7 +80,6 @@ expected: FAIL [:stage="constant";type="vec4%3Cabstract-int%3E"] - expected: FAIL [:stage="constant";type="vec4%3Cf16%3E"] expected: FAIL diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupShuffle/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/shader/validation/expression/call/builtin/subgroupShuffle/cts.https.html.ini @@ -1274,14 +1274,22 @@ [:retType="i32";op="subgroupShuffle";paramType="vec4%3Cu32%3E"] [:retType="i32";op="subgroupShuffleDown";paramType="abstract-float"] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:retType="i32";op="subgroupShuffleDown";paramType="abstract-int"] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:retType="i32";op="subgroupShuffleDown";paramType="bool"] [:retType="i32";op="subgroupShuffleDown";paramType="f16"] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:retType="i32";op="subgroupShuffleDown";paramType="f32"] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:retType="i32";op="subgroupShuffleDown";paramType="i32"] expected: @@ -1352,6 +1360,8 @@ if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:retType="i32";op="subgroupShuffleDown";paramType="vec4%3Cbool%3E"] + expected: + if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] [:retType="i32";op="subgroupShuffleDown";paramType="vec4%3Cf16%3E"] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/cts.https.html.ini @@ -4033,9 +4033,7 @@ [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] expected: - if os == "win" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "linux" and debug: [PASS, TIMEOUT, NOTRUN] - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if debug: [PASS, TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg11b10ufloat";dstPremultiplied=false] expected: @@ -4198,7 +4196,7 @@ if os == "win": FAIL if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg11b10ufloat";dstPremultiplied=true] @@ -4206,7 +4204,7 @@ if os == "win": FAIL if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL - if os == "mac" and debug: [PASS, TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] @@ -4240,7 +4238,7 @@ if os == "win": FAIL if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] @@ -4248,7 +4246,7 @@ if os == "win": FAIL if os == "linux" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "linux" and not debug: FAIL - if os == "mac" and debug: [TIMEOUT, NOTRUN] + if os == "mac" and debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac" and not debug: FAIL [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/shared.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/ImageBitmap/shared.https.html.ini @@ -4210,6 +4210,8 @@ [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16unorm";dstPremultiplied=true] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: + if os == "mac" and debug: [TIMEOUT, NOTRUN] [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] expected: diff --git a/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/canvas/cts.https.html.ini b/testing/web-platform/mozilla/meta/webgpu/cts/webgpu/web_platform/copyToTexture/canvas/cts.https.html.ini @@ -1469,56 +1469,56 @@ expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=false;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=true;dstAlphaMode="opaque";srcDoFlipYDuringCopy=true] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=false] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg11b10ufloat";srcPremultiplied=true;dstAlphaMode="premultiplied";srcDoFlipYDuringCopy=true] expected: if os == "win": FAIL if os == "linux" and debug: [TIMEOUT, NOTRUN] - if os == "linux" and not debug: [PASS, TIMEOUT, NOTRUN] + if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN] if os == "mac": FAIL [:canvasType="offscreen";contextName="webgl";dstColorFormat="rg16float";srcPremultiplied=false;dstAlphaMode="opaque";srcDoFlipYDuringCopy=false] diff --git a/third_party/rust/naga/.cargo-checksum.json b/third_party/rust/naga/.cargo-checksum.json @@ -1 +1 @@ -{"files":{".cargo/config.toml":"7248ed3bed246d755d7bf9e5d7842d74b5c270ba6c29ad907872b55a67707ee0","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"16c70c2205a241af1934fa82693b68dd82b53777e349465be5b79991b8374848","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"9550cbc1a518ad0f624aabe12c342c72f670705cb4a6878c0c87d172f1dacea0","build.rs":"e9098f486e87d91710c07d40f1b32716e5debfe94a0b5e53e37075b0ee997eec","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"5c2a0bcf41d85c8173ac68b2d439552e79d0c3c0fe1ff3b1e1a48f0c83a4d48f","src/arena/handlevec.rs":"999de9d55d01213789072a63ad4ae9b4635e6653984d38db8b308d42bb1e7be3","src/arena/mod.rs":"e305d0521233791e181b4b6e7de70175a6bc730811063ea066c3bd3b73d12979","src/arena/range.rs":"b783969dfe32b4937593d871aa5190d561bdd79b6f615da53cb54346e300b9e2","src/arena/unique_arena.rs":"0e2d1c372a7c40b77793dc413b8920e86459e4656775a010f32974b4ad67a7fd","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"3f63a91f4afde7bedb3163489a347ccfa4b833e1fc7a0f33ccd8817efc7d303a","src/back/glsl/features.rs":"da2c8fd44b25a03ded4a0ff2e16c5039ca77398efa7918b0af5cf055b87365e3","src/back/glsl/keywords.rs":"fee8ed132e44bace54869a7c169a1ab7ed55db1bf590b4b1bce9efa4552e1dd7","src/back/glsl/mod.rs":"86337bb3041b34d4051862665b6858afaf9c1d5bac69ce8e24b81a47e878f0d0","src/back/hlsl/conv.rs":"3e1a78203e8c4efb75986db962cec150c7b2d99f7e48b400e702233de70e8aab","src/back/hlsl/help.rs":"12ddb9d08fe64eb34b66ae2166edffce5106a04ccef0b8cc0391a6fafd676270","src/back/hlsl/keywords.rs":"f7fc06c44d2f0d620bcf1a02b699c98c32059741b771a0d1ba5645d71b2f433f","src/back/hlsl/mod.rs":"e83d54a5741f6f5c89d5e8ac56015021ceb9077262c3b9c47f0bf1a7e35dbab5","src/back/hlsl/ray.rs":"259db3bc8fd5b8ec343fb8620c7cef50048cbea2b9db1f17dc8813ff848269df","src/back/hlsl/storage.rs":"5083d03b1f25fe767e45e0c507bd30424352fccd48484c081620712d3682aae8","src/back/hlsl/writer.rs":"4415d3ce654bae43ffa85d587cbb2b628cbcda387a8bf3237f1450248d423414","src/back/mod.rs":"c9a21fefbf383dca12a44cdf5201beba35384ab175eaa61da05f3a2af5310484","src/back/msl/keywords.rs":"b3e5d86d2586d553ff0fc6d91a25f0f4726c829d280a65dd2deeeb146cbbaf6d","src/back/msl/mod.rs":"f9d05aadd4d6cb6fea165c7e0b31c910b63d8102de60edfe283f8f56b8d4197f","src/back/msl/sampler.rs":"9be8805063258b0ff6b6db2e6856d59326caa18f6f64eaf413c5abfcbd1ad341","src/back/msl/writer.rs":"0d9bacb72fdee1768ff9a6b02e799607331788b557d44ad8d4c4f00e67c822a2","src/back/pipeline_constants.rs":"c2244d7e47a52c01ead61b4b6c7b3d0f29263ca308aca70f213137a0938c9aa4","src/back/spv/block.rs":"7fbe28ab6679070d8960201c97890f2f69d80dc1105eae1a992a5b82f4490d35","src/back/spv/f16_polyfill.rs":"44ce07ef497dff13a9152eb9bc5936c486ef53de6d476da6b0a39396b0e6abdb","src/back/spv/helpers.rs":"6ec40b59d9f0a77e1569a2610cad1f1ca1e02bc78871ce9322e70ecdda0b3eb9","src/back/spv/image.rs":"5fb7e36ffb4236168809978ed8634a4024a910ca5a233833d89e39f9768880d3","src/back/spv/index.rs":"f4cc05768672658780f159ff8280bcf30af081af7a735338789b31f662ad1889","src/back/spv/instructions.rs":"556f1f30ae11c3e01910c354a36ba314280932e3a2928584b06eb0812a2cb81a","src/back/spv/layout.rs":"28ba27739d7c9fa4b9e363ffc112cdc39c5e8ec4236d71a7260039d1bd8321d7","src/back/spv/mod.rs":"20ab263c44ce41ebc39b5fe120116cd42b8543fa0471e60b8344e39c15834fe1","src/back/spv/ray.rs":"a31fd66e9497ffd19437bdab53427705b7f28f555ab215c8f0a4c2156283413e","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"aea4bb4da7c0fa4e907b8f1e185433a48f2f0eb7ded97fdd3225beb3f6c1f249","src/back/spv/subgroup.rs":"68fc3e3153022a0a8bddec20ad9221820678f02921878318e571d5aa2ca13cee","src/back/spv/writer.rs":"18f103c0d5c728036b5cb133677a301f51fe9702abb0b975ae618365b304158f","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"d6ed811147b79ed74c2600bfc5485c2821dabb08b70982a4191a6a6c3d2c1a38","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"289231637b08407fbe2cc976a1bab4eac4c9e66042c6618aff3af44baaff3e26","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"215212963faf83c5c931c760b858c6c8b11cc582dda08f8627aefa83b6425135","src/common/wgsl/types.rs":"390323fecff390100fafcc2cb1e5cf349c7aac9da8065e9aec52a56718ab5534","src/compact/expressions.rs":"12653b34c7c7d68ce7d14a9c15e59c469fda4931425d14600fbaa99226af735f","src/compact/functions.rs":"27a0d33e5a8f02778b518c6e0db5a5d41f77a93b64eadef54b6cf0914067d7ad","src/compact/handle_set_map.rs":"b4688bff174487f2da4a1a946af07c80b6ba59f60dc84184c6a30039354209e8","src/compact/mod.rs":"7627b587f9ada7771728d0248113213ef0750e1ab9290e2a1a312a693c574568","src/compact/statements.rs":"85b2faf6a4caaebc0372e773ca3be2904db5bb0e691ac7ea845720ef0864a22b","src/compact/types.rs":"a955ce5e336afa8d26f750c14d4a6638dcee6b0b5e0fcd7c446d8f88a35d8277","src/diagnostic_filter.rs":"5e3d14a774974148b7d2918617ba3e2c3a07493e0f90485a7de9db86e05a7cd0","src/error.rs":"46180b139b60cca1e46a8848f9eecc5cab8220a022e4c6f8ce297d1d968e87e7","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"15a4f7c56aa44529373c7aa2a266d1582b7775833de6adc6b8f5bfd54d85a669","src/front/glsl/builtins.rs":"76821d82b315ab6812e8411908885f0687ad98abfe0ea9f007e2deefed10cc0a","src/front/glsl/context.rs":"8314e1ed58b509788adbda82a8f4c7fbd2767522d0352ca1ebd11d86b4bfd10d","src/front/glsl/error.rs":"f445297e0357919e2345ae15f2d23c58d36a64c9a666f1cf1b09cbcfd6e4627a","src/front/glsl/functions.rs":"fb76ba4922898700d6b156d4f214566e60931954219d22ff2ff47689b3666613","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"f4f1cce6911935b305c415afe3c15f84c7824a3bb828a5d15e6f9ae4b0316df0","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"6a13b4737f53b09d5bbc0add01f8fc1b2633b7957f0318374edfe0b903939912","src/front/glsl/parser/declarations.rs":"9949649fba43636d03eaf7f7560d3bb3743b19c7204fb95859283ee84b5dd239","src/front/glsl/parser/expressions.rs":"e056fbdde3bc7c8473acbd485aecd14120d3dbefbabd813ddbc5cfedaf605889","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"75d3e203a07befd011f5693ab8f2789e4f06821badb4974043cc4ee10bd5c6c9","src/front/interpolator.rs":"4d6c6639c01fba78ffb8d0af298094cc2d6bb33f8054dad4379fd9fe3af5a4c8","src/front/mod.rs":"fddd2be54ff44b52743ac8eb4a19e153a8a169af8e65d9061a9b9fc9857f64db","src/front/spv/convert.rs":"16b8281fc1ae75dc62a02893db2c5b6d8994166e78b3b6b8cac7a01e0da4eae2","src/front/spv/error.rs":"d08e1d65716ccc0f2a94a1285a1d034fa4840dc79ca60a5ec7481697bdec74d1","src/front/spv/function.rs":"26323687512d18c74c16e82b3aca3f5a65f1eae8a0e7e218b195f0051fe3012e","src/front/spv/image.rs":"c39ffdb19a19861cec009de39431a879be99bdd4d9d08c0ecdef397c2f3f6fa5","src/front/spv/mod.rs":"ed64895ebb2050f9b401f9f98a69f1ddf80a361d8ac98e1bda780b6e1c02086b","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"111832af89a268ae3206d2ba2159b9b9d64224ed09375a29eec142725ea7fb34","src/front/wgsl/error.rs":"60c7113a98f5642dc31ff23d20d8f533ee3fa80e88246a6e277615e7b9efa0f1","src/front/wgsl/index.rs":"1db1bee7074a3fe9668d2c2ba0bd5053d6443f4ea19a56e4cccf2aa2bc8a33c9","src/front/wgsl/lower/construction.rs":"24e0eb2181974651ab9d13497cceaa126ee816c38848e9dbbd88f1e7b5f5c53c","src/front/wgsl/lower/conversion.rs":"d4a66519b38caa208b011846cdc3459e8a0b6bae8027235692b30188ae88e110","src/front/wgsl/lower/mod.rs":"5473b4607ac7f89ab10cdd2bfeb59a47b52dd591ba19d85c8795d45ab4ca72de","src/front/wgsl/mod.rs":"95d38b0a49833638a06ac35c6df30c8fd3dcfa5494871e6d166f7e70f54b8fa3","src/front/wgsl/parse/ast.rs":"ca893c1cfbd76df5d4faaa43baad988c59129dd1f756b1637e7e329600c42ac5","src/front/wgsl/parse/conv.rs":"d76de215e3fea00776b5a0e8f979c074ac35a2f16892522c1a6bfe5a051c438a","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"99aaeb71f33363a6a57acdbb94ffedcace3ab2ebba2d7841e9444f8ce0fca749","src/front/wgsl/parse/directive/language_extension.rs":"f82ae1c1f1d82e9e27e336b6a6975e21c7c08e5f1700f28f8d351b7f03a1621c","src/front/wgsl/parse/lexer.rs":"2194d38da1dc803ffb850202023350a07b6a3b80af68857d772c76ea49bc6344","src/front/wgsl/parse/mod.rs":"560870a843951191dcb422be6e083f16c6e0109b97fa77d225bf588124822f57","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"05bf78f672e54ca335ed8be59ddfb1504289ee7444258cf2d30823687a418864","src/ir/block.rs":"b562a83a4fa53002d2ca21b4553ed8e2fa77f61e687f24fd4bbd90f1597b2a9d","src/ir/mod.rs":"2933daabb5e22d023682ad5368d9c65a136000ad85f48a29104a562326a91a40","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"7236f0e751066712970b4f3dc9942b41d678c6a6e202c7da834f4f398e7cc657","src/lib.rs":"1e40237435eebd4a91fd5c9b2e8a58664ebd1c40a0d27c0c5220047f0221704a","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"7a39635e81f2fd2e56acd8b845d50667dbfc3b107c4529b3feed283001b1d1fd","src/proc/emitter.rs":"39ac886c651e2ad33c06a676a7e4826a0e93de0af660c01e8e4b1f7406742f88","src/proc/index.rs":"17c22571251996583b724af87c7d238f584cd39104256c8e90de7b18e737bb09","src/proc/keyword_set.rs":"928414d2b79ee48735d532e03d3f0a58427c3f27a2a0c6938425749b00943784","src/proc/layouter.rs":"78a91c2c9406c0319a344cc8ec9eda33ed7812ef4a4e73e25f7709afde580381","src/proc/mod.rs":"3674ef30174a6110bad461a4208f16ed208b7347f1a8c58654b87e14558cf99c","src/proc/namer.rs":"f2c11c6d29d4a991fc9a08cf4531acdd309b6a9fef1c06198cc08193dc03a01d","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"7cfbf66a3619fdd66f9acf652d56cd2a9451f7905c5d4637cdb9f77f4ef2af51","src/proc/overloads/mathfunction.rs":"d5801d64d1a6fd10e0da30a7c0ac7368954654e5f3d0b022fa806ff9a2ab61b8","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"73d64fab79019d589cb0595d0ef606fd6af732c42a418c60c81da4c96e113c89","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"4b5e02f20611bd24c6849e1f2c01aad4b271388407e8eb866d5a34983538ef8f","src/proc/terminator.rs":"61df2289408be24f69b6c23da469ca3f63f913568f8c314427c3571b826632dd","src/proc/type_methods.rs":"fef829acb2da08a22a2e30dc356e7a8b9149ef13582525bea0143c687a1c57dd","src/proc/typifier.rs":"a31a97013838e43d31cef69b032680187ac709e13db0bf8fc85f4e8e11f236cf","src/racy_lock.rs":"6c541795172660e02bac86c3808cf7346b4791910febc0d289bf93d36271d416","src/span.rs":"e91190a7cd116fb811a295dcf9cd796a25b886cc5d35c3756771e3bc61768455","src/valid/analyzer.rs":"9e0479bee5d2ac15704f69d8852400cd1bcd35bc01c056cb9a510db6dec63a39","src/valid/compose.rs":"46eeed8c4d5b66fc043ddb701074bd864a9fdd24e38b88e282046230acefb747","src/valid/expression.rs":"f8d9e3e20d21ddb9ade2e793d590631bcf4e7c135804a0130302d57212521f6f","src/valid/function.rs":"e97ddecd0369f192fd25c59aeeef3bdd04f86858f5ed625dc384c2d00030ebbc","src/valid/handles.rs":"59f96f672f57e253006f330a3b9a540564dfb462a543e5cad6d20231de29538f","src/valid/interface.rs":"d6bddc8c722ed6e36371bc7796922a524f443f870a06b8f874f2aa49bde682d3","src/valid/mod.rs":"83a51f1e5d30dc1b3118218e21d1ac87d4c16ebb962fd71d50534d258fef8d7d","src/valid/type.rs":"65d2c02000e8038d9adab6ea94741fea61844d0626d7fa4389c54dcaa594704b"},"package":null} -\ No newline at end of file +{"files":{".cargo/config.toml":"7248ed3bed246d755d7bf9e5d7842d74b5c270ba6c29ad907872b55a67707ee0","CHANGELOG.md":"e60105d413f857e37dae165f819c47491d0a595183d3c9146b259d811b98b14f","Cargo.toml":"16c70c2205a241af1934fa82693b68dd82b53777e349465be5b79991b8374848","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"9550cbc1a518ad0f624aabe12c342c72f670705cb4a6878c0c87d172f1dacea0","build.rs":"e9098f486e87d91710c07d40f1b32716e5debfe94a0b5e53e37075b0ee997eec","src/arena/handle.rs":"897b2b0eebe0d9ae6a65bf2e8c210c8391924da06ef4c9e2a1225ad622400b6c","src/arena/handle_set.rs":"5c2a0bcf41d85c8173ac68b2d439552e79d0c3c0fe1ff3b1e1a48f0c83a4d48f","src/arena/handlevec.rs":"baaed995bcbd2f7d15bd63cede28e579175d408e5a40289f74b32ab65c6850c3","src/arena/mod.rs":"e305d0521233791e181b4b6e7de70175a6bc730811063ea066c3bd3b73d12979","src/arena/range.rs":"b783969dfe32b4937593d871aa5190d561bdd79b6f615da53cb54346e300b9e2","src/arena/unique_arena.rs":"0e2d1c372a7c40b77793dc413b8920e86459e4656775a010f32974b4ad67a7fd","src/back/continue_forward.rs":"8194d238763caa6d5601ec3af56ba39a471c39945f43152b58d582092c99aefa","src/back/dot/mod.rs":"3f63a91f4afde7bedb3163489a347ccfa4b833e1fc7a0f33ccd8817efc7d303a","src/back/glsl/features.rs":"da2c8fd44b25a03ded4a0ff2e16c5039ca77398efa7918b0af5cf055b87365e3","src/back/glsl/keywords.rs":"fee8ed132e44bace54869a7c169a1ab7ed55db1bf590b4b1bce9efa4552e1dd7","src/back/glsl/mod.rs":"86337bb3041b34d4051862665b6858afaf9c1d5bac69ce8e24b81a47e878f0d0","src/back/hlsl/conv.rs":"3e1a78203e8c4efb75986db962cec150c7b2d99f7e48b400e702233de70e8aab","src/back/hlsl/help.rs":"12ddb9d08fe64eb34b66ae2166edffce5106a04ccef0b8cc0391a6fafd676270","src/back/hlsl/keywords.rs":"f7fc06c44d2f0d620bcf1a02b699c98c32059741b771a0d1ba5645d71b2f433f","src/back/hlsl/mod.rs":"e83d54a5741f6f5c89d5e8ac56015021ceb9077262c3b9c47f0bf1a7e35dbab5","src/back/hlsl/ray.rs":"259db3bc8fd5b8ec343fb8620c7cef50048cbea2b9db1f17dc8813ff848269df","src/back/hlsl/storage.rs":"5083d03b1f25fe767e45e0c507bd30424352fccd48484c081620712d3682aae8","src/back/hlsl/writer.rs":"4415d3ce654bae43ffa85d587cbb2b628cbcda387a8bf3237f1450248d423414","src/back/mod.rs":"c9a21fefbf383dca12a44cdf5201beba35384ab175eaa61da05f3a2af5310484","src/back/msl/keywords.rs":"b3e5d86d2586d553ff0fc6d91a25f0f4726c829d280a65dd2deeeb146cbbaf6d","src/back/msl/mod.rs":"f9d05aadd4d6cb6fea165c7e0b31c910b63d8102de60edfe283f8f56b8d4197f","src/back/msl/sampler.rs":"9be8805063258b0ff6b6db2e6856d59326caa18f6f64eaf413c5abfcbd1ad341","src/back/msl/writer.rs":"0d9bacb72fdee1768ff9a6b02e799607331788b557d44ad8d4c4f00e67c822a2","src/back/pipeline_constants.rs":"c2244d7e47a52c01ead61b4b6c7b3d0f29263ca308aca70f213137a0938c9aa4","src/back/spv/block.rs":"7fbe28ab6679070d8960201c97890f2f69d80dc1105eae1a992a5b82f4490d35","src/back/spv/f16_polyfill.rs":"44ce07ef497dff13a9152eb9bc5936c486ef53de6d476da6b0a39396b0e6abdb","src/back/spv/helpers.rs":"6ec40b59d9f0a77e1569a2610cad1f1ca1e02bc78871ce9322e70ecdda0b3eb9","src/back/spv/image.rs":"5fb7e36ffb4236168809978ed8634a4024a910ca5a233833d89e39f9768880d3","src/back/spv/index.rs":"f4cc05768672658780f159ff8280bcf30af081af7a735338789b31f662ad1889","src/back/spv/instructions.rs":"556f1f30ae11c3e01910c354a36ba314280932e3a2928584b06eb0812a2cb81a","src/back/spv/layout.rs":"28ba27739d7c9fa4b9e363ffc112cdc39c5e8ec4236d71a7260039d1bd8321d7","src/back/spv/mod.rs":"20ab263c44ce41ebc39b5fe120116cd42b8543fa0471e60b8344e39c15834fe1","src/back/spv/ray.rs":"a31fd66e9497ffd19437bdab53427705b7f28f555ab215c8f0a4c2156283413e","src/back/spv/recyclable.rs":"8ea397d4d8d3f2cd5fbc8e0be94d136c2d6e0f0e8a4b5eb567dcc1be104c9ae5","src/back/spv/selection.rs":"aea4bb4da7c0fa4e907b8f1e185433a48f2f0eb7ded97fdd3225beb3f6c1f249","src/back/spv/subgroup.rs":"68fc3e3153022a0a8bddec20ad9221820678f02921878318e571d5aa2ca13cee","src/back/spv/writer.rs":"18f103c0d5c728036b5cb133677a301f51fe9702abb0b975ae618365b304158f","src/back/wgsl/mod.rs":"1b04d66e8dba609513d43431d1f0ee9a209fbfd8453862d6e8a7aa41f8910997","src/back/wgsl/polyfill/inverse/inverse_2x2_f16.wgsl":"9e7635d04724822931c805a8b35e76d6d294d447e4ea8d57b308ce45609bf736","src/back/wgsl/polyfill/inverse/inverse_2x2_f32.wgsl":"340d491abde07f93996391796db65a5f88402663eaf6b9d2d894d11cb8cf8b6d","src/back/wgsl/polyfill/inverse/inverse_3x3_f16.wgsl":"4f13a1a4b3e1b51f0f992d13c55cf854a80917554a4d13c997819fa1fe776ba4","src/back/wgsl/polyfill/inverse/inverse_3x3_f32.wgsl":"9b16d2f4b9e433c8e03a0cb46ab48508f3bf7e185ce1b4e26106c47e81a677cb","src/back/wgsl/polyfill/inverse/inverse_4x4_f16.wgsl":"86d39d1db5d03995b404950279db7f1698ad9622982aa319fdedb7532673235b","src/back/wgsl/polyfill/inverse/inverse_4x4_f32.wgsl":"dc510525ac2dce66389a8c4bf8b2f31f0dedd9e6debdbe4ffd939a0a7fc533d3","src/back/wgsl/polyfill/mod.rs":"f4ab3c9b9cdc36d16dab00d0f7f07d6e6beda0e27a36053e9b5ffeeb7ca18edc","src/back/wgsl/writer.rs":"d6ed811147b79ed74c2600bfc5485c2821dabb08b70982a4191a6a6c3d2c1a38","src/common/diagnostic_debug.rs":"8c73fe605e5b6162d0485e264287ac50c061cf581743feebbffe1474d1d3516d","src/common/diagnostic_display.rs":"46f1ff8a32179703ef0bcdb704db9f6e6e8b4eaad6cadf94577eeab3d8a16cd1","src/common/mod.rs":"289231637b08407fbe2cc976a1bab4eac4c9e66042c6618aff3af44baaff3e26","src/common/predeclared.rs":"a5f42d55f2e13d8f5a8213d4a881e9155c3994c4054d43edcf7bd7bb7c868ccf","src/common/wgsl/diagnostics.rs":"4fec985b4c5cc6dfae4dd78bd7c850adc88a1761d7b6691de0355ea49300e532","src/common/wgsl/mod.rs":"d944915ff692c96aecca67737bccc2d5d9eb68f475166a2744f29a025f4a4c93","src/common/wgsl/to_wgsl.rs":"215212963faf83c5c931c760b858c6c8b11cc582dda08f8627aefa83b6425135","src/common/wgsl/types.rs":"390323fecff390100fafcc2cb1e5cf349c7aac9da8065e9aec52a56718ab5534","src/compact/expressions.rs":"12653b34c7c7d68ce7d14a9c15e59c469fda4931425d14600fbaa99226af735f","src/compact/functions.rs":"27a0d33e5a8f02778b518c6e0db5a5d41f77a93b64eadef54b6cf0914067d7ad","src/compact/handle_set_map.rs":"b4688bff174487f2da4a1a946af07c80b6ba59f60dc84184c6a30039354209e8","src/compact/mod.rs":"7627b587f9ada7771728d0248113213ef0750e1ab9290e2a1a312a693c574568","src/compact/statements.rs":"85b2faf6a4caaebc0372e773ca3be2904db5bb0e691ac7ea845720ef0864a22b","src/compact/types.rs":"a955ce5e336afa8d26f750c14d4a6638dcee6b0b5e0fcd7c446d8f88a35d8277","src/diagnostic_filter.rs":"5e3d14a774974148b7d2918617ba3e2c3a07493e0f90485a7de9db86e05a7cd0","src/error.rs":"46180b139b60cca1e46a8848f9eecc5cab8220a022e4c6f8ce297d1d968e87e7","src/front/atomic_upgrade.rs":"86ce9f9628d92a1a09802cb534bb4310236b83f2799c921b81c687f009c589be","src/front/glsl/ast.rs":"15a4f7c56aa44529373c7aa2a266d1582b7775833de6adc6b8f5bfd54d85a669","src/front/glsl/builtins.rs":"76821d82b315ab6812e8411908885f0687ad98abfe0ea9f007e2deefed10cc0a","src/front/glsl/context.rs":"8314e1ed58b509788adbda82a8f4c7fbd2767522d0352ca1ebd11d86b4bfd10d","src/front/glsl/error.rs":"f445297e0357919e2345ae15f2d23c58d36a64c9a666f1cf1b09cbcfd6e4627a","src/front/glsl/functions.rs":"fb76ba4922898700d6b156d4f214566e60931954219d22ff2ff47689b3666613","src/front/glsl/lex.rs":"24706628b600b5ce435cef464c84196ac5d58013122a97e7b59d509cc25f85a2","src/front/glsl/mod.rs":"f4f1cce6911935b305c415afe3c15f84c7824a3bb828a5d15e6f9ae4b0316df0","src/front/glsl/offset.rs":"66bd524a2d17dc44f431430dcbbb74a771fdab43c9581e88bb1123e6cfec516b","src/front/glsl/parser.rs":"6a13b4737f53b09d5bbc0add01f8fc1b2633b7957f0318374edfe0b903939912","src/front/glsl/parser/declarations.rs":"9949649fba43636d03eaf7f7560d3bb3743b19c7204fb95859283ee84b5dd239","src/front/glsl/parser/expressions.rs":"e056fbdde3bc7c8473acbd485aecd14120d3dbefbabd813ddbc5cfedaf605889","src/front/glsl/parser/functions.rs":"302e24e06190aff555131c33f9a80b15df6a0390d6c776f888a44d5ef7df697e","src/front/glsl/parser/types.rs":"ee242048a65cd3709e16b70a3882e9296e615327480f2ad779e3d2523778181f","src/front/glsl/parser_tests.rs":"6834f0d595f4077266054e5da43e4f1b60e5c6780611ab0f530d9964cc62fad3","src/front/glsl/token.rs":"83780c0c1954ef216896c9d8a48e412b357783e00ccd4909a7a249935c742629","src/front/glsl/types.rs":"286395d82707a09d28b4c1a8bade917822478e53d8eb277ceec5fa9e71649ba2","src/front/glsl/variables.rs":"75d3e203a07befd011f5693ab8f2789e4f06821badb4974043cc4ee10bd5c6c9","src/front/interpolator.rs":"4d6c6639c01fba78ffb8d0af298094cc2d6bb33f8054dad4379fd9fe3af5a4c8","src/front/mod.rs":"fddd2be54ff44b52743ac8eb4a19e153a8a169af8e65d9061a9b9fc9857f64db","src/front/spv/convert.rs":"16b8281fc1ae75dc62a02893db2c5b6d8994166e78b3b6b8cac7a01e0da4eae2","src/front/spv/error.rs":"d08e1d65716ccc0f2a94a1285a1d034fa4840dc79ca60a5ec7481697bdec74d1","src/front/spv/function.rs":"26323687512d18c74c16e82b3aca3f5a65f1eae8a0e7e218b195f0051fe3012e","src/front/spv/image.rs":"c39ffdb19a19861cec009de39431a879be99bdd4d9d08c0ecdef397c2f3f6fa5","src/front/spv/mod.rs":"ed64895ebb2050f9b401f9f98a69f1ddf80a361d8ac98e1bda780b6e1c02086b","src/front/spv/null.rs":"ee20287365e025e8bcc91f29df930ff8b63cb6d7f26db0b1789d54de614a7353","src/front/type_gen.rs":"111832af89a268ae3206d2ba2159b9b9d64224ed09375a29eec142725ea7fb34","src/front/wgsl/error.rs":"60c7113a98f5642dc31ff23d20d8f533ee3fa80e88246a6e277615e7b9efa0f1","src/front/wgsl/index.rs":"476e5c4eddb14dfb53eee7976bcf4276c8a3fad81fbed92dc7b5dd31a5ab1593","src/front/wgsl/lower/construction.rs":"24e0eb2181974651ab9d13497cceaa126ee816c38848e9dbbd88f1e7b5f5c53c","src/front/wgsl/lower/conversion.rs":"d4a66519b38caa208b011846cdc3459e8a0b6bae8027235692b30188ae88e110","src/front/wgsl/lower/mod.rs":"5473b4607ac7f89ab10cdd2bfeb59a47b52dd591ba19d85c8795d45ab4ca72de","src/front/wgsl/mod.rs":"95d38b0a49833638a06ac35c6df30c8fd3dcfa5494871e6d166f7e70f54b8fa3","src/front/wgsl/parse/ast.rs":"ca893c1cfbd76df5d4faaa43baad988c59129dd1f756b1637e7e329600c42ac5","src/front/wgsl/parse/conv.rs":"d76de215e3fea00776b5a0e8f979c074ac35a2f16892522c1a6bfe5a051c438a","src/front/wgsl/parse/directive.rs":"c96f33cef2c1d8a374fe1b3827538f7db33d6b7811a6e0914d29de80b8963257","src/front/wgsl/parse/directive/enable_extension.rs":"99aaeb71f33363a6a57acdbb94ffedcace3ab2ebba2d7841e9444f8ce0fca749","src/front/wgsl/parse/directive/language_extension.rs":"f82ae1c1f1d82e9e27e336b6a6975e21c7c08e5f1700f28f8d351b7f03a1621c","src/front/wgsl/parse/lexer.rs":"2194d38da1dc803ffb850202023350a07b6a3b80af68857d772c76ea49bc6344","src/front/wgsl/parse/mod.rs":"560870a843951191dcb422be6e083f16c6e0109b97fa77d225bf588124822f57","src/front/wgsl/parse/number.rs":"7af92c71031e4c4258e9d8d323f7ee99a2fd4be3b6975ab9b8b53b95431845d9","src/front/wgsl/tests.rs":"05bf78f672e54ca335ed8be59ddfb1504289ee7444258cf2d30823687a418864","src/ir/block.rs":"b562a83a4fa53002d2ca21b4553ed8e2fa77f61e687f24fd4bbd90f1597b2a9d","src/ir/mod.rs":"2933daabb5e22d023682ad5368d9c65a136000ad85f48a29104a562326a91a40","src/keywords/mod.rs":"47a6fde012bf7d1e70f0fac7762f6a8e7dca6b9bbb99e2cada773c61527cfbfe","src/keywords/wgsl.rs":"7236f0e751066712970b4f3dc9942b41d678c6a6e202c7da834f4f398e7cc657","src/lib.rs":"1e40237435eebd4a91fd5c9b2e8a58664ebd1c40a0d27c0c5220047f0221704a","src/non_max_u32.rs":"b2d81efda0e1e5ace9e2fad990a7adf628f1dec63273b069c93d5423eb78350d","src/proc/constant_evaluator.rs":"6fa4c03f8e756ae39b44db9537870663e81537a19beac3599cdce41ffc81c6b1","src/proc/emitter.rs":"39ac886c651e2ad33c06a676a7e4826a0e93de0af660c01e8e4b1f7406742f88","src/proc/index.rs":"17c22571251996583b724af87c7d238f584cd39104256c8e90de7b18e737bb09","src/proc/keyword_set.rs":"928414d2b79ee48735d532e03d3f0a58427c3f27a2a0c6938425749b00943784","src/proc/layouter.rs":"78a91c2c9406c0319a344cc8ec9eda33ed7812ef4a4e73e25f7709afde580381","src/proc/mod.rs":"3674ef30174a6110bad461a4208f16ed208b7347f1a8c58654b87e14558cf99c","src/proc/namer.rs":"f2c11c6d29d4a991fc9a08cf4531acdd309b6a9fef1c06198cc08193dc03a01d","src/proc/overloads/any_overload_set.rs":"877cd637d979abc08caa021dabb9821a79fc9109eb97024a230bcfac82830388","src/proc/overloads/constructor_set.rs":"b702f866ac1472bcc075bd0bede450388123b5899431934fd60a29865498c68b","src/proc/overloads/list.rs":"7cfbf66a3619fdd66f9acf652d56cd2a9451f7905c5d4637cdb9f77f4ef2af51","src/proc/overloads/mathfunction.rs":"d5801d64d1a6fd10e0da30a7c0ac7368954654e5f3d0b022fa806ff9a2ab61b8","src/proc/overloads/mod.rs":"0e96479cbd0ec9fa8200a5e88c16a22ee7ed2021ecf6f80a7e4ded69cad5239f","src/proc/overloads/one_bits_iter.rs":"6b98769fdec777d311248084f13958c5cca44659d0928603ece8618387ea58b2","src/proc/overloads/regular.rs":"73d64fab79019d589cb0595d0ef606fd6af732c42a418c60c81da4c96e113c89","src/proc/overloads/rule.rs":"b7f87d5ca0cffdaa8ee0db0110918f5a726359fd8a72bc638d8ce27a4b0ae3b2","src/proc/overloads/scalar_set.rs":"3729bc754dbf29a2337379ecb46568fdc3149a48074a354244da91e3d9cb5cef","src/proc/overloads/utils.rs":"4b5e02f20611bd24c6849e1f2c01aad4b271388407e8eb866d5a34983538ef8f","src/proc/terminator.rs":"61df2289408be24f69b6c23da469ca3f63f913568f8c314427c3571b826632dd","src/proc/type_methods.rs":"fef829acb2da08a22a2e30dc356e7a8b9149ef13582525bea0143c687a1c57dd","src/proc/typifier.rs":"a31a97013838e43d31cef69b032680187ac709e13db0bf8fc85f4e8e11f236cf","src/racy_lock.rs":"6c541795172660e02bac86c3808cf7346b4791910febc0d289bf93d36271d416","src/span.rs":"e91190a7cd116fb811a295dcf9cd796a25b886cc5d35c3756771e3bc61768455","src/valid/analyzer.rs":"9e0479bee5d2ac15704f69d8852400cd1bcd35bc01c056cb9a510db6dec63a39","src/valid/compose.rs":"46eeed8c4d5b66fc043ddb701074bd864a9fdd24e38b88e282046230acefb747","src/valid/expression.rs":"f8d9e3e20d21ddb9ade2e793d590631bcf4e7c135804a0130302d57212521f6f","src/valid/function.rs":"e97ddecd0369f192fd25c59aeeef3bdd04f86858f5ed625dc384c2d00030ebbc","src/valid/handles.rs":"59f96f672f57e253006f330a3b9a540564dfb462a543e5cad6d20231de29538f","src/valid/interface.rs":"d6bddc8c722ed6e36371bc7796922a524f443f870a06b8f874f2aa49bde682d3","src/valid/mod.rs":"83a51f1e5d30dc1b3118218e21d1ac87d4c16ebb962fd71d50534d258fef8d7d","src/valid/type.rs":"65d2c02000e8038d9adab6ea94741fea61844d0626d7fa4389c54dcaa594704b"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/naga/src/arena/handlevec.rs b/third_party/rust/naga/src/arena/handlevec.rs @@ -14,7 +14,7 @@ use core::ops; /// Rather than a `push` method, `HandleVec` has an [`insert`] method, analogous /// to [`HashMap::insert`], that requires you to provide the handle at which the /// new value should appear. However, since `HandleVec` only supports insertion -/// at the end, the given handle's index must be equal to the the `HandleVec`'s +/// at the end, the given handle's index must be equal to the `HandleVec`'s /// current length; otherwise, the insertion will panic. /// /// [`insert`]: HandleVec::insert diff --git a/third_party/rust/naga/src/front/wgsl/index.rs b/third_party/rust/naga/src/front/wgsl/index.rs @@ -183,7 +183,7 @@ impl<'a> DependencySolver<'a, '_> { self.temp_visited[id_usize] = false; // Now everything this declaration uses has been visited, and is already - // present in `out`. That means we we can append this one to the + // present in `out`. That means we can append this one to the // ordering, and mark it as visited. self.out.push(id); self.visited[id_usize] = true; diff --git a/third_party/rust/naga/src/proc/constant_evaluator.rs b/third_party/rust/naga/src/proc/constant_evaluator.rs @@ -268,6 +268,392 @@ gen_component_wise_extractor! { ], } +/// Vectors with a concrete element type. +#[derive(Debug)] +enum LiteralVector { + F64(ArrayVec<f64, { crate::VectorSize::MAX }>), + F32(ArrayVec<f32, { crate::VectorSize::MAX }>), + F16(ArrayVec<f16, { crate::VectorSize::MAX }>), + U32(ArrayVec<u32, { crate::VectorSize::MAX }>), + I32(ArrayVec<i32, { crate::VectorSize::MAX }>), + U64(ArrayVec<u64, { crate::VectorSize::MAX }>), + I64(ArrayVec<i64, { crate::VectorSize::MAX }>), + Bool(ArrayVec<bool, { crate::VectorSize::MAX }>), + AbstractInt(ArrayVec<i64, { crate::VectorSize::MAX }>), + AbstractFloat(ArrayVec<f64, { crate::VectorSize::MAX }>), +} + +impl LiteralVector { + #[allow(clippy::missing_const_for_fn, reason = "MSRV")] + fn len(&self) -> usize { + match *self { + LiteralVector::F64(ref v) => v.len(), + LiteralVector::F32(ref v) => v.len(), + LiteralVector::F16(ref v) => v.len(), + LiteralVector::U32(ref v) => v.len(), + LiteralVector::I32(ref v) => v.len(), + LiteralVector::U64(ref v) => v.len(), + LiteralVector::I64(ref v) => v.len(), + LiteralVector::Bool(ref v) => v.len(), + LiteralVector::AbstractInt(ref v) => v.len(), + LiteralVector::AbstractFloat(ref v) => v.len(), + } + } + + /// Creates [`LiteralVector`] of size 1 from single [`Literal`] + fn from_literal(literal: Literal) -> Self { + match literal { + Literal::F64(e) => Self::F64(ArrayVec::from_iter(iter::once(e))), + Literal::F32(e) => Self::F32(ArrayVec::from_iter(iter::once(e))), + Literal::U32(e) => Self::U32(ArrayVec::from_iter(iter::once(e))), + Literal::I32(e) => Self::I32(ArrayVec::from_iter(iter::once(e))), + Literal::U64(e) => Self::U64(ArrayVec::from_iter(iter::once(e))), + Literal::I64(e) => Self::I64(ArrayVec::from_iter(iter::once(e))), + Literal::Bool(e) => Self::Bool(ArrayVec::from_iter(iter::once(e))), + Literal::AbstractInt(e) => Self::AbstractInt(ArrayVec::from_iter(iter::once(e))), + Literal::AbstractFloat(e) => Self::AbstractFloat(ArrayVec::from_iter(iter::once(e))), + Literal::F16(e) => Self::F16(ArrayVec::from_iter(iter::once(e))), + } + } + + /// Creates [`LiteralVector`] from [`ArrayVec`] of [`Literal`]s. + /// Returns error if components types do not match. + /// # Panics + /// Panics if vector is empty + fn from_literal_vec( + components: ArrayVec<Literal, { crate::VectorSize::MAX }>, + ) -> Result<Self, ConstantEvaluatorError> { + assert!(!components.is_empty()); + Ok(match components[0] { + Literal::I32(_) => Self::I32( + components + .iter() + .map(|l| match l { + &Literal::I32(v) => Ok(v), + // TODO: should we handle abstract int here? + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::U32(_) => Self::U32( + components + .iter() + .map(|l| match l { + &Literal::U32(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::I64(_) => Self::I64( + components + .iter() + .map(|l| match l { + &Literal::I64(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::U64(_) => Self::U64( + components + .iter() + .map(|l| match l { + &Literal::U64(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::F32(_) => Self::F32( + components + .iter() + .map(|l| match l { + &Literal::F32(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::F64(_) => Self::F64( + components + .iter() + .map(|l| match l { + &Literal::F64(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::Bool(_) => Self::Bool( + components + .iter() + .map(|l| match l { + &Literal::Bool(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::AbstractInt(_) => Self::AbstractInt( + components + .iter() + .map(|l| match l { + &Literal::AbstractInt(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::AbstractFloat(_) => Self::AbstractFloat( + components + .iter() + .map(|l| match l { + &Literal::AbstractFloat(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + Literal::F16(_) => Self::F16( + components + .iter() + .map(|l| match l { + &Literal::F16(v) => Ok(v), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, _>>()?, + ), + }) + } + + #[allow(dead_code)] + /// Returns [`ArrayVec`] of [`Literal`]s + fn to_literal_vec(&self) -> ArrayVec<Literal, { crate::VectorSize::MAX }> { + match *self { + LiteralVector::F64(ref v) => v.iter().map(|e| Literal::F64(*e)).collect(), + LiteralVector::F32(ref v) => v.iter().map(|e| Literal::F32(*e)).collect(), + LiteralVector::F16(ref v) => v.iter().map(|e| Literal::F16(*e)).collect(), + LiteralVector::U32(ref v) => v.iter().map(|e| Literal::U32(*e)).collect(), + LiteralVector::I32(ref v) => v.iter().map(|e| Literal::I32(*e)).collect(), + LiteralVector::U64(ref v) => v.iter().map(|e| Literal::U64(*e)).collect(), + LiteralVector::I64(ref v) => v.iter().map(|e| Literal::I64(*e)).collect(), + LiteralVector::Bool(ref v) => v.iter().map(|e| Literal::Bool(*e)).collect(), + LiteralVector::AbstractInt(ref v) => { + v.iter().map(|e| Literal::AbstractInt(*e)).collect() + } + LiteralVector::AbstractFloat(ref v) => { + v.iter().map(|e| Literal::AbstractFloat(*e)).collect() + } + } + } + + #[allow(dead_code)] + /// Puts self into eval's expressions arena and returns handle to it + fn register_as_evaluated_expr( + &self, + eval: &mut ConstantEvaluator<'_>, + span: Span, + ) -> Result<Handle<Expression>, ConstantEvaluatorError> { + let lit_vec = self.to_literal_vec(); + assert!(!lit_vec.is_empty()); + let expr = if lit_vec.len() == 1 { + Expression::Literal(lit_vec[0]) + } else { + Expression::Compose { + ty: eval.types.insert( + Type { + name: None, + inner: TypeInner::Vector { + size: match lit_vec.len() { + 2 => crate::VectorSize::Bi, + 3 => crate::VectorSize::Tri, + 4 => crate::VectorSize::Quad, + _ => unreachable!(), + }, + scalar: lit_vec[0].scalar(), + }, + }, + Span::UNDEFINED, + ), + components: lit_vec + .iter() + .map(|&l| eval.register_evaluated_expr(Expression::Literal(l), span)) + .collect::<Result<_, _>>()?, + } + }; + eval.register_evaluated_expr(expr, span) + } +} + +/// A macro for matching on [`LiteralVector`] variants. +/// +/// `Float` variant expands to `F16`, `F32`, `F64` and `AbstractFloat`. +/// `Integer` variant expands to `I32`, `I64`, `U32`, `U64` and `AbstractInt`. +/// +/// For output both [`Literal`] (fold) and [`LiteralVector`] (map) are supported. +/// +/// Example usage: +/// +/// ```rust,ignore +/// match_literal_vector!(match v => Literal { +/// F16 => |v| {v.sum()}, +/// Integer => |v| {v.sum()}, +/// U32 => |v| -> I32 {v.sum()}, // optionally override return type +/// }) +/// ``` +/// +/// ```rust,ignore +/// match_literal_vector!(match (e1, e2) => LiteralVector { +/// F16 => |e1, e2| {e1+e2}, +/// Integer => |e1, e2| {e1+e2}, +/// U32 => |e1, e2| -> I32 {e1+e2}, // optionally override return type +/// }) +/// ``` +macro_rules! match_literal_vector { + (match $lit_vec:expr => $out:ident { + $( + $ty:ident => |$($var:ident),+| $(-> $ret:ident)? { $body:expr } + ),+ + $(,)? + }) => { + match_literal_vector!(@inner_start $lit_vec; $out; [$($ty),+]; [$({ $($var),+ ; $($ret)? ; $body }),+]) + }; + + (@inner_start + $lit_vec:expr; + $out:ident; + [$($ty:ident),+]; + [$({ $($var:ident),+ ; $($ret:ident)? ; $body:expr }),+] + ) => { + match_literal_vector!(@inner + $lit_vec; + $out; + [$($ty),+]; + [] <> [$({ $($var),+ ; $($ret)? ; $body }),+] + ) + }; + + (@inner + $lit_vec:expr; + $out:ident; + [$ty:ident $(, $ty1:ident)*]; + [$({$_ty:ident ; $($_var:ident),+ ; $($_ret:ident)? ; $_body:expr}),*] <> + [$({ $($var:ident),+ ; $($ret:ident)? ; $body:expr }),+] + ) => { + match_literal_vector!(@inner + $ty; + $lit_vec; + $out; + [$($ty1),*]; + [$({$_ty ; $($_var),+ ; $($_ret)? ; $_body}),*] <> + [$({ $($var),+ ; $($ret)? ; $body }),+] + ) + }; + (@inner + Integer; + $lit_vec:expr; + $out:ident; + [$($ty:ident),*]; + [$({$_ty:ident ; $($_var:ident),+ ; $($_ret:ident)? ; $_body:expr}),*] <> + [ + { $($var:ident),+ ; $($ret:ident)? ; $body:expr } + $(,{ $($var1:ident),+ ; $($ret1:ident)? ; $body1:expr })* + ] + ) => { + match_literal_vector!(@inner + $lit_vec; + $out; + [U32, I32, U64, I64, AbstractInt $(, $ty)*]; + [$({$_ty ; $($_var),+ ; $($_ret)? ; $_body}),*] <> + [ + { $($var),+ ; $($ret)? ; $body }, // U32 + { $($var),+ ; $($ret)? ; $body }, // I32 + { $($var),+ ; $($ret)? ; $body }, // U64 + { $($var),+ ; $($ret)? ; $body }, // I64 + { $($var),+ ; $($ret)? ; $body } // AbstractInt + $(,{ $($var1),+ ; $($ret1)? ; $body1 })* + ] + ) + }; + (@inner + Float; + $lit_vec:expr; + $out:ident; + [$($ty:ident),*]; + [$({$_ty:ident ; $($_var:ident),+ ; $($_ret:ident)? ; $_body:expr}),*] <> + [ + { $($var:ident),+ ; $($ret:ident)? ; $body:expr } + $(,{ $($var1:ident),+ ; $($ret1:ident)? ; $body1:expr })* + ] + ) => { + match_literal_vector!(@inner + $lit_vec; + $out; + [F16, F32, F64, AbstractFloat $(, $ty)*]; + [$({$_ty ; $($_var),+ ; $($_ret)? ; $_body}),*] <> + [ + { $($var),+ ; $($ret)? ; $body }, // F16 + { $($var),+ ; $($ret)? ; $body }, // F32 + { $($var),+ ; $($ret)? ; $body }, // F64 + { $($var),+ ; $($ret)? ; $body } // AbstractFloat + $(,{ $($var1),+ ; $($ret1)? ; $body1 })* + ] + ) + }; + (@inner + $ty:ident; + $lit_vec:expr; + $out:ident; + [$ty1:ident $(,$ty2:ident)*]; + [$({$_ty:ident ; $($_var:ident),+ ; $($_ret:ident)? ; $_body:expr}),*] <> [ + { $($var:ident),+ ; $($ret:ident)? ; $body:expr } + $(, { $($var1:ident),+ ; $($ret1:ident)? ; $body1:expr })* + ] + ) => { + match_literal_vector!(@inner + $ty1; + $lit_vec; + $out; + [$($ty2),*]; + [ + $({$_ty ; $($_var),+ ; $($_ret)? ; $_body},)* + { $ty; $($var),+ ; $($ret)? ; $body } + ] <> + [$({ $($var1),+ ; $($ret1)? ; $body1 }),*] + + ) + }; + (@inner + $ty:ident; + $lit_vec:expr; + $out:ident; + []; + [$({$_ty:ident ; $($_var:ident),+ ; $($_ret:ident)? ; $_body:expr}),*] <> + [{ $($var:ident),+ ; $($ret:ident)? ; $body:expr }] + ) => { + match_literal_vector!(@inner_finish + $lit_vec; + $out; + [ + $({ $_ty ; $($_var),+ ; $($_ret)? ; $_body },)* + { $ty; $($var),+ ; $($ret)? ; $body } + ] + ) + }; + (@inner_finish + $lit_vec:expr; + $out:ident; + [$({$ty:ident ; $($var:ident),+ ; $($ret:ident)? ; $body:expr}),+] + ) => { + match $lit_vec { + $( + #[allow(unused_parens)] + ($(LiteralVector::$ty(ref $var)),+) => { Ok(match_literal_vector!(@expand_ret $out; $ty $(; $ret)? ; $body)) } + )+ + _ => Err(ConstantEvaluatorError::InvalidMathArg), + } + }; + (@expand_ret $out:ident; $ty:ident; $body:expr) => { + $out::$ty($body) + }; + (@expand_ret $out:ident; $_ty:ident; $ret:ident; $body:expr) => { + $out::$ret($body) + }; +} + #[derive(Debug)] enum Behavior<'a> { Wgsl(WgslRestrictions<'a>), @@ -1349,16 +1735,105 @@ impl<'a> ConstantEvaluator<'a> { self.packed_dot_product(arg, arg1.unwrap(), span, false) } crate::MathFunction::Cross => self.cross_product(arg, arg1.unwrap(), span), + crate::MathFunction::Dot => { + // https://www.w3.org/TR/WGSL/#dot-builtin + let e1 = self.extract_vec(arg, false)?; + let e2 = self.extract_vec(arg1.unwrap(), false)?; + if e1.len() != e2.len() { + return Err(ConstantEvaluatorError::InvalidMathArg); + } + + fn int_dot<P>(a: &[P], b: &[P]) -> Result<P, ConstantEvaluatorError> + where + P: num_traits::PrimInt + num_traits::CheckedAdd + num_traits::CheckedMul, + { + a.iter() + .zip(b.iter()) + .map(|(&aa, bb)| aa.checked_mul(bb)) + .try_fold(P::zero(), |acc, x| { + if let Some(x) = x { + acc.checked_add(&x) + } else { + None + } + }) + .ok_or(ConstantEvaluatorError::Overflow( + "in dot built-in".to_string(), + )) + } + + let result = match_literal_vector!(match (e1, e2) => Literal { + Float => |e1, e2| { e1.iter().zip(e2.iter()).map(|(&aa, &bb)| aa * bb).sum() }, + Integer => |e1, e2| { int_dot(e1, e2)? }, + })?; + self.register_evaluated_expr(Expression::Literal(result), span) + } + crate::MathFunction::Length => { + // https://www.w3.org/TR/WGSL/#length-builtin + let e1 = self.extract_vec(arg, true)?; + + fn float_length<F>(e: &[F]) -> F + where + F: core::ops::Mul<F>, + F: num_traits::Float + iter::Sum, + { + e.iter().map(|&ei| ei * ei).sum::<F>().sqrt() + } + + let result = match_literal_vector!(match e1 => Literal { + Float => |e1| { float_length(e1) }, + })?; + self.register_evaluated_expr(Expression::Literal(result), span) + } + crate::MathFunction::Distance => { + // https://www.w3.org/TR/WGSL/#distance-builtin + let e1 = self.extract_vec(arg, true)?; + let e2 = self.extract_vec(arg1.unwrap(), true)?; + if e1.len() != e2.len() { + return Err(ConstantEvaluatorError::InvalidMathArg); + } + + fn float_distance<F>(a: &[F], b: &[F]) -> F + where + F: core::ops::Mul<F>, + F: num_traits::Float + iter::Sum + core::ops::Sub, + { + a.iter() + .zip(b.iter()) + .map(|(&aa, &bb)| aa - bb) + .map(|ei| ei * ei) + .sum::<F>() + .sqrt() + } + let result = match_literal_vector!(match (e1, e2) => Literal { + Float => |e1, e2| { float_distance(e1, e2) }, + })?; + self.register_evaluated_expr(Expression::Literal(result), span) + } + crate::MathFunction::Normalize => { + // https://www.w3.org/TR/WGSL/#normalize-builtin + let e1 = self.extract_vec(arg, true)?; + + fn float_normalize<F>(e: &[F]) -> ArrayVec<F, { crate::VectorSize::MAX }> + where + F: core::ops::Mul<F>, + F: num_traits::Float + iter::Sum, + { + let len = e.iter().map(|&ei| ei * ei).sum::<F>().sqrt(); + e.iter().map(|&ei| ei / len).collect() + } + + let result = match_literal_vector!(match e1 => LiteralVector { + Float => |e1| { float_normalize(e1) }, + })?; + result.register_as_evaluated_expr(self, span) + } // unimplemented crate::MathFunction::Modf | crate::MathFunction::Frexp | crate::MathFunction::Ldexp - | crate::MathFunction::Dot | crate::MathFunction::Outer - | crate::MathFunction::Distance - | crate::MathFunction::Length - | crate::MathFunction::Normalize | crate::MathFunction::FaceForward | crate::MathFunction::Reflect | crate::MathFunction::Refract @@ -1434,8 +1909,8 @@ impl<'a> ConstantEvaluator<'a> { ) -> Result<Handle<Expression>, ConstantEvaluatorError> { use Literal as Li; - let (a, ty) = self.extract_vec::<3>(a)?; - let (b, _) = self.extract_vec::<3>(b)?; + let (a, ty) = self.extract_vec_with_size::<3>(a)?; + let (b, _) = self.extract_vec_with_size::<3>(b)?; let product = match (a, b) { ( @@ -1502,7 +1977,7 @@ impl<'a> ConstantEvaluator<'a> { /// values. /// /// Also return the type handle from the `Compose` expression. - fn extract_vec<const N: usize>( + fn extract_vec_with_size<const N: usize>( &mut self, expr: Handle<Expression>, ) -> Result<([Literal; N], Handle<Type>), ConstantEvaluatorError> { @@ -1526,6 +2001,39 @@ impl<'a> ConstantEvaluator<'a> { Ok((value, ty)) } + /// Extract the values of a `vecN` from `expr`. + /// + /// Return the value of `expr`, whose type is `vecN<S>` for some + /// vector size `N` and scalar `S`, as an array of `N` [`Literal`] + /// values. + /// + /// Also return the type handle from the `Compose` expression. + fn extract_vec( + &mut self, + expr: Handle<Expression>, + allow_single: bool, + ) -> Result<LiteralVector, ConstantEvaluatorError> { + let span = self.expressions.get_span(expr); + let expr = self.eval_zero_value_and_splat(expr, span)?; + + match self.expressions[expr] { + Expression::Literal(literal) if allow_single => { + Ok(LiteralVector::from_literal(literal)) + } + Expression::Compose { ty, ref components } => { + let components: ArrayVec<Literal, { crate::VectorSize::MAX }> = + crate::proc::flatten_compose(ty, components, self.expressions, self.types) + .map(|expr| match self.expressions[expr] { + Expression::Literal(l) => Ok(l), + _ => Err(ConstantEvaluatorError::InvalidMathArg), + }) + .collect::<Result<_, ConstantEvaluatorError>>()?; + LiteralVector::from_literal_vec(components) + } + _ => Err(ConstantEvaluatorError::InvalidMathArg), + } + } + fn array_length( &mut self, array: Handle<Expression>, diff --git a/third_party/rust/wgpu-core/.cargo-checksum.json b/third_party/rust/wgpu-core/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"14fc314e094524575e12773badac343c650bfd0c983d828539a4ac887a64bbf6","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","build.rs":"5e3619e28faeac243cbae1a5f739ad15035dc9e1254957b64fd1deed6f393c8a","src/as_hal.rs":"473936fe2c26563f9fea71bbafdb7eb3d8ff5f4fe9376052d18db3ea8e2908ff","src/binding_model.rs":"9943f0814b697f446ee374343a980e49ca2f8fae1bb1955ba889eb0bee4b1f3b","src/command/allocator.rs":"386cb6e60bd332a881dbbe57ff66a0fa83f35e3ee924559f1689418ac6c7273a","src/command/bind.rs":"c88aa87bf3052fe0993b79ff047339fac4557ead85973f4a37bf236fba401222","src/command/bundle.rs":"d078bb708cbdea42ebebc5c5a510bff3cad982b67be3682ed5956bfb212114f1","src/command/clear.rs":"932afc6e1858f8c93d3ecf721215a0bc584a8e613444641a98f5cb98e3061b4b","src/command/compute.rs":"5c74db1124542f2b41435f7dec4f9118e44b3efa8a38f84e1d03e73ebfa1a9b9","src/command/compute_command.rs":"18aa0b8e389a5d345243b876b1abbacfc998a19d23069e092183fa7be10fa0ab","src/command/draw.rs":"e7bf195d33683a19b077e64d181cb27b8acde724732ac9af3c94d83c3f21559e","src/command/encoder.rs":"7655f8c248120f39e37f3ad0f84bd9816df78a75657790ab12d5aba144fef65f","src/command/encoder_command.rs":"4e1d28040d9330a803644e377bd7675ec503cd0396c31394658dc67d71a4b50f","src/command/ffi.rs":"1fb626579a7726a32d571a17a14f2656def0c170f4f6297e7e51772a6fc5a566","src/command/memory_init.rs":"f68a796c4262d261620cf85e5762e267dee013f4ef5d61f67fcb173b59048983","src/command/mod.rs":"1f51c68df72ea90316eebafa141a974b658467b2ad6543302a5eaea642ef1506","src/command/pass.rs":"5ee6e7a68329b716b5a5231b27794682b5b17a6ee2c237f658bb9b71dd2efeca","src/command/query.rs":"fa7cb51fbbaa50febe0e61c473891d4131125c290180a05d49b60f5138931fb4","src/command/ray_tracing.rs":"4768a6dba5f737d3550a90ca35fe75c39fe241fc2d41c3795eb329139c5e6ec6","src/command/render.rs":"42dfc095c886316acf4e2f892329487fedeba44de4d273267b7dd49e5118ff95","src/command/render_command.rs":"3f1bc2fec688fa3f33052867eeb2e194020a643f7d16f6111b8b128594c38570","src/command/timestamp_writes.rs":"da06fb07b8d0917be3e7fb9212d0ffc6b16526e1c1df617213ef354c3e1fb446","src/command/transfer.rs":"28fdca903934d7e2e5d12d28f952ad3e9ef804c8452f9d020831b5e6aca7e19d","src/command/transition_resources.rs":"753cb02adfee4758404c403d19fd76e6c8de77de01435a2cbe2f60bdbe44bde1","src/conv.rs":"4e4115429df502099f7230d47a050d307f6237c7c11c9c90cba9e34dc909ebdd","src/device/bgl.rs":"b081fe1393f1dd917151efc3a10ee0269fecd3920eac3b45411c1197a98c5a06","src/device/global.rs":"e6ca310ed5f0ed4bd369d25b0f6ee6711624484f35c9fd533111f603aae25618","src/device/life.rs":"44bd34cf5ab1c1a21729f2188df6d2ca0238f11c5f723380c8a4a16fbbd90b88","src/device/mod.rs":"dc8271ae7b62e1096f1a9068f671e6ed8cf7a11b5f9987066d5c173c6e4c4ad8","src/device/queue.rs":"598048a8cf2597a9f737144193743e3a4290d92aeca7a9de21bd8ca38d8a65d1","src/device/ray_tracing.rs":"cb13bc0caf54113ca12ce5db147af339474ec4b2423f2556600b5ea936b408cc","src/device/resource.rs":"7e52478bdfb2d4c38c104a90defc5e4c0ebc48578e79ae36205e4a1de25d253c","src/device/trace.rs":"39e52ee5b220eb6a13d949582f1f87756189648bf2f05ea7148b0a67b73c226f","src/error.rs":"4f07a0b09b30b2d6cbc855d0091d724000f492018af3b41e80befbeccf2a6f4e","src/global.rs":"bd76f9552496996f9eba6502e5caf1bcd6ca33bf3d5008795b5335f74e56fd55","src/hash_utils.rs":"9f57a627fe3f00659391670141df62f68d67922c7b186f2a9a5958ab16fb576f","src/hub.rs":"308c53e05134e5a48294c61511e43077adfdb5c334237de2016ed4537d562382","src/id.rs":"134974aa304d1d0eb7349438b9660519886c513f01d5868cd4331d2bc78f2cb8","src/identity.rs":"712ccda267eb602655c53672a94346aa4c9f88c0044ae6edcd658a814c9a50cf","src/indirect_validation/dispatch.rs":"b15d926e0de732c3c39c965f168f99598fa508ca4b0883061993d99dd644b31a","src/indirect_validation/draw.rs":"6d8338f37f406c6e2cf89713e8493f167e1d8e999737f2976de298810c2ada76","src/indirect_validation/mod.rs":"79466e4f9a59386e833958b3537beed6ffb6a7ee62aaabcf35382c2683998e43","src/indirect_validation/utils.rs":"e6a3b636dd71ff6b01d5abd5a589a0136fb30aa1d517a43f45cf2e5ad54da245","src/indirect_validation/validate_draw.wgsl":"fa7bba5f28c6c181f2d55ecfe386a5e5cd276bcb3c36aa7f963f43c535a9bf9a","src/init_tracker/buffer.rs":"6167a400ab271ba857f1c507e60a46fbd318c185aff87eecf7eb05f7f09b6963","src/init_tracker/mod.rs":"aa87df3428e3b23507377c71eae92dc1dd9f5d5374aa0b03906fb81507fc6ce6","src/init_tracker/texture.rs":"ffdc67d4be23bcd48b22945de94ac0ea8ee571f91eb6d00323b9afe6fa91eef3","src/instance.rs":"e7b9a20e070cc401f75dfe07aceb8f2950a4d99ed8a7d4413ef9f0813f5a8ca1","src/lib.rs":"57d2562e33b04113cc6c2ca3bc9a215ec779a291be82b680ff037fac7d7a8a15","src/lock/mod.rs":"8d3ae3f8d004d7f7d8a3aefe9f30b35669cb8e2409f5fba27b1fcb116b2429c4","src/lock/observing.rs":"5bf62cef9f3ae67e99af640442fadd4e1f762480d990ee69ed9924c9e94a8dce","src/lock/rank.rs":"238e6a97c58ee1a804863c8011bb257864301170344d18596bdaab09f3f74b54","src/lock/ranked.rs":"a95d6bf7f2ef510047a4c33687076beccf38a0148aac3261bd29fa7555e3f488","src/lock/vanilla.rs":"ca8156d4c981473d437db1056487a44c714760d685819eaff8cf82fb0098a608","src/pipeline.rs":"b7aae46522bc6843b0f47dac7e73e33197c76e9724cfb4be3b949bfa27a99fb1","src/pipeline_cache.rs":"41a3a76cb9a10777ace910984cabf80b0b73d103108e2db73c2440a4c0a9c191","src/pool.rs":"e11bfdc73a66321d26715465fa74657dcd26a9b856b80b8369b4aac2132a4295","src/present.rs":"bf0c6c47e58496199955013170f41cbf10755c1572583d5af4b88686c28ffb66","src/ray_tracing.rs":"a4261ccd978e8fab1fef48a168d2d33f8a9f2dae89f285ecd9ec8a6d0894fa3b","src/registry.rs":"ecd457e8956e065050bb9c63ca404505e56ffed6d540b3f14f745d7c4010b205","src/resource.rs":"f51d76decc1732a9b8f0c7c0541a58752db5086699f6519f4d8c1c39b20c602f","src/scratch.rs":"ea5c40e4d18a12f09cc1038f2dcdddb69b13e99275ac987d826658229a39b326","src/snatch.rs":"bf422810afd952894e365cd397763d42d6365ce3c5a5b4c1170566432f462939","src/storage.rs":"29427dea035d03abc8b8abdebecc5591378f1366088d1468ab2beb8536e7d675","src/timestamp_normalization/common.wgsl":"9f65aef0526ff9dde945fae70cef064ad961b0aee4291759ae82974cd2ead0a7","src/timestamp_normalization/mod.rs":"89444ad79900c12c2dc44780f1525cd0554d6ed1d9038938dd0075e8173ae59d","src/timestamp_normalization/timestamp_normalization.wgsl":"4b2202b965e4c67482d03a546ac38c72a602d79ed9a60e6f7217393c49afad49","src/track/blas.rs":"18c7b5b89a60ab49bbc0f4f8b85a24502c1d968714ef4c586095e119848d902a","src/track/buffer.rs":"1ab5310367606fc74f0791733ea5ba2e09acc92ff7f4f4773f66bcfb3138c52f","src/track/metadata.rs":"04b8bcf8ded7c7c805d9336cfc874da9d8de7d12d99f7525f0540780a1dffc45","src/track/mod.rs":"a66ce12a4dc430a63bd6a3e05818695e407cfb079b320a5cd000bd1b45ceb6a3","src/track/range.rs":"2688b05a0c6e8510ff6ba3a9623e8b83f433a05ba743129928c56c93d9a9c233","src/track/stateless.rs":"3db699f5f48a319fa07fb16cdf51e1623d6ecac7a476467ee366e014ea665b89","src/track/texture.rs":"754c54f3051c8c780f3904c8c9213fc91ea1838ee14301731dd069a98c8c6695","src/validation.rs":"a4f661cd65a621e1aebf2d5c5aa3d726373647d6cbab36ed8ebdcb42bbecf416","src/weak_vec.rs":"a4193add5912b91226a3155cc613365b7fafdf2e7929d21d68bc19d149696e85"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"14fc314e094524575e12773badac343c650bfd0c983d828539a4ac887a64bbf6","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","build.rs":"5e3619e28faeac243cbae1a5f739ad15035dc9e1254957b64fd1deed6f393c8a","src/as_hal.rs":"5d08d8e49b016abb662957d8e42ab748d580a2f3e449caeeb7311f222b8818f6","src/binding_model.rs":"9943f0814b697f446ee374343a980e49ca2f8fae1bb1955ba889eb0bee4b1f3b","src/command/allocator.rs":"386cb6e60bd332a881dbbe57ff66a0fa83f35e3ee924559f1689418ac6c7273a","src/command/bind.rs":"060bca4de8e8f2ed3157e702e77eecedd9c5f6eab68c3c07b59b23191308346e","src/command/bundle.rs":"d078bb708cbdea42ebebc5c5a510bff3cad982b67be3682ed5956bfb212114f1","src/command/clear.rs":"932afc6e1858f8c93d3ecf721215a0bc584a8e613444641a98f5cb98e3061b4b","src/command/compute.rs":"2316e2e0409cffdc9b28fc28491e78e8fbaf4ea317ea2a92b27b5a22be38292d","src/command/compute_command.rs":"18aa0b8e389a5d345243b876b1abbacfc998a19d23069e092183fa7be10fa0ab","src/command/draw.rs":"e7bf195d33683a19b077e64d181cb27b8acde724732ac9af3c94d83c3f21559e","src/command/encoder.rs":"7655f8c248120f39e37f3ad0f84bd9816df78a75657790ab12d5aba144fef65f","src/command/encoder_command.rs":"4e1d28040d9330a803644e377bd7675ec503cd0396c31394658dc67d71a4b50f","src/command/ffi.rs":"1fb626579a7726a32d571a17a14f2656def0c170f4f6297e7e51772a6fc5a566","src/command/memory_init.rs":"f68a796c4262d261620cf85e5762e267dee013f4ef5d61f67fcb173b59048983","src/command/mod.rs":"0c650f854bbf48b25c00ff4b3423b0e33abc7199a4a423d39ae155cc694deb47","src/command/pass.rs":"ece99f1a023d03e8f293c9533e90f1762945988819bfb35d6f182bdb1997faf8","src/command/query.rs":"fa7cb51fbbaa50febe0e61c473891d4131125c290180a05d49b60f5138931fb4","src/command/ray_tracing.rs":"bcb785a0845ecccc87411037fac234474429beba9cd67ba33d55476716e25dca","src/command/render.rs":"5cf2e50dfa16426624a3d6b4a6207025c8fbe6a76bb96671ef19fe8337dc95ee","src/command/render_command.rs":"3f1bc2fec688fa3f33052867eeb2e194020a643f7d16f6111b8b128594c38570","src/command/timestamp_writes.rs":"da06fb07b8d0917be3e7fb9212d0ffc6b16526e1c1df617213ef354c3e1fb446","src/command/transfer.rs":"28fdca903934d7e2e5d12d28f952ad3e9ef804c8452f9d020831b5e6aca7e19d","src/command/transition_resources.rs":"753cb02adfee4758404c403d19fd76e6c8de77de01435a2cbe2f60bdbe44bde1","src/conv.rs":"4e4115429df502099f7230d47a050d307f6237c7c11c9c90cba9e34dc909ebdd","src/device/bgl.rs":"b081fe1393f1dd917151efc3a10ee0269fecd3920eac3b45411c1197a98c5a06","src/device/global.rs":"e6ca310ed5f0ed4bd369d25b0f6ee6711624484f35c9fd533111f603aae25618","src/device/life.rs":"44bd34cf5ab1c1a21729f2188df6d2ca0238f11c5f723380c8a4a16fbbd90b88","src/device/mod.rs":"dc8271ae7b62e1096f1a9068f671e6ed8cf7a11b5f9987066d5c173c6e4c4ad8","src/device/queue.rs":"0a883c00acef68fe05d309ec68a5df0c920965074c9c5fa4753b7861d279c4fe","src/device/ray_tracing.rs":"cb13bc0caf54113ca12ce5db147af339474ec4b2423f2556600b5ea936b408cc","src/device/resource.rs":"039e2b45debf9396038482ae67cdea7bed0bb5fc8ba694941ee61638df11ff1f","src/device/trace.rs":"39e52ee5b220eb6a13d949582f1f87756189648bf2f05ea7148b0a67b73c226f","src/error.rs":"4f07a0b09b30b2d6cbc855d0091d724000f492018af3b41e80befbeccf2a6f4e","src/global.rs":"bd76f9552496996f9eba6502e5caf1bcd6ca33bf3d5008795b5335f74e56fd55","src/hash_utils.rs":"9f57a627fe3f00659391670141df62f68d67922c7b186f2a9a5958ab16fb576f","src/hub.rs":"308c53e05134e5a48294c61511e43077adfdb5c334237de2016ed4537d562382","src/id.rs":"134974aa304d1d0eb7349438b9660519886c513f01d5868cd4331d2bc78f2cb8","src/identity.rs":"712ccda267eb602655c53672a94346aa4c9f88c0044ae6edcd658a814c9a50cf","src/indirect_validation/dispatch.rs":"b15d926e0de732c3c39c965f168f99598fa508ca4b0883061993d99dd644b31a","src/indirect_validation/draw.rs":"6d8338f37f406c6e2cf89713e8493f167e1d8e999737f2976de298810c2ada76","src/indirect_validation/mod.rs":"79466e4f9a59386e833958b3537beed6ffb6a7ee62aaabcf35382c2683998e43","src/indirect_validation/utils.rs":"e6a3b636dd71ff6b01d5abd5a589a0136fb30aa1d517a43f45cf2e5ad54da245","src/indirect_validation/validate_draw.wgsl":"fa7bba5f28c6c181f2d55ecfe386a5e5cd276bcb3c36aa7f963f43c535a9bf9a","src/init_tracker/buffer.rs":"6167a400ab271ba857f1c507e60a46fbd318c185aff87eecf7eb05f7f09b6963","src/init_tracker/mod.rs":"aa87df3428e3b23507377c71eae92dc1dd9f5d5374aa0b03906fb81507fc6ce6","src/init_tracker/texture.rs":"ffdc67d4be23bcd48b22945de94ac0ea8ee571f91eb6d00323b9afe6fa91eef3","src/instance.rs":"e7b9a20e070cc401f75dfe07aceb8f2950a4d99ed8a7d4413ef9f0813f5a8ca1","src/lib.rs":"57d2562e33b04113cc6c2ca3bc9a215ec779a291be82b680ff037fac7d7a8a15","src/lock/mod.rs":"8d3ae3f8d004d7f7d8a3aefe9f30b35669cb8e2409f5fba27b1fcb116b2429c4","src/lock/observing.rs":"5bf62cef9f3ae67e99af640442fadd4e1f762480d990ee69ed9924c9e94a8dce","src/lock/rank.rs":"238e6a97c58ee1a804863c8011bb257864301170344d18596bdaab09f3f74b54","src/lock/ranked.rs":"a95d6bf7f2ef510047a4c33687076beccf38a0148aac3261bd29fa7555e3f488","src/lock/vanilla.rs":"ca8156d4c981473d437db1056487a44c714760d685819eaff8cf82fb0098a608","src/pipeline.rs":"b7aae46522bc6843b0f47dac7e73e33197c76e9724cfb4be3b949bfa27a99fb1","src/pipeline_cache.rs":"41a3a76cb9a10777ace910984cabf80b0b73d103108e2db73c2440a4c0a9c191","src/pool.rs":"e11bfdc73a66321d26715465fa74657dcd26a9b856b80b8369b4aac2132a4295","src/present.rs":"bf0c6c47e58496199955013170f41cbf10755c1572583d5af4b88686c28ffb66","src/ray_tracing.rs":"a4261ccd978e8fab1fef48a168d2d33f8a9f2dae89f285ecd9ec8a6d0894fa3b","src/registry.rs":"ecd457e8956e065050bb9c63ca404505e56ffed6d540b3f14f745d7c4010b205","src/resource.rs":"942a362cc4ef05876870d3bcb0f0db8d2a513be5acacf257c202ee2c0c83a908","src/scratch.rs":"ea5c40e4d18a12f09cc1038f2dcdddb69b13e99275ac987d826658229a39b326","src/snatch.rs":"bf422810afd952894e365cd397763d42d6365ce3c5a5b4c1170566432f462939","src/storage.rs":"29427dea035d03abc8b8abdebecc5591378f1366088d1468ab2beb8536e7d675","src/timestamp_normalization/common.wgsl":"9f65aef0526ff9dde945fae70cef064ad961b0aee4291759ae82974cd2ead0a7","src/timestamp_normalization/mod.rs":"89444ad79900c12c2dc44780f1525cd0554d6ed1d9038938dd0075e8173ae59d","src/timestamp_normalization/timestamp_normalization.wgsl":"4b2202b965e4c67482d03a546ac38c72a602d79ed9a60e6f7217393c49afad49","src/track/blas.rs":"18c7b5b89a60ab49bbc0f4f8b85a24502c1d968714ef4c586095e119848d902a","src/track/buffer.rs":"c64e14aba25291064b1a095c875f94cd053b1d7d3744691c041285328e99f7ac","src/track/metadata.rs":"00b754c2c23b6fbfc11a03aecf0528a38fbfec0ff54f4d9eeaed4043e54884a5","src/track/mod.rs":"67e6fd7c6538c7e3cdd1655e85400320adac559f6c257477985081994edbf5d3","src/track/range.rs":"2688b05a0c6e8510ff6ba3a9623e8b83f433a05ba743129928c56c93d9a9c233","src/track/stateless.rs":"3db699f5f48a319fa07fb16cdf51e1623d6ecac7a476467ee366e014ea665b89","src/track/texture.rs":"3f3295bbc1b41415fceac700e6b494b26c3c673ebc5aa1fe31803197e53b68ea","src/validation.rs":"a4f661cd65a621e1aebf2d5c5aa3d726373647d6cbab36ed8ebdcb42bbecf416","src/weak_vec.rs":"a4193add5912b91226a3155cc613365b7fafdf2e7929d21d68bc19d149696e85"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-core/src/as_hal.rs b/third_party/rust/wgpu-core/src/as_hal.rs @@ -330,6 +330,12 @@ impl Global { }) } + /// Encode commands using the raw HAL command encoder. + /// + /// # Panics + /// + /// If the command encoder has already been used with the wgpu encoding API. + /// /// # Safety /// /// - The raw command encoder handle must not be manually destroyed diff --git a/third_party/rust/wgpu-core/src/command/bind.rs b/third_party/rust/wgpu-core/src/command/bind.rs @@ -1,3 +1,5 @@ +use core::{iter::zip, ops::Range}; + use alloc::{boxed::Box, sync::Arc, vec::Vec}; use arrayvec::ArrayVec; @@ -192,14 +194,16 @@ mod compat { } #[derive(Debug, Default)] - pub(crate) struct BoundBindGroupLayouts { + pub(super) struct BoundBindGroupLayouts { entries: ArrayVec<Entry, { hal::MAX_BIND_GROUPS }>, + rebind_start: usize, } impl BoundBindGroupLayouts { pub fn new() -> Self { Self { entries: (0..hal::MAX_BIND_GROUPS).map(|_| Entry::empty()).collect(), + rebind_start: 0, } } @@ -211,15 +215,19 @@ mod compat { .unwrap_or(self.entries.len()) } - fn make_range(&self, start_index: usize) -> Range<usize> { + /// Get the range of entries that needs to be rebound, and clears it. + pub fn take_rebind_range(&mut self) -> Range<usize> { let end = self.num_valid_entries(); - start_index..end.max(start_index) + let start = self.rebind_start; + self.rebind_start = end; + start..end.max(start) + } + + pub fn update_start_index(&mut self, start_index: usize) { + self.rebind_start = self.rebind_start.min(start_index); } - pub fn update_expectations( - &mut self, - expectations: &[Arc<BindGroupLayout>], - ) -> Range<usize> { + pub fn update_expectations(&mut self, expectations: &[Arc<BindGroupLayout>]) { let start_index = self .entries .iter() @@ -237,12 +245,12 @@ mod compat { for e in self.entries[expectations.len()..].iter_mut() { e.expected = None; } - self.make_range(start_index) + self.update_start_index(start_index); } - pub fn assign(&mut self, index: usize, value: Arc<BindGroupLayout>) -> Range<usize> { + pub fn assign(&mut self, index: usize, value: Arc<BindGroupLayout>) { self.entries[index].assigned = Some(value); - self.make_range(index) + self.update_start_index(index); } pub fn list_active(&self) -> impl Iterator<Item = usize> + '_ { @@ -333,10 +341,10 @@ impl Binder { &'a mut self, new: &Arc<PipelineLayout>, late_sized_buffer_groups: &[LateSizedBufferGroup], - ) -> (usize, &'a [EntryPayload]) { + ) { let old_id_opt = self.pipeline_layout.replace(new.clone()); - let mut bind_range = self.manager.update_expectations(&new.bind_group_layouts); + self.manager.update_expectations(&new.bind_group_layouts); // Update the buffer binding sizes that are required by shaders. for (payload, late_group) in self.payloads.iter_mut().zip(late_sized_buffer_groups) { @@ -363,11 +371,9 @@ impl Binder { if let Some(old) = old_id_opt { // root constants are the base compatibility property if old.push_constant_ranges != new.push_constant_ranges { - bind_range.start = 0; + self.manager.update_start_index(0); } } - - (bind_range.start, &self.payloads[bind_range]) } pub(super) fn assign_group<'a>( @@ -375,7 +381,7 @@ impl Binder { index: usize, bind_group: &Arc<BindGroup>, offsets: &[wgt::DynamicOffset], - ) -> &'a [EntryPayload] { + ) { let payload = &mut self.payloads[index]; payload.group = Some(bind_group.clone()); payload.dynamic_offsets.clear(); @@ -401,8 +407,20 @@ impl Binder { } } - let bind_range = self.manager.assign(index, bind_group.layout.clone()); - &self.payloads[bind_range] + self.manager.assign(index, bind_group.layout.clone()); + } + + /// Get the range of entries that needs to be rebound, and clears it. + pub(super) fn take_rebind_range(&mut self) -> Range<usize> { + self.manager.take_rebind_range() + } + + pub(super) fn entries( + &self, + range: Range<usize>, + ) -> impl ExactSizeIterator<Item = (usize, &'_ EntryPayload)> + '_ { + let payloads = &self.payloads[range.clone()]; + zip(range, payloads) } pub(super) fn list_active<'a>(&'a self) -> impl Iterator<Item = &'a Arc<BindGroup>> + 'a { diff --git a/third_party/rust/wgpu-core/src/command/compute.rs b/third_party/rust/wgpu-core/src/command/compute.rs @@ -7,7 +7,10 @@ use wgt::{ use alloc::{borrow::Cow, boxed::Box, sync::Arc, vec::Vec}; use core::{convert::Infallible, fmt, str}; -use crate::{api_log, binding_model::BindError, resource::RawResourceAccess}; +use crate::{ + api_log, binding_model::BindError, command::pass::flush_bindings_helper, + resource::RawResourceAccess, +}; use crate::{ binding_model::{LateMinBufferBindingSizeMismatch, PushConstantUploadError}, command::{ @@ -280,35 +283,69 @@ impl<'scope, 'snatch_guard, 'cmd_enc> State<'scope, 'snatch_guard, 'cmd_enc> { } } - // `extra_buffer` is there to represent the indirect buffer that is also - // part of the usage scope. - fn flush_states( + /// Flush binding state in preparation for a dispatch. + /// + /// # Differences between render and compute passes + /// + /// There are differences between the `flush_bindings` implementations for + /// render and compute passes, because render passes have a single usage + /// scope for the entire pass, and compute passes have a separate usage + /// scope for each dispatch. + /// + /// For compute passes, bind groups are merged into a fresh usage scope + /// here, not into the pass usage scope within calls to `set_bind_group`. As + /// specified by WebGPU, for compute passes, we merge only the bind groups + /// that are actually used by the pipeline, unlike render passes, which + /// merge every bind group that is ever set, even if it is not ultimately + /// used by the pipeline. + /// + /// For compute passes, we call `drain_barriers` here, because barriers may + /// be needed before each dispatch if a previous dispatch had a conflicting + /// usage. For render passes, barriers are emitted once at the start of the + /// render pass. + /// + /// # Indirect buffer handling + /// + /// For indirect dispatches without validation, pass both `indirect_buffer` + /// and `indirect_buffer_index_if_not_validating`. The indirect buffer will + /// be added to the usage scope and the tracker. + /// + /// For indirect dispatches with validation, pass only `indirect_buffer`. + /// The indirect buffer will be added to the usage scope to detect usage + /// conflicts. The indirect buffer does not need to be added to the tracker; + /// the indirect validation code handles transitions manually. + fn flush_bindings( &mut self, - indirect_buffer: Option<TrackerIndex>, - ) -> Result<(), ResourceUsageCompatibilityError> { - for bind_group in self.pass.binder.list_active() { - unsafe { self.pass.scope.merge_bind_group(&bind_group.used)? }; - // Note: stateless trackers are not merged: the lifetime reference - // is held to the bind group itself. - } + indirect_buffer: Option<&Arc<Buffer>>, + indirect_buffer_index_if_not_validating: Option<TrackerIndex>, + ) -> Result<(), ComputePassErrorInner> { + let mut scope = self.pass.base.device.new_usage_scope(); for bind_group in self.pass.binder.list_active() { - unsafe { - self.intermediate_trackers - .set_and_remove_from_usage_scope_sparse(&mut self.pass.scope, &bind_group.used) - } + unsafe { scope.merge_bind_group(&bind_group.used)? }; } - // Add the state of the indirect buffer if it hasn't been hit before. - unsafe { - self.intermediate_trackers + // When indirect validation is turned on, our actual use of the buffer + // is `STORAGE_READ_ONLY`, but for usage scope validation, we still want + // to treat it as indirect so we can detect the conflicts prescribed by + // WebGPU. The usage scope we construct here never leaves this function + // (and is not used to populate a tracker), so it's fine to do this. + if let Some(buffer) = indirect_buffer { + scope .buffers - .set_and_remove_from_usage_scope_sparse( - &mut self.pass.scope.buffers, - indirect_buffer, - ); + .merge_single(buffer, wgt::BufferUses::INDIRECT)?; } + // Add the state of the indirect buffer, if needed (see above). + self.intermediate_trackers + .buffers + .set_multiple(&mut scope.buffers, indirect_buffer_index_if_not_validating); + + flush_bindings_helper(&mut self.pass, |bind_group| { + self.intermediate_trackers + .set_from_bind_group(&mut scope, &bind_group.used) + })?; + CommandEncoder::drain_barriers( self.pass.base.raw_encoder, &mut self.intermediate_trackers, @@ -828,7 +865,7 @@ fn set_pipeline( } // Rebind resources - pass::rebind_resources::<ComputePassErrorInner, _>( + pass::change_pipeline_layout::<ComputePassErrorInner, _>( &mut state.pass, &pipeline.layout, &pipeline.late_sized_buffer_groups, @@ -857,7 +894,7 @@ fn dispatch(state: &mut State, groups: [u32; 3]) -> Result<(), ComputePassErrorI state.is_ready()?; - state.flush_states(None)?; + state.flush_bindings(None, None)?; let groups_size_limit = state .pass @@ -1058,7 +1095,7 @@ fn dispatch_indirect( }]); } - state.flush_states(None)?; + state.flush_bindings(Some(&buffer), None)?; unsafe { state .pass @@ -1067,14 +1104,8 @@ fn dispatch_indirect( .dispatch_indirect(params.dst_buffer, 0); } } else { - state - .pass - .scope - .buffers - .merge_single(&buffer, wgt::BufferUses::INDIRECT)?; - use crate::resource::Trackable; - state.flush_states(Some(buffer.tracker_index()))?; + state.flush_bindings(Some(&buffer), Some(buffer.tracker_index()))?; let buf_raw = buffer.try_raw(state.pass.base.snatch_guard)?; unsafe { diff --git a/third_party/rust/wgpu-core/src/command/mod.rs b/third_party/rust/wgpu-core/src/command/mod.rs @@ -177,6 +177,7 @@ impl CommandEncoderStatus { ) -> Result<(), EncoderStateError> { match self { Self::Recording(cmd_buf_data) => { + cmd_buf_data.encoder.api.set(EncodingApi::Wgpu); match f() { Ok(cmd) => cmd_buf_data.commands.push(cmd), Err(err) => { @@ -220,10 +221,12 @@ impl CommandEncoderStatus { E: Clone + Into<CommandEncoderError>, >( &mut self, + api: EncodingApi, f: F, ) -> Result<(), EncoderStateError> { match self { - Self::Recording(_) => { + Self::Recording(inner) => { + inner.encoder.api.set(api); RecordingGuard { inner: self }.record(f); Ok(()) } @@ -256,7 +259,10 @@ impl CommandEncoderStatus { f: F, ) -> T { match self { - Self::Recording(_) => RecordingGuard { inner: self }.record_as_hal_mut(f), + Self::Recording(inner) => { + inner.encoder.api.set(EncodingApi::Raw); + RecordingGuard { inner: self }.record_as_hal_mut(f) + } Self::Locked(_) => { self.invalidate(EncoderStateError::Locked); f(None) @@ -358,8 +364,11 @@ impl CommandEncoderStatus { // state or an error, to be transferred to the command buffer. match mem::replace(self, Self::Consumed) { Self::Recording(inner) => { - // Nothing should have opened the encoder yet. - assert!(!inner.encoder.is_open); + // Raw encoding leaves the encoder open in `command_encoder_as_hal_mut`. + // Otherwise, nothing should have opened it yet. + if inner.encoder.api != EncodingApi::Raw { + assert!(!inner.encoder.is_open); + } Self::Finished(inner) } Self::Consumed | Self::Finished(_) => Self::Error(EncoderStateError::Ended.into()), @@ -480,6 +489,38 @@ impl Drop for CommandEncoder { } } +/// The encoding API being used with a `CommandEncoder`. +/// +/// Mixing APIs on the same encoder is not allowed. +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum EncodingApi { + // The regular wgpu encoding APIs are being used. + Wgpu, + + // The raw hal encoding API is being used. + Raw, + + // Neither encoding API has been called yet. + Undecided, + + // The encoder is used internally by wgpu. + InternalUse, +} + +impl EncodingApi { + pub(crate) fn set(&mut self, api: EncodingApi) { + match *self { + EncodingApi::Undecided => { + *self = api; + } + self_api if self_api != api => { + panic!("Mixing the wgpu encoding API with the raw encoding API is not permitted"); + } + _ => {} + } + } +} + /// A raw [`CommandEncoder`][rce], and the raw [`CommandBuffer`][rcb]s built from it. /// /// Each wgpu-core [`CommandBuffer`] owns an instance of this type, which is @@ -528,6 +569,13 @@ pub(crate) struct InnerCommandEncoder { /// [`wgpu_hal::CommandEncoder`]: hal::CommandEncoder pub(crate) is_open: bool, + /// Tracks which API is being used to encode commands. + /// + /// Mixing the wgpu encoding API with access to the raw hal encoder via + /// `as_hal_mut` is not supported. this field tracks which API is being used + /// in order to detect and reject invalid usage. + pub(crate) api: EncodingApi, + pub(crate) label: String, } @@ -790,6 +838,7 @@ impl CommandEncoder { list: Vec::new(), device: device.clone(), is_open: false, + api: EncodingApi::Undecided, label: label.to_string(), }, trackers: Tracker::new(), @@ -916,6 +965,12 @@ impl CommandEncoder { let snatch_guard = self.device.snatchable_lock.read(); let mut debug_scope_depth = 0; + if cmd_buf_data.encoder.api == EncodingApi::Raw { + // Should have panicked on the first call that switched APIs, + // but lets be sure. + assert!(cmd_buf_data.commands.is_empty()); + } + let mut commands = mem::take(&mut cmd_buf_data.commands); for command in commands.drain(..) { if matches!( diff --git a/third_party/rust/wgpu-core/src/command/pass.rs b/third_party/rust/wgpu-core/src/command/pass.rs @@ -7,7 +7,6 @@ use crate::command::memory_init::SurfacesInDiscardState; use crate::command::{DebugGroupError, QueryResetMap, QueryUseError}; use crate::device::{Device, DeviceError, MissingFeatures}; use crate::pipeline::LateSizedBufferGroup; -use crate::ray_tracing::AsAction; use crate::resource::{DestroyedResourceError, Labeled, ParentDevice, QuerySet}; use crate::track::{ResourceUsageCompatibilityError, UsageScope}; use crate::{api_log, binding_model}; @@ -100,12 +99,15 @@ where ); state.dynamic_offset_count += num_dynamic_offsets; - if bind_group.is_none() { + let Some(bind_group) = bind_group else { // TODO: Handle bind_group None. return Ok(()); - } + }; - let bind_group = bind_group.unwrap(); + // Add the bind group to the tracker. This is done for both compute and + // render passes, and is used to fail submission of the command buffer if + // any resource in any of the bind groups has been destroyed, whether or + // not the bind group is actually used by the pipeline. let bind_group = state.base.tracker.bind_groups.insert_single(bind_group); bind_group.same_device(device)?; @@ -113,7 +115,9 @@ where bind_group.validate_dynamic_bindings(index, &state.temp_offsets)?; if merge_bind_groups { - // merge the resource tracker in + // Merge the bind group's resources into the tracker. We only do this + // for render passes. For compute passes it is done per dispatch in + // [`flush_bindings`]. unsafe { state.scope.merge_bind_group(&bind_group.used)?; } @@ -122,57 +126,76 @@ where // is held to the bind group itself. state - .base - .buffer_memory_init_actions - .extend(bind_group.used_buffer_ranges.iter().filter_map(|action| { - action - .buffer - .initialization_status - .read() - .check_action(action) - })); - for action in bind_group.used_texture_ranges.iter() { - state.pending_discard_init_fixups.extend( - state - .base - .texture_memory_actions - .register_init_action(action), + .binder + .assign_group(index as usize, bind_group, &state.temp_offsets); + + Ok(()) +} + +/// Helper for `flush_bindings` implementing the portions that are the same for +/// compute and render passes. +pub(super) fn flush_bindings_helper<F>( + state: &mut PassState, + mut f: F, +) -> Result<(), DestroyedResourceError> +where + F: FnMut(&Arc<BindGroup>), +{ + for bind_group in state.binder.list_active() { + f(bind_group); + + state.base.buffer_memory_init_actions.extend( + bind_group.used_buffer_ranges.iter().filter_map(|action| { + action + .buffer + .initialization_status + .read() + .check_action(action) + }), ); - } + for action in bind_group.used_texture_ranges.iter() { + state.pending_discard_init_fixups.extend( + state + .base + .texture_memory_actions + .register_init_action(action), + ); + } - let used_resource = bind_group - .used - .acceleration_structures - .into_iter() - .map(|tlas| AsAction::UseTlas(tlas.clone())); + let used_resource = bind_group + .used + .acceleration_structures + .into_iter() + .map(|tlas| crate::ray_tracing::AsAction::UseTlas(tlas.clone())); - state.base.as_actions.extend(used_resource); + state.base.as_actions.extend(used_resource); + } - let pipeline_layout = state.binder.pipeline_layout.clone(); - let entries = state - .binder - .assign_group(index as usize, bind_group, &state.temp_offsets); - if !entries.is_empty() && pipeline_layout.is_some() { - let pipeline_layout = pipeline_layout.as_ref().unwrap().raw(); - for (i, e) in entries.iter().enumerate() { - if let Some(group) = e.group.as_ref() { - let raw_bg = group.try_raw(state.base.snatch_guard)?; - unsafe { - state.base.raw_encoder.set_bind_group( - pipeline_layout, - index + i as u32, - Some(raw_bg), - &e.dynamic_offsets, - ); + let range = state.binder.take_rebind_range(); + let entries = state.binder.entries(range); + match state.binder.pipeline_layout.as_ref() { + Some(pipeline_layout) if entries.len() != 0 => { + for (i, e) in entries { + if let Some(group) = e.group.as_ref() { + let raw_bg = group.try_raw(state.base.snatch_guard)?; + unsafe { + state.base.raw_encoder.set_bind_group( + pipeline_layout.raw(), + i as u32, + Some(raw_bg), + &e.dynamic_offsets, + ); + } } } } + _ => {} } + Ok(()) } -/// After a pipeline has been changed, resources must be rebound -pub(crate) fn rebind_resources<E, F: FnOnce()>( +pub(super) fn change_pipeline_layout<E, F: FnOnce()>( state: &mut PassState, pipeline_layout: &Arc<binding_model::PipelineLayout>, late_sized_buffer_groups: &[LateSizedBufferGroup], @@ -189,24 +212,9 @@ where .unwrap() .is_equal(pipeline_layout) { - let (start_index, entries) = state + state .binder .change_pipeline_layout(pipeline_layout, late_sized_buffer_groups); - if !entries.is_empty() { - for (i, e) in entries.iter().enumerate() { - if let Some(group) = e.group.as_ref() { - let raw_bg = group.try_raw(state.base.snatch_guard)?; - unsafe { - state.base.raw_encoder.set_bind_group( - pipeline_layout.raw(), - start_index as u32 + i as u32, - Some(raw_bg), - &e.dynamic_offsets, - ); - } - } - } - } f(); diff --git a/third_party/rust/wgpu-core/src/command/ray_tracing.rs b/third_party/rust/wgpu-core/src/command/ray_tracing.rs @@ -87,6 +87,7 @@ impl Global { let mut cmd_buf_data = cmd_enc.data.lock(); cmd_buf_data.with_buffer( + crate::command::EncodingApi::Raw, |cmd_buf_data| -> Result<(), BuildAccelerationStructureError> { let device = &cmd_enc.device; device.check_is_valid()?; diff --git a/third_party/rust/wgpu-core/src/command/render.rs b/third_party/rust/wgpu-core/src/command/render.rs @@ -11,7 +11,9 @@ use wgt::{ }; use crate::command::{ - encoder::EncodingState, pass, pass_base, pass_try, validate_and_begin_occlusion_query, + encoder::EncodingState, + pass::{self, flush_bindings_helper}, + pass_base, pass_try, validate_and_begin_occlusion_query, validate_and_begin_pipeline_statistics_query, ArcCommand, DebugGroupError, EncoderStateError, InnerCommandEncoder, PassStateError, TimestampWritesError, }; @@ -571,6 +573,15 @@ impl<'scope, 'snatch_guard, 'cmd_enc> State<'scope, 'snatch_guard, 'cmd_enc> { } } + /// Flush binding state in preparation for a draw call. + /// + /// See the compute pass version for an explanation of some ways that + /// `flush_bindings` differs between the two types of passes. + fn flush_bindings(&mut self) -> Result<(), RenderPassErrorInner> { + flush_bindings_helper(&mut self.pass, |_| {})?; + Ok(()) + } + /// Reset the `RenderBundle`-related states. fn reset_bundle(&mut self) { self.pass.binder.reset(); @@ -1241,8 +1252,11 @@ impl RenderPassInfo { ) -> Result<(), ColorAttachmentError> { let mut insert = |slice| { let mip_level = view.desc.range.base_mip_level; - if attachment_set.insert((view.tracking_data.tracker_index(), mip_level, slice)) - { + if attachment_set.insert(( + view.parent.tracking_data.tracker_index(), + mip_level, + slice, + )) { Ok(()) } else { Err(ColorAttachmentError::SubresourceOverlap { @@ -2373,7 +2387,7 @@ fn set_pipeline( } // Rebind resource - pass::rebind_resources::<RenderPassErrorInner, _>( + pass::change_pipeline_layout::<RenderPassErrorInner, _>( &mut state.pass, &pipeline.layout, &pipeline.late_sized_buffer_groups, @@ -2607,10 +2621,11 @@ fn draw( instance_count: u32, first_vertex: u32, first_instance: u32, -) -> Result<(), DrawError> { +) -> Result<(), RenderPassErrorInner> { api_log!("RenderPass::draw {vertex_count} {instance_count} {first_vertex} {first_instance}"); state.is_ready(DrawCommandFamily::Draw)?; + state.flush_bindings()?; state .vertex @@ -2641,10 +2656,11 @@ fn draw_indexed( first_index: u32, base_vertex: i32, first_instance: u32, -) -> Result<(), DrawError> { +) -> Result<(), RenderPassErrorInner> { api_log!("RenderPass::draw_indexed {index_count} {instance_count} {first_index} {base_vertex} {first_instance}"); state.is_ready(DrawCommandFamily::DrawIndexed)?; + state.flush_bindings()?; let last_index = first_index as u64 + index_count as u64; let index_limit = state.index.limit; @@ -2652,7 +2668,8 @@ fn draw_indexed( return Err(DrawError::IndexBeyondLimit { last_index, index_limit, - }); + } + .into()); } state .vertex @@ -2678,10 +2695,11 @@ fn draw_mesh_tasks( group_count_x: u32, group_count_y: u32, group_count_z: u32, -) -> Result<(), DrawError> { +) -> Result<(), RenderPassErrorInner> { api_log!("RenderPass::draw_mesh_tasks {group_count_x} {group_count_y} {group_count_z}"); state.is_ready(DrawCommandFamily::DrawMeshTasks)?; + state.flush_bindings()?; let groups_size_limit = state .pass @@ -2699,7 +2717,8 @@ fn draw_mesh_tasks( current: [group_count_x, group_count_y, group_count_z], limit: groups_size_limit, max_total: max_groups, - }); + } + .into()); } unsafe { @@ -2729,6 +2748,7 @@ fn multi_draw_indirect( ); state.is_ready(family)?; + state.flush_bindings()?; state .pass @@ -2910,6 +2930,7 @@ fn multi_draw_indirect_count( ); state.is_ready(family)?; + state.flush_bindings()?; let stride = get_stride_of_indirect_args(family); diff --git a/third_party/rust/wgpu-core/src/device/queue.rs b/third_party/rust/wgpu-core/src/device/queue.rs @@ -406,6 +406,7 @@ impl PendingWrites { list: vec![cmd_buf], device: device.clone(), is_open: false, + api: crate::command::EncodingApi::InternalUse, label: "(wgpu internal) PendingWrites command encoder".into(), }, trackers: Tracker::new(), @@ -1798,6 +1799,12 @@ fn validate_command_buffer( } } } + { + profiling::scope!("bind groups"); + for bind_group in &cmd_buf_data.trackers.bind_groups { + bind_group.try_raw(snatch_guard)?; + } + } if let Err(e) = cmd_buf_data.validate_acceleration_structure_actions(snatch_guard, command_index_guard) diff --git a/third_party/rust/wgpu-core/src/device/resource.rs b/third_party/rust/wgpu-core/src/device/resource.rs @@ -1806,7 +1806,6 @@ impl Device { samples: texture.desc.sample_count, selector, label: desc.label.to_string(), - tracking_data: TrackingData::new(self.tracker_indices.texture_views.clone()), }; let view = Arc::new(view); diff --git a/third_party/rust/wgpu-core/src/resource.rs b/third_party/rust/wgpu-core/src/resource.rs @@ -816,7 +816,7 @@ impl Buffer { range, host, } => { - #[allow(clippy::collapsible_if)] + #[cfg_attr(not(feature = "trace"), expect(clippy::collapsible_if))] if host == HostMap::Write { #[cfg(feature = "trace")] if let Some(ref mut trace) = *device.trace.lock() { @@ -1654,7 +1654,6 @@ pub struct TextureView { pub(crate) selector: TextureSelector, /// The `label` from the descriptor used to create the resource. pub(crate) label: String, - pub(crate) tracking_data: TrackingData, } impl Drop for TextureView { @@ -1821,7 +1820,6 @@ crate::impl_resource_type!(TextureView); crate::impl_labeled!(TextureView); crate::impl_parent_device!(TextureView); crate::impl_storage_item!(TextureView); -crate::impl_trackable!(TextureView); pub type ExternalTextureDescriptor<'a> = wgt::ExternalTextureDescriptor<Label<'a>>; diff --git a/third_party/rust/wgpu-core/src/track/buffer.rs b/third_party/rust/wgpu-core/src/track/buffer.rs @@ -303,7 +303,7 @@ impl BufferTracker { } /// Extend the vectors to let the given index be valid. - fn allow_index(&mut self, index: usize) { + pub fn allow_index(&mut self, index: usize) { if index >= self.start.len() { self.set_size(index + 1); } @@ -443,11 +443,11 @@ impl BufferTracker { /// a given iterator of ids as a source of which IDs to look at. /// All the IDs must have first been added to the usage scope. /// - /// # Safety + /// # Panics /// - /// [`Self::set_size`] must be called with the maximum possible Buffer ID before this - /// method is called. - pub unsafe fn set_and_remove_from_usage_scope_sparse( + /// If a resource identified by `index_source` is not found in the usage + /// scope. + pub fn set_multiple( &mut self, scope: &mut BufferUsageScope, index_source: impl IntoIterator<Item = TrackerIndex>, @@ -461,10 +461,12 @@ impl BufferTracker { let index = index.as_usize(); scope.tracker_assert_in_bounds(index); - - if unsafe { !scope.metadata.contains_unchecked(index) } { - continue; + unsafe { + assert!(scope.metadata.contains_unchecked(index)); } + + // SAFETY: we checked that the index is in bounds for the scope, and + // called `set_size` to ensure it is valid for `self`. unsafe { self.insert_or_barrier_update( index, @@ -477,8 +479,6 @@ impl BufferTracker { }, ) }; - - unsafe { scope.metadata.remove(index) }; } } diff --git a/third_party/rust/wgpu-core/src/track/metadata.rs b/third_party/rust/wgpu-core/src/track/metadata.rs @@ -130,14 +130,6 @@ impl<T: Clone> ResourceMetadata<T> { }; iterate_bitvec_indices(&self.owned) } - - /// Remove the resource with the given index from the set. - pub(super) unsafe fn remove(&mut self, index: usize) { - unsafe { - *self.resources.get_unchecked_mut(index) = None; - } - self.owned.set(index, false); - } } /// A source of resource metadata. diff --git a/third_party/rust/wgpu-core/src/track/mod.rs b/third_party/rust/wgpu-core/src/track/mod.rs @@ -224,7 +224,6 @@ impl SharedTrackerIndexAllocator { pub(crate) struct TrackerIndexAllocators { pub buffers: Arc<SharedTrackerIndexAllocator>, pub textures: Arc<SharedTrackerIndexAllocator>, - pub texture_views: Arc<SharedTrackerIndexAllocator>, pub external_textures: Arc<SharedTrackerIndexAllocator>, pub samplers: Arc<SharedTrackerIndexAllocator>, pub bind_groups: Arc<SharedTrackerIndexAllocator>, @@ -241,7 +240,6 @@ impl TrackerIndexAllocators { TrackerIndexAllocators { buffers: Arc::new(SharedTrackerIndexAllocator::new()), textures: Arc::new(SharedTrackerIndexAllocator::new()), - texture_views: Arc::new(SharedTrackerIndexAllocator::new()), external_textures: Arc::new(SharedTrackerIndexAllocator::new()), samplers: Arc::new(SharedTrackerIndexAllocator::new()), bind_groups: Arc::new(SharedTrackerIndexAllocator::new()), @@ -614,12 +612,32 @@ impl DeviceTracker { /// A full double sided tracker used by CommandBuffers. pub(crate) struct Tracker { + /// Buffers used within this command buffer. + /// + /// For compute passes, this only includes buffers actually used by the + /// pipeline (contrast with the `bind_groups` member). pub buffers: BufferTracker, + + /// Textures used within this command buffer. + /// + /// For compute passes, this only includes textures actually used by the + /// pipeline (contrast with the `bind_groups` member). pub textures: TextureTracker, + pub blas_s: BlasTracker, pub tlas_s: StatelessTracker<resource::Tlas>, pub views: StatelessTracker<resource::TextureView>, + + /// Contains all bind groups that were passed in any call to + /// `set_bind_group` on the encoder. + /// + /// WebGPU requires that submission fails if any resource in any of these + /// bind groups is destroyed, even if the resource is not actually used by + /// the pipeline (e.g. because the pipeline does not use the bound slot, or + /// because the bind group was replaced by a subsequent call to + /// `set_bind_group`). pub bind_groups: StatelessTracker<binding_model::BindGroup>, + pub compute_pipelines: StatelessTracker<pipeline::ComputePipeline>, pub render_pipelines: StatelessTracker<pipeline::RenderPipeline>, pub bundles: StatelessTracker<command::RenderBundle>, @@ -643,8 +661,7 @@ impl Tracker { } /// Iterates through all resources in the given bind group and adopts - /// the state given for those resources in the UsageScope. It also - /// removes all touched resources from the usage scope. + /// the state given for those resources in the UsageScope. /// /// If a transition is needed to get the resources into the needed /// state, those transitions are stored within the tracker. A @@ -652,32 +669,21 @@ impl Tracker { /// [`TextureTracker::drain_transitions`] is needed to get those transitions. /// /// This is a really funky method used by Compute Passes to generate - /// barriers after a call to dispatch without needing to iterate - /// over all elements in the usage scope. We use each the - /// bind group as a source of which IDs to look at. The bind groups - /// must have first been added to the usage scope. + /// barriers for each dispatch. We use the bind group as a source of which + /// IDs to look at. /// /// Only stateful things are merged in here, all other resources are owned /// indirectly by the bind group. /// - /// # Safety + /// # Panics /// - /// The maximum ID given by each bind group resource must be less than the - /// value given to `set_size` - pub unsafe fn set_and_remove_from_usage_scope_sparse( - &mut self, - scope: &mut UsageScope, - bind_group: &BindGroupStates, - ) { - unsafe { - self.buffers.set_and_remove_from_usage_scope_sparse( - &mut scope.buffers, - bind_group.buffers.used_tracker_indices(), - ) - }; - unsafe { - self.textures - .set_and_remove_from_usage_scope_sparse(&mut scope.textures, &bind_group.views) - }; + /// If a resource in the `bind_group` is not found in the usage scope. + pub fn set_from_bind_group(&mut self, scope: &mut UsageScope, bind_group: &BindGroupStates) { + self.buffers.set_multiple( + &mut scope.buffers, + bind_group.buffers.used_tracker_indices(), + ); + self.textures + .set_multiple(&mut scope.textures, &bind_group.views); } } diff --git a/third_party/rust/wgpu-core/src/track/texture.rs b/third_party/rust/wgpu-core/src/track/texture.rs @@ -612,11 +612,10 @@ impl TextureTracker { /// bind group as a source of which IDs to look at. The bind groups /// must have first been added to the usage scope. /// - /// # Safety + /// # Panics /// - /// [`Self::set_size`] must be called with the maximum possible Buffer ID before this - /// method is called. - pub unsafe fn set_and_remove_from_usage_scope_sparse( + /// If a resource in `bind_group_state` is not found in the usage scope. + pub fn set_multiple( &mut self, scope: &mut TextureUsageScope, bind_group_state: &TextureViewBindGroupState, @@ -628,12 +627,15 @@ impl TextureTracker { for (view, _) in bind_group_state.views.iter() { let index = view.parent.tracker_index().as_usize(); - scope.tracker_assert_in_bounds(index); - if unsafe { !scope.metadata.contains_unchecked(index) } { - continue; + scope.tracker_assert_in_bounds(index); + unsafe { + assert!(scope.metadata.contains_unchecked(index)); } + let texture_selector = &view.parent.full_range; + // SAFETY: we checked that the index is in bounds for the scope, and + // called `set_size` to ensure it is valid for `self`. unsafe { insert_or_barrier_update( texture_selector, @@ -649,8 +651,6 @@ impl TextureTracker { &mut self.temp, ) }; - - unsafe { scope.metadata.remove(index) }; } } } diff --git a/third_party/rust/wgpu-hal/.cargo-checksum.json b/third_party/rust/wgpu-hal/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"3bb12274c64bd1630ac6a7743a9d520f7fa1815de18119ce564eac6f09628dae","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"cf9e84804a635e4a8a9fefc596be9da6bf7354dde0d105e27d56a12cb20dd8e3","build.rs":"e720cf033fecfdc7e4f34010af2a86340c99b8aaabf69559d32391521e25de6c","examples/halmark/main.rs":"4861eedb91ca024ede5b18e6db5a861b03f21108de9566bcc4d71bb5720df62a","examples/halmark/shader.wgsl":"26c256ec36d6f0e9a1647431ca772766bee4382d64eaa718ba7b488dcfb6bcca","examples/raw-gles.em.html":"70fbe68394a1a4522192de1dcfaf7d399f60d7bdf5de70b708f9bb0417427546","examples/raw-gles.rs":"5f4cfa893e99dfec559803bc513457793dcc549154c604385fb287f99a3ea675","examples/ray-traced-triangle/main.rs":"8cbfdf3e4cd29d23e2c9fd543a36976d849a7161670e094baeda390db9306b57","examples/ray-traced-triangle/shader.wgsl":"cc10caf92746724a71f6dd0dbc3a71e57b37c7d1d83278556805a535c0728a9d","src/auxil/dxgi/conv.rs":"3ca856c93916c0be714924ff077aa1f366be5557cc164210154d252e7e49fb77","src/auxil/dxgi/exception.rs":"7138831914a59dc7cbb71512068e9134144b9bc8f43312682edccb0b3ee24a48","src/auxil/dxgi/factory.rs":"81e479e550a09127384d8080e43d5f5bae8e8dda6082fe41a87bea8f872eb0f1","src/auxil/dxgi/mod.rs":"e6c5cc3b73bb97742135d6f35308c42f0822304764978fb8dabb0e848863352a","src/auxil/dxgi/name.rs":"ff942da0da1a497ee4d2be21604f7ba9fae963588105b3d1f63aae1a0c536e82","src/auxil/dxgi/result.rs":"e7a9dfb48d8ef8cbe58b28b1ace5caf7818ee50505ba3220bb0509e66ae469b7","src/auxil/dxgi/time.rs":"b6911800be3873cbe277b2534b3839c6f005f3d9a09341aace4752e207d584a2","src/auxil/mod.rs":"540b9250d9f0e0af709245ce1e284eaca15b27d47550b0ebba2a512da1666c48","src/auxil/renderdoc.rs":"94898f747476e269b2910d42e769f2bbb6be0cb466ad92f9d381f55799d2756e","src/dx12/adapter.rs":"cb365ea13f2ef8ed19d0f9724058be365adacf8d7b42d84909566442edf81a12","src/dx12/command.rs":"9aa909aaa12ab9bf09e73f26b7197eee620fe6e9b742b3df90dc352e612d874d","src/dx12/conv.rs":"a320fca45fd1990762ff10dad1d8bbb29833d9b693b0887bf2898021a737612c","src/dx12/dcomp.rs":"53bde57557d80e571257f76933d66475a765e063d8b635675f9dd2563039a4c5","src/dx12/descriptor.rs":"ccd4feb6bd3e0a0ffc26142f8a81fca26180d0f50146b6eb2f670cbc89ea7064","src/dx12/device.rs":"592d9336e807e5bbafe204923e6546547160eb660ade038f5707cbd3cb9306fe","src/dx12/instance.rs":"75bddc3807756c691ede3ff944915e443a8bb2b5ac6d0d99babd4ed50d1e3fb9","src/dx12/mod.rs":"592a110924259e8754a919bfbc3efda1292f7416a447d585fe56fe910e6225d0","src/dx12/sampler.rs":"d18d243efe4fa667dbab5b75b5b91d47de94d441976d9f44a46a2b49ba38473d","src/dx12/shader_compilation.rs":"c901a797c69e08c8c0ec93ea37c5f31084eb21c26c7d703d7031f987f2243509","src/dx12/suballocation.rs":"014e9ec4a94519b877ad3adc2ea5d182aa6cdf502248009d28dc5833a9edb93c","src/dx12/types.rs":"3fc7619fc09303eb3c936d4ded6889f94ce9e8b9aa62742ce900baa1b1e1cca7","src/dx12/view.rs":"79b3f7331d9795e60f9b53023cbf0df46c3a05b1e8bd5c7bcca8acdd235b124f","src/dynamic/adapter.rs":"e93f7d082a3950c9e8ccff8a631d251c7598b4b25dda9fe6347dadfa3ba07829","src/dynamic/command.rs":"9635dea15d8a885011d2b8b6b9cc5ffe2126cc3f141f47f7aaf46e1f201abea9","src/dynamic/device.rs":"f77c2406f2c42fed77fce29d731b490ac615dae2c5ddb9e01fee4f8ece1b3a34","src/dynamic/instance.rs":"7b515c201e1ca24f24439544dbfa1d19ea1412a4f89bd803e009aed13b021e55","src/dynamic/mod.rs":"2577d3aef6441f5b42b427d80ba3cf7fee2a97b2fc12335a1fba383e8a79a9b2","src/dynamic/queue.rs":"d76abb4797e90253386d24584f186dbe1909e772560156b2e891fa043cfefbdc","src/dynamic/surface.rs":"4328c2fe86931f50aa00ac3d6982d0879b774eebf7a507903d1b1898c891fb4d","src/gles/adapter.rs":"1508d5a6eb1d616e085613c6136b97841b64a12b1a4fc4ccf07fd5bf113cbe2e","src/gles/command.rs":"c13d50eeb1a4aaab367a3b4a7fe6c25c8c73377e68d0d8cc43791d1a7202d23b","src/gles/conv.rs":"6ffb8688de38c2fdd956571dd549535259e2811225adc1df02509e8e642ee775","src/gles/device.rs":"7a8679a4e990bb237cab961b0a2dbdbf5414c57b943048f63f7ddb189932db58","src/gles/egl.rs":"2509e5a5c422e213a3050d852d70a13dfc06737c829a8fc169f45791d8e27fed","src/gles/emscripten.rs":"316d2bb6f2a4bb126dbe68a223f7393399080d116b61c39504454acdf4f9cfaf","src/gles/fence.rs":"a2e7b6abd2fd4a438de90b9f58452c64cd8bba83999c90fd6390e3db128b9c6c","src/gles/mod.rs":"b6d80623eaf58719bafac26875fd0f75f8546b02c58b96a75d703e3a350e31df","src/gles/queue.rs":"5152f5698a2998a55125d13f04788b960726fd4b49ae4d2ec8f9642c8825c7fd","src/gles/shaders/clear.frag":"9133ed8ed97d3641fbb6b5f5ea894a3554c629ccc1b80a5fc9221d7293aa1954","src/gles/shaders/clear.vert":"a543768725f4121ff2e9e1fb5b00644931e9d6f2f946c0ef01968afb5a135abd","src/gles/shaders/srgb_present.frag":"dd9a43c339a2fa4ccf7f6a1854c6f400cabf271a7d5e9230768e9f39d47f3ff5","src/gles/shaders/srgb_present.vert":"6e85d489403d80b81cc94790730bb53b309dfc5eeede8f1ea3412a660f31d357","src/gles/web.rs":"cb5940bf7b2381811675011b640040274f407a7d1908d0f82c813d6a9d3b00f7","src/gles/wgl.rs":"ed0cee8844447b461ed5340f81eb55bb051ceaac67a5768985318ceac133cbe4","src/lib.rs":"b5354488fbffb0ae575700c8f4addec0d8466a402df4eb4ab338a41aae9b683b","src/metal/adapter.rs":"75ddf04c2005238d69e4eed5ac86ea43644089eccf23b39a77ab94753e85f61c","src/metal/command.rs":"20bf613b67ccc043de6e8ad3f3d332bbb678cc06c1593cf1880083de090574ba","src/metal/conv.rs":"85e8168be334ba24d109575a0a7e91b2ad3459403173e99e5cdd5d977cc5c18f","src/metal/device.rs":"a293d260b5618b8b8fcb0137c51302989a7982f3db06ca051b5fe898266776f7","src/metal/layer_observer.rs":"8370a6e443d01739b951b8538ee719a03b69fc0cbac92c748db418fbcc8837b5","src/metal/mod.rs":"e30c545106732670d9733090d4de543021b38638cf0ee89ba2ba9d8246ea218a","src/metal/surface.rs":"22dc6da86ac74b044b6498764920f0467bb5060f4dffb156b6c1e260db0c48b7","src/metal/time.rs":"c32d69f30e846dfcc0e39e01097fb80df63b2bebb6586143bb62494999850246","src/noop/buffer.rs":"b5edc5e2c52287dfbd4f619e36097ac233041eb9ab287b889b6ee477d740fa09","src/noop/command.rs":"3de99a1a260cfea2e6ca2e76797c1923cc26b069b08362c38798ce27cdc75543","src/noop/mod.rs":"47b663d15f1ceb6d77a16e91549bc9634dfd2cfaf58c9b945639fb36c364f77e","src/validation_canary.rs":"2e8f84e5f85671b3e55ddd410476171c762e34cbea315b37921cbb6ff18bfb4f","src/vulkan/adapter.rs":"6a3de2f25d3e8397b30d6de15db4c9e92b18181eb33f31bf520a4c12fd1cc355","src/vulkan/command.rs":"22fd05428c141ce58000c8f3541d39195023ffdfb72c4b00379a5c50a3ecea82","src/vulkan/conv.rs":"03eb28b81d3e41ccfcb2b3f7f029cd671ccdf9556594c6d8b6cc2b22144ec4f2","src/vulkan/device.rs":"5c8072544acbfe1aae3e43ec2dd7e941f0bde32da621b3e3ba68ffebb5b3c285","src/vulkan/drm.rs":"45f7bf1dd854688a65261e4674d80f90c997b193a162fd2ae658acf4e2003552","src/vulkan/instance.rs":"6740bc9ca240aa512509520d2b5a9cd2129330c413d94fce786b8301fa5f2202","src/vulkan/mod.rs":"8dd3e851374d876a51e683fbcb621d1f191e360197e4dde4b0b47f83b3632c5b","src/vulkan/sampler.rs":"f65729d6df5cce681b7756b3e48074017f0c7f42da69ca55e26cc723cd14ad59","src/vulkan/semaphore_list.rs":"102266d8e1b9f2ec1decf681bcc9e1a4cbff29533a258f2699fb6c573c434771"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"089eb6c21f85ad53819ed0c356b6328520684e9d7b0cd0c464c3f24f46c61247","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","README.md":"cf9e84804a635e4a8a9fefc596be9da6bf7354dde0d105e27d56a12cb20dd8e3","build.rs":"e720cf033fecfdc7e4f34010af2a86340c99b8aaabf69559d32391521e25de6c","examples/halmark/main.rs":"4861eedb91ca024ede5b18e6db5a861b03f21108de9566bcc4d71bb5720df62a","examples/halmark/shader.wgsl":"26c256ec36d6f0e9a1647431ca772766bee4382d64eaa718ba7b488dcfb6bcca","examples/raw-gles.em.html":"70fbe68394a1a4522192de1dcfaf7d399f60d7bdf5de70b708f9bb0417427546","examples/raw-gles.rs":"5f4cfa893e99dfec559803bc513457793dcc549154c604385fb287f99a3ea675","examples/ray-traced-triangle/main.rs":"8cbfdf3e4cd29d23e2c9fd543a36976d849a7161670e094baeda390db9306b57","examples/ray-traced-triangle/shader.wgsl":"cc10caf92746724a71f6dd0dbc3a71e57b37c7d1d83278556805a535c0728a9d","src/auxil/dxgi/conv.rs":"3ca856c93916c0be714924ff077aa1f366be5557cc164210154d252e7e49fb77","src/auxil/dxgi/exception.rs":"7138831914a59dc7cbb71512068e9134144b9bc8f43312682edccb0b3ee24a48","src/auxil/dxgi/factory.rs":"81e479e550a09127384d8080e43d5f5bae8e8dda6082fe41a87bea8f872eb0f1","src/auxil/dxgi/mod.rs":"e6c5cc3b73bb97742135d6f35308c42f0822304764978fb8dabb0e848863352a","src/auxil/dxgi/name.rs":"ff942da0da1a497ee4d2be21604f7ba9fae963588105b3d1f63aae1a0c536e82","src/auxil/dxgi/result.rs":"e7a9dfb48d8ef8cbe58b28b1ace5caf7818ee50505ba3220bb0509e66ae469b7","src/auxil/dxgi/time.rs":"b6911800be3873cbe277b2534b3839c6f005f3d9a09341aace4752e207d584a2","src/auxil/mod.rs":"540b9250d9f0e0af709245ce1e284eaca15b27d47550b0ebba2a512da1666c48","src/auxil/renderdoc.rs":"94898f747476e269b2910d42e769f2bbb6be0cb466ad92f9d381f55799d2756e","src/dx12/adapter.rs":"cb365ea13f2ef8ed19d0f9724058be365adacf8d7b42d84909566442edf81a12","src/dx12/command.rs":"9aa909aaa12ab9bf09e73f26b7197eee620fe6e9b742b3df90dc352e612d874d","src/dx12/conv.rs":"a320fca45fd1990762ff10dad1d8bbb29833d9b693b0887bf2898021a737612c","src/dx12/dcomp.rs":"53bde57557d80e571257f76933d66475a765e063d8b635675f9dd2563039a4c5","src/dx12/descriptor.rs":"ccd4feb6bd3e0a0ffc26142f8a81fca26180d0f50146b6eb2f670cbc89ea7064","src/dx12/device.rs":"592d9336e807e5bbafe204923e6546547160eb660ade038f5707cbd3cb9306fe","src/dx12/instance.rs":"75bddc3807756c691ede3ff944915e443a8bb2b5ac6d0d99babd4ed50d1e3fb9","src/dx12/mod.rs":"592a110924259e8754a919bfbc3efda1292f7416a447d585fe56fe910e6225d0","src/dx12/sampler.rs":"d18d243efe4fa667dbab5b75b5b91d47de94d441976d9f44a46a2b49ba38473d","src/dx12/shader_compilation.rs":"c901a797c69e08c8c0ec93ea37c5f31084eb21c26c7d703d7031f987f2243509","src/dx12/suballocation.rs":"014e9ec4a94519b877ad3adc2ea5d182aa6cdf502248009d28dc5833a9edb93c","src/dx12/types.rs":"3fc7619fc09303eb3c936d4ded6889f94ce9e8b9aa62742ce900baa1b1e1cca7","src/dx12/view.rs":"79b3f7331d9795e60f9b53023cbf0df46c3a05b1e8bd5c7bcca8acdd235b124f","src/dynamic/adapter.rs":"e93f7d082a3950c9e8ccff8a631d251c7598b4b25dda9fe6347dadfa3ba07829","src/dynamic/command.rs":"9635dea15d8a885011d2b8b6b9cc5ffe2126cc3f141f47f7aaf46e1f201abea9","src/dynamic/device.rs":"f77c2406f2c42fed77fce29d731b490ac615dae2c5ddb9e01fee4f8ece1b3a34","src/dynamic/instance.rs":"7b515c201e1ca24f24439544dbfa1d19ea1412a4f89bd803e009aed13b021e55","src/dynamic/mod.rs":"2577d3aef6441f5b42b427d80ba3cf7fee2a97b2fc12335a1fba383e8a79a9b2","src/dynamic/queue.rs":"d76abb4797e90253386d24584f186dbe1909e772560156b2e891fa043cfefbdc","src/dynamic/surface.rs":"4328c2fe86931f50aa00ac3d6982d0879b774eebf7a507903d1b1898c891fb4d","src/gles/adapter.rs":"1508d5a6eb1d616e085613c6136b97841b64a12b1a4fc4ccf07fd5bf113cbe2e","src/gles/command.rs":"c13d50eeb1a4aaab367a3b4a7fe6c25c8c73377e68d0d8cc43791d1a7202d23b","src/gles/conv.rs":"6ffb8688de38c2fdd956571dd549535259e2811225adc1df02509e8e642ee775","src/gles/device.rs":"7a8679a4e990bb237cab961b0a2dbdbf5414c57b943048f63f7ddb189932db58","src/gles/egl.rs":"2509e5a5c422e213a3050d852d70a13dfc06737c829a8fc169f45791d8e27fed","src/gles/emscripten.rs":"316d2bb6f2a4bb126dbe68a223f7393399080d116b61c39504454acdf4f9cfaf","src/gles/fence.rs":"a2e7b6abd2fd4a438de90b9f58452c64cd8bba83999c90fd6390e3db128b9c6c","src/gles/mod.rs":"b6d80623eaf58719bafac26875fd0f75f8546b02c58b96a75d703e3a350e31df","src/gles/queue.rs":"5152f5698a2998a55125d13f04788b960726fd4b49ae4d2ec8f9642c8825c7fd","src/gles/shaders/clear.frag":"9133ed8ed97d3641fbb6b5f5ea894a3554c629ccc1b80a5fc9221d7293aa1954","src/gles/shaders/clear.vert":"a543768725f4121ff2e9e1fb5b00644931e9d6f2f946c0ef01968afb5a135abd","src/gles/shaders/srgb_present.frag":"dd9a43c339a2fa4ccf7f6a1854c6f400cabf271a7d5e9230768e9f39d47f3ff5","src/gles/shaders/srgb_present.vert":"6e85d489403d80b81cc94790730bb53b309dfc5eeede8f1ea3412a660f31d357","src/gles/web.rs":"cb5940bf7b2381811675011b640040274f407a7d1908d0f82c813d6a9d3b00f7","src/gles/wgl.rs":"ed0cee8844447b461ed5340f81eb55bb051ceaac67a5768985318ceac133cbe4","src/lib.rs":"b5354488fbffb0ae575700c8f4addec0d8466a402df4eb4ab338a41aae9b683b","src/metal/adapter.rs":"75ddf04c2005238d69e4eed5ac86ea43644089eccf23b39a77ab94753e85f61c","src/metal/command.rs":"20bf613b67ccc043de6e8ad3f3d332bbb678cc06c1593cf1880083de090574ba","src/metal/conv.rs":"85e8168be334ba24d109575a0a7e91b2ad3459403173e99e5cdd5d977cc5c18f","src/metal/device.rs":"a293d260b5618b8b8fcb0137c51302989a7982f3db06ca051b5fe898266776f7","src/metal/layer_observer.rs":"8370a6e443d01739b951b8538ee719a03b69fc0cbac92c748db418fbcc8837b5","src/metal/mod.rs":"e30c545106732670d9733090d4de543021b38638cf0ee89ba2ba9d8246ea218a","src/metal/surface.rs":"22dc6da86ac74b044b6498764920f0467bb5060f4dffb156b6c1e260db0c48b7","src/metal/time.rs":"c32d69f30e846dfcc0e39e01097fb80df63b2bebb6586143bb62494999850246","src/noop/buffer.rs":"b5edc5e2c52287dfbd4f619e36097ac233041eb9ab287b889b6ee477d740fa09","src/noop/command.rs":"3de99a1a260cfea2e6ca2e76797c1923cc26b069b08362c38798ce27cdc75543","src/noop/mod.rs":"47b663d15f1ceb6d77a16e91549bc9634dfd2cfaf58c9b945639fb36c364f77e","src/validation_canary.rs":"2e8f84e5f85671b3e55ddd410476171c762e34cbea315b37921cbb6ff18bfb4f","src/vulkan/adapter.rs":"6a3de2f25d3e8397b30d6de15db4c9e92b18181eb33f31bf520a4c12fd1cc355","src/vulkan/command.rs":"22fd05428c141ce58000c8f3541d39195023ffdfb72c4b00379a5c50a3ecea82","src/vulkan/conv.rs":"03eb28b81d3e41ccfcb2b3f7f029cd671ccdf9556594c6d8b6cc2b22144ec4f2","src/vulkan/device.rs":"c76cf97b620c12b2e3039012f44ea0423ad30d5e6e52e40ec3bfc87cbc92cf86","src/vulkan/drm.rs":"45f7bf1dd854688a65261e4674d80f90c997b193a162fd2ae658acf4e2003552","src/vulkan/instance.rs":"37868aea22e6d7a986301581194142cd14d7d3bc8d9ba0e0c5a9e58db1eb1cdf","src/vulkan/mod.rs":"8b9f4c97046703cf3f7d279f5c196df7e0b158c850c8f37e3c5c459569430b3a","src/vulkan/sampler.rs":"f65729d6df5cce681b7756b3e48074017f0c7f42da69ca55e26cc723cd14ad59","src/vulkan/semaphore_list.rs":"102266d8e1b9f2ec1decf681bcc9e1a4cbff29533a258f2699fb6c573c434771"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-hal/Cargo.toml b/third_party/rust/wgpu-hal/Cargo.toml @@ -206,7 +206,7 @@ version = "27.0.0" path = "../naga" [dependencies.ordered-float] -version = ">=3, <=5.0" +version = ">=3, <6.0" optional = true default-features = false diff --git a/third_party/rust/wgpu-hal/src/vulkan/device.rs b/third_party/rust/wgpu-hal/src/vulkan/device.rs @@ -578,6 +578,13 @@ impl super::Device { let images = unsafe { functor.get_swapchain_images(raw) }.map_err(super::map_host_device_oom_err)?; + let fence = unsafe { + self.shared + .raw + .create_fence(&vk::FenceCreateInfo::default(), None) + .map_err(super::map_host_device_oom_err)? + }; + // NOTE: It's important that we define the same number of acquire/present semaphores // as we will need to index into them with the image index. let acquire_semaphores = (0..=images.len()) @@ -597,6 +604,7 @@ impl super::Device { functor, device: Arc::clone(&self.shared), images, + fence, config: config.clone(), acquire_semaphores, next_acquire_index: 0, diff --git a/third_party/rust/wgpu-hal/src/vulkan/instance.rs b/third_party/rust/wgpu-hal/src/vulkan/instance.rs @@ -187,6 +187,8 @@ impl super::Swapchain { }; }; + unsafe { device.destroy_fence(self.fence, None) } + // We cannot take this by value, as the function returns `self`. for semaphore in self.acquire_semaphores.drain(..) { let arc_removed = Arc::into_inner(semaphore).expect( @@ -1115,7 +1117,7 @@ impl crate::Surface for super::Surface { swapchain.raw, timeout_ns, acquire_semaphore_guard.acquire, - vk::Fence::null(), + swapchain.fence, ) } { // We treat `VK_SUBOPTIMAL_KHR` as `VK_SUCCESS` on Android. @@ -1138,6 +1140,30 @@ impl crate::Surface for super::Surface { } }; + // Wait for the image was acquired to be fully ready to be rendered too. + // + // This wait is very important on Windows to avoid bad frame pacing on + // Windows where the Vulkan driver is using a DXGI swapchain. See + // https://github.com/gfx-rs/wgpu/issues/8310 and + // https://github.com/gfx-rs/wgpu/issues/8354 for more details. + // + // On other platforms, this wait may serve to slightly decrease frame + // latency, depending on how the platform implements waiting within + // acquire. + unsafe { + swapchain + .device + .raw + .wait_for_fences(&[swapchain.fence], false, timeout_ns) + .map_err(super::map_host_device_oom_and_lost_err)?; + + swapchain + .device + .raw + .reset_fences(&[swapchain.fence]) + .map_err(super::map_host_device_oom_and_lost_err)?; + } + drop(acquire_semaphore_guard); // We only advance the surface semaphores if we successfully acquired an image, otherwise // we should try to re-acquire using the same semaphores. diff --git a/third_party/rust/wgpu-hal/src/vulkan/mod.rs b/third_party/rust/wgpu-hal/src/vulkan/mod.rs @@ -390,6 +390,8 @@ struct Swapchain { functor: khr::swapchain::Device, device: Arc<DeviceShared>, images: Vec<vk::Image>, + /// Fence used to wait on the acquired image. + fence: vk::Fence, config: crate::SurfaceConfiguration, /// Semaphores used between image acquisition and the first submission diff --git a/third_party/rust/wgpu-types/.cargo-checksum.json b/third_party/rust/wgpu-types/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"6ce40662479cee74a188bfb2a7cd9101b4216628c09f5112574334d1c66e556c","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","src/assertions.rs":"e4d2d40bc1e870a59637f4b9574743e19565a62f6dbcc21cb18a76b666b796eb","src/cast_utils.rs":"33f03a57ccbedef2699f2305bec584c623db1fd28bfdf584d1260da4fbecd529","src/counters.rs":"e2a1c69126bdb6a35f74d5062e89e242eb955014d95c2b9e6e1b03f7b4b5bd98","src/env.rs":"26ffc91867625784159bcf391881187aa92cf92b81b1f40959ce1b96ae6d554d","src/error.rs":"0109e6209cf152abbfd0cee85dd934fb24f2304bf6adad6fb684b77f151fb158","src/features.rs":"ab880ecf55be2a93244d1a03119d10ee15eddc076f100ae03d13b51eaa815b57","src/instance.rs":"deeb5ca694163baf46c386316a498cee011cf960d48b749d4cd01125e9fca57f","src/lib.rs":"eb98d959be74b44ea43e4c4e2ceeb37799f4d8e96fd0f1ed1fbb48ced3f207ea","src/math.rs":"3046121800bded318b7d219aea401907e7d3bba3b998df6745a71e76f0734de2","src/tokens.rs":"cdf192e0c9b4ea4f3cd4148d07be2e895f937f8154acbf52caf67f7fb4df11dc","src/transfers.rs":"25f47e9cbc5887f849f5eb4d8952d89de6377df40f480ebbea61c58d2e0e7fc6"},"package":null} -\ No newline at end of file +{"files":{"Cargo.toml":"7294fed45f6bf1bfbb8a32daf982744671a76cd966a67a610c95c06ac135547e","LICENSE.APACHE":"a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9","LICENSE.MIT":"dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21","src/assertions.rs":"e4d2d40bc1e870a59637f4b9574743e19565a62f6dbcc21cb18a76b666b796eb","src/cast_utils.rs":"33f03a57ccbedef2699f2305bec584c623db1fd28bfdf584d1260da4fbecd529","src/counters.rs":"e2a1c69126bdb6a35f74d5062e89e242eb955014d95c2b9e6e1b03f7b4b5bd98","src/env.rs":"26ffc91867625784159bcf391881187aa92cf92b81b1f40959ce1b96ae6d554d","src/error.rs":"0109e6209cf152abbfd0cee85dd934fb24f2304bf6adad6fb684b77f151fb158","src/features.rs":"ab880ecf55be2a93244d1a03119d10ee15eddc076f100ae03d13b51eaa815b57","src/instance.rs":"deeb5ca694163baf46c386316a498cee011cf960d48b749d4cd01125e9fca57f","src/lib.rs":"361cdde9d1d5bae3584f36c695bf976765a550849388e4f78ecf53fdc2219c8e","src/math.rs":"3046121800bded318b7d219aea401907e7d3bba3b998df6745a71e76f0734de2","src/tokens.rs":"cdf192e0c9b4ea4f3cd4148d07be2e895f937f8154acbf52caf67f7fb4df11dc","src/transfers.rs":"25f47e9cbc5887f849f5eb4d8952d89de6377df40f480ebbea61c58d2e0e7fc6"},"package":null} +\ No newline at end of file diff --git a/third_party/rust/wgpu-types/Cargo.toml b/third_party/rust/wgpu-types/Cargo.toml @@ -52,7 +52,6 @@ serde = [ std = [ "js-sys?/std", "web-sys?/std", - "thiserror/std", ] strict_asserts = [] trace = ["std"] @@ -88,11 +87,6 @@ features = [ optional = true default-features = false -[dependencies.thiserror] -version = "2.0.12" -optional = true -default-features = false - [dev-dependencies.serde] version = "1.0.219" features = ["derive"] diff --git a/third_party/rust/wgpu-types/src/lib.rs b/third_party/rust/wgpu-types/src/lib.rs @@ -4564,24 +4564,35 @@ impl<T> PollType<T> { } } -/// Error states after a device poll +/// Error states after a device poll. #[derive(Debug)] -#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum PollError { /// The requested Wait timed out before the submission was completed. - #[cfg_attr( - feature = "std", - error("The requested Wait timed out before the submission was completed.") - )] Timeout, /// The requested Wait was given a wrong submission index. - #[cfg_attr( - feature = "std", - error("Tried to wait using a submission index ({0}) that has not been returned by a successful submission (last successful submission: {1})") - )] WrongSubmissionIndex(u64, u64), } +// This impl could be derived by `thiserror`, but by not doing so, we can reduce the number of +// dependencies this early in the dependency graph, which may improve build parallelism. +impl fmt::Display for PollError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + PollError::Timeout => { + f.write_str("The requested Wait timed out before the submission was completed.") + } + PollError::WrongSubmissionIndex(requested, successful) => write!( + f, + "Tried to wait using a submission index ({requested}) \ + that has not been returned by a successful submission \ + (last successful submission: {successful}" + ), + } + } +} + +impl core::error::Error for PollError {} + /// Status of device poll operation. #[derive(Debug, PartialEq, Eq)] pub enum PollStatus {