diff --git a/.deny.toml b/.deny.toml index bc30cef5a..9c8f96c6b 100644 --- a/.deny.toml +++ b/.deny.toml @@ -1,13 +1,11 @@ [bans] multiple-versions = "deny" skip-tree = [ - { name = "cts_runner" }, - { name = "player" }, - { name = "wgpu-info" }, + { name = "windows-sys", version = "0.45" }, + { name = "winit", version = "0.27.5" }, + { name = "rustc_version", version = "0.2.3" }, ] skip = [ - { name = "wgpu" }, - { name = "fastrand" } ] wildcards = "deny" @@ -27,6 +25,10 @@ allow = [ [sources] allow-git = [ + # Waiting on releases; used in examples only + "https://github.com/SiegeEngine/ddsfile", + "https://github.com/Razaekel/noise-rs", + "https://github.com/grovesNL/glow", "https://github.com/gfx-rs/metal-rs", ] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index bbcfe868f..dc45ceff3 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,5 @@ blank_issues_enabled: false contact_links: - - name: Issues with shaders - url: https://github.com/gfx-rs/naga/issues/new/choose - about: Issues with or enhancements for the shader translation. - name: Question about wgpu url: https://github.com/gfx-rs/wgpu/discussions/new about: Any questions about how to use wgpu should go here. diff --git a/Cargo.lock b/Cargo.lock index 618a78152..c96e16e70 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -223,35 +223,6 @@ dependencies = [ "libloading 0.7.4", ] -[[package]] -name = "async-executor" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0" -dependencies = [ - "async-lock", - "async-task", - "concurrent-queue", - "fastrand 2.0.1", - "futures-lite", - "slab", -] - -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-task" -version = "4.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" - [[package]] name = "async-trait" version = "0.1.74" @@ -588,15 +559,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" -[[package]] -name = "concurrent-queue" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -703,7 +665,7 @@ dependencies = [ "criterion-plot", "is-terminal", "itertools", - "num-traits 0.2.17", + "num-traits", "once_cell", "oorandom", "plotters", @@ -864,13 +826,13 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "ddsfile" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "594ecd967c2f40db5dde8da4c356975fc1fe030e951c7c3962f6dc2e80042e87" +version = "0.5.2-unstable" +source = "git+https://github.com/SiegeEngine/ddsfile.git?rev=9b597930edc00502391cbb1a39708dadde0fd0ff#9b597930edc00502391cbb1a39708dadde0fd0ff" dependencies = [ "bitflags 1.3.2", "byteorder", - "enum_primitive", + "enum-primitive-derive", + "num-traits", ] [[package]] @@ -1136,12 +1098,14 @@ dependencies = [ ] [[package]] -name = "enum_primitive" -version = "0.1.1" +name = "enum-primitive-derive" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" +checksum = "c375b9c5eadb68d0a6efee2999fef292f45854c3444c86f09d8ab086ba942b0e" dependencies = [ - "num-traits 0.1.43", + "num-traits", + "quote", + "syn 1.0.109", ] [[package]] @@ -1173,12 +1137,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "expat-sys" version = "2.1.6" @@ -1198,12 +1156,6 @@ dependencies = [ "instant", ] -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - [[package]] name = "fdeflate" version = "0.3.0" @@ -1333,9 +1285,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -1348,9 +1300,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -1358,15 +1310,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -1386,9 +1338,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-lite" @@ -1396,7 +1348,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand 1.9.0", + "fastrand", "futures-core", "futures-io", "memchr", @@ -1407,9 +1359,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", @@ -1418,21 +1370,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -1446,17 +1398,6 @@ dependencies = [ "slab", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.10" @@ -1466,7 +1407,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] @@ -1736,7 +1677,7 @@ dependencies = [ "byteorder", "color_quant", "num-rational", - "num-traits 0.2.17", + "num-traits", "png", ] @@ -1866,6 +1807,17 @@ version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +[[package]] +name = "libfuzzer-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7" +dependencies = [ + "arbitrary", + "cc", + "once_cell", +] + [[package]] name = "libloading" version = "0.7.4" @@ -2010,7 +1962,7 @@ checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] @@ -2030,7 +1982,7 @@ dependencies = [ "hlsl-snapshots", "indexmap", "log", - "num-traits 0.2.17", + "num-traits", "petgraph", "pp-rs", "ron", @@ -2055,13 +2007,22 @@ dependencies = [ "naga", ] +[[package]] +name = "naga-fuzz" +version = "0.0.0" +dependencies = [ + "arbitrary", + "libfuzzer-sys", + "naga", +] + [[package]] name = "nanorand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.10", + "getrandom", ] [[package]] @@ -2165,11 +2126,10 @@ dependencies = [ [[package]] name = "noise" version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba869e17168793186c10ca82c7079a4ffdeac4f1a7d9e755b9491c028180e40" +source = "git+https://github.com/Razaekel/noise-rs.git?rev=c6942d4fb70af26db4441edcf41f90fa115333f2#c6942d4fb70af26db4441edcf41f90fa115333f2" dependencies = [ - "num-traits 0.2.17", - "rand 0.7.3", + "num-traits", + "rand", "rand_xorshift", ] @@ -2191,8 +2151,8 @@ checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.17", - "rand 0.8.5", + "num-traits", + "rand", ] [[package]] @@ -2202,7 +2162,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", - "num-traits 0.2.17", + "num-traits", ] [[package]] @@ -2213,16 +2173,7 @@ checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.17", -] - -[[package]] -name = "num-traits" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -dependencies = [ - "num-traits 0.2.17", + "num-traits", ] [[package]] @@ -2524,7 +2475,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ - "num-traits 0.2.17", + "num-traits", "plotters-backend", "plotters-svg", "wasm-bindgen", @@ -2585,12 +2536,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - [[package]] name = "presser" version = "0.3.1" @@ -2631,45 +2576,13 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -2678,22 +2591,13 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "rand_xorshift" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77d416b86801d23dde1aa643023b775c3a462efc0ed96443add11546cdf1dca8" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.5.1", + "rand_core", ] [[package]] @@ -2843,9 +2747,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.20" +version = "0.38.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" dependencies = [ "bitflags 2.4.1", "errno", @@ -2944,9 +2848,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.189" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ "serde_derive", ] @@ -2962,9 +2866,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.189" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ "proc-macro2", "quote", @@ -3130,7 +3034,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" dependencies = [ "bitflags 1.3.2", - "num-traits 0.2.17", + "num-traits", "serde", ] @@ -3487,7 +3391,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" dependencies = [ - "getrandom 0.2.10", + "getrandom", "serde", ] @@ -3537,12 +3441,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3835,7 +3733,6 @@ dependencies = [ name = "wgpu-example" version = "0.18.0" dependencies = [ - "async-executor", "console_error_panic_hook", "console_log", "env_logger", @@ -4072,7 +3969,7 @@ dependencies = [ "console_log", "env_logger", "futures-intrusive", - "getrandom 0.2.10", + "getrandom", "log", "pollster", "wasm-bindgen-futures", diff --git a/Cargo.toml b/Cargo.toml index 2141e8cab..e6549bb15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,9 +5,12 @@ members = [ "deno_webgpu", # default members + "d3d12", "examples/*", - "naga", "naga-cli", + "naga", + "naga/fuzz", + "naga/hlsl-snapshots", "player", "tests", "wgpu-core", @@ -17,13 +20,14 @@ members = [ "wgpu-types", "wgpu", ] -exclude = [ - "d3d12", -] +exclude = [] default-members = [ + "d3d12", "examples/*", - "naga", "naga-cli", + "naga", + "naga/fuzz", + "naga/hlsl-snapshots", "player", "tests", "wgpu-core", @@ -42,7 +46,7 @@ license = "MIT OR Apache-2.0" homepage = "https://wgpu.rs/" repository = "https://github.com/gfx-rs/wgpu" version = "0.18.0" -authors = ["wgpu developers"] +authors = ["gfx-rs developers"] [workspace.dependencies.wgc] package = "wgpu-core" @@ -66,7 +70,6 @@ version = "0.14.0" [workspace.dependencies] anyhow = "1.0" arrayvec = "0.7" -async-executor = "1" bitflags = "2" bit-vec = "0.6" bytemuck = { version = "1.14", features = ["derive"] } @@ -74,7 +77,8 @@ cfg_aliases = "0.1" cfg-if = "1" codespan-reporting = "0.11" ctor = "0.2" -ddsfile = "0.5" +# https://github.com/SiegeEngine/ddsfile/issues/15 (Updated dependencies) +ddsfile = { version = "0.5.2-unstable", git = "https://github.com/SiegeEngine/ddsfile.git", rev = "9b597930edc00502391cbb1a39708dadde0fd0ff" } env_logger = "0.10" flume = "0.11" futures-lite = "1" @@ -91,7 +95,8 @@ log = "0.4" nanorand = { version = "0.7", default-features = false, features = ["wyrand"] } nv-flip = "0.1" num-traits = { version = "0.2" } -noise = "0.8" +# https://github.com/Razaekel/noise-rs/issues/335 (Updated dependencies) +noise = { version = "0.8", git = "https://github.com/Razaekel/noise-rs.git", rev = "c6942d4fb70af26db4441edcf41f90fa115333f2" } obj = "0.10" once_cell = "1" # parking_lot 0.12 switches from `winapi` to `windows`; permit either @@ -163,7 +168,7 @@ deno_core = "0.214.0" deno_url = "0.119.0" deno_web = "0.150.0" deno_webidl = "0.119.0" -deno_webgpu = { path = "./deno_webgpu" } +deno_webgpu = { version = "0.85.0", path = "./deno_webgpu" } tokio = "1.33.0" termcolor = "1.3.0" diff --git a/README.md b/README.md index 1aff3aaed..4a560af49 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ The repository hosts the following libraries: - [![Crates.io](https://img.shields.io/crates/v/wgpu-hal.svg?label=wgpu-hal)](https://crates.io/crates/wgpu-hal) [![docs.rs](https://docs.rs/wgpu-hal/badge.svg)](https://docs.rs/wgpu-hal/) - Internal unsafe GPU API abstraction layer. - [![Crates.io](https://img.shields.io/crates/v/wgpu-types.svg?label=wgpu-types)](https://crates.io/crates/wgpu-types) [![docs.rs](https://docs.rs/wgpu-types/badge.svg)](https://docs.rs/wgpu-types/) - Rust types shared between all crates. - [![Crates.io](https://img.shields.io/crates/v/naga.svg?label=naga)](https://crates.io/crates/naga) [![docs.rs](https://docs.rs/naga/badge.svg)](https://docs.rs/naga/) - Stand-alone shader translation library. +- [![Crates.io](https://img.shields.io/crates/v/d3d12.svg?label=d3d12)](https://crates.io/crates/d3d12) [![docs.rs](https://docs.rs/d3d12/badge.svg)](https://docs.rs/d3d12/) - Collection of thin abstractions over d3d12. - [![Crates.io](https://img.shields.io/crates/v/deno_webgpu.svg?label=deno_webgpu)](https://crates.io/crates/deno_webgpu) - WebGPU implementation for the Deno JavaScript/TypeScript runtime The following binaries: @@ -120,7 +121,7 @@ On Linux, you can point to them using `LD_LIBRARY_PATH` environment. ### MSRV policy Due to complex dependants, we have two MSRV policies: - - `naga`, `wgpu-core`, `wgpu-hal`, and `wgpu-types`'s MSRV is **1.65**. + - `d3d12`, `naga`, `wgpu-core`, `wgpu-hal`, and `wgpu-types`'s MSRV is **1.65**. - The rest of the workspace has the MSRV of **1.70**. It is enforced on CI (in "/.github/workflows/ci.yml") with `CORE_MSRV` and `REPO_MSRV` variable. diff --git a/d3d12/.gitignore b/d3d12/.gitignore deleted file mode 100644 index cbed4d71a..000000000 --- a/d3d12/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -# Generated by Cargo -# will have compiled files and executables -/target/ - -# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries -# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html -Cargo.lock - -# These are backup files generated by rustfmt -**/*.rs.bk - -.idea/ diff --git a/d3d12/Cargo.toml b/d3d12/Cargo.toml index dbb116eb9..91f354294 100644 --- a/d3d12/Cargo.toml +++ b/d3d12/Cargo.toml @@ -1,28 +1,45 @@ [package] name = "d3d12" version = "0.7.0" -authors = [ - "gfx-rs developers", -] +authors = ["gfx-rs developers"] description = "Low level D3D12 API wrapper" -repository = "https://github.com/gfx-rs/d3d12-rs" +repository = "https://github.com/gfx-rs/wgpu/tree/trunk/d3d12" keywords = ["windows", "graphics"] license = "MIT OR Apache-2.0" documentation = "https://docs.rs/d3d12" -categories = ["api-bindings", "graphics", "memory-management", "os::windows-apis"] +categories = [ + "api-bindings", + "graphics", + "memory-management", + "os::windows-apis", +] edition = "2018" [features] implicit-link = [] -[dependencies] +[target.'cfg(windows)'.dependencies] bitflags = "2" # libloading 0.8 switches from `winapi` to `windows-sys`; permit either libloading = { version = ">=0.7,<0.9", optional = true } -[dependencies.winapi] +[target.'cfg(windows)'.dependencies.winapi] version = "0.3" -features = ["dxgi1_2","dxgi1_3","dxgi1_4","dxgi1_5","dxgi1_6","dxgidebug","d3d12","d3d12sdklayers","d3dcommon","d3dcompiler","dxgiformat","synchapi","winerror"] +features = [ + "dxgi1_2", + "dxgi1_3", + "dxgi1_4", + "dxgi1_5", + "dxgi1_6", + "dxgidebug", + "d3d12", + "d3d12sdklayers", + "d3dcommon", + "d3dcompiler", + "dxgiformat", + "synchapi", + "winerror", +] [package.metadata.docs.rs] -default-target = "x86_64-pc-windows-msvc" +targets = ["x86_64-pc-windows-msvc"] diff --git a/d3d12/README.md b/d3d12/README.md index a1e1fd661..718bf7355 100644 --- a/d3d12/README.md +++ b/d3d12/README.md @@ -1,6 +1,5 @@ # d3d12-rs [![Crates.io](https://img.shields.io/crates/v/d3d12.svg)](https://crates.io/crates/d3d12) [![Docs.rs](https://docs.rs/d3d12/badge.svg)](https://docs.rs/d3d12) -[![Matrix](https://img.shields.io/matrix/gfx:matrix.org)](https://matrix.to/#/#gfx:matrix.org) Rust wrapper for raw D3D12 access. diff --git a/d3d12/appveyor.yml b/d3d12/appveyor.yml deleted file mode 100644 index b947c526b..000000000 --- a/d3d12/appveyor.yml +++ /dev/null @@ -1,29 +0,0 @@ -skip_branch_with_pr: true -branches: - except: - - staging.tmp -environment: - global: - PATH: '%PATH%;C:\msys64\mingw64\bin;C:\msys64\usr\bin;%USERPROFILE%\.cargo\bin' - RUST_BACKTRACE: full - matrix: - - CHANNEL: stable - TARGET: x86_64-pc-windows-msvc - -skip_commits: - files: - - bors.toml - - '*.md' - -install: - - curl -sSf -o rustup-init.exe https://win.rustup.rs - - rustup-init -yv --default-toolchain %CHANNEL% --default-host %TARGET% - - rustc -vV - - cargo -vV - -build: false -test_script: - - cargo check - - cargo check --features libloading - - cargo check --features implicit-link - - cargo check --all-features diff --git a/d3d12/bors.toml b/d3d12/bors.toml deleted file mode 100644 index fc646ce92..000000000 --- a/d3d12/bors.toml +++ /dev/null @@ -1,5 +0,0 @@ -status = [ - "continuous-integration/appveyor/branch" -] - -timeout_sec = 18000 # 5 hours diff --git a/d3d12/rustfmt.toml b/d3d12/rustfmt.toml deleted file mode 100644 index e69de29bb..000000000 diff --git a/d3d12/src/com.rs b/d3d12/src/com.rs index 66b338c9e..8f9aad28d 100644 --- a/d3d12/src/com.rs +++ b/d3d12/src/com.rs @@ -17,7 +17,7 @@ impl ComPtr { pub unsafe fn from_raw(raw: *mut T) -> Self { if !raw.is_null() { - (&*(raw as *mut IUnknown)).AddRef(); + (*(raw as *mut IUnknown)).AddRef(); } ComPtr(raw) } @@ -65,7 +65,9 @@ impl ComPtr { impl Clone for ComPtr { fn clone(&self) -> Self { debug_assert!(!self.is_null()); - unsafe { self.as_unknown().AddRef(); } + unsafe { + self.as_unknown().AddRef(); + } ComPtr(self.0) } } @@ -73,7 +75,9 @@ impl Clone for ComPtr { impl Drop for ComPtr { fn drop(&mut self) { if !self.0.is_null() { - unsafe { self.as_unknown().Release(); } + unsafe { + self.as_unknown().Release(); + } } } } @@ -121,8 +125,8 @@ impl Hash for ComPtr { /// /// ```rust /// # pub use d3d12::weak_com_inheritance_chain; -/// # mod actual { -/// # pub struct ComObject; impl winapi::Interface for ComObject { fn uuidof() -> winapi::shared::guiddef::GUID { todo!() } } +/// # mod actual { +/// # pub struct ComObject; impl winapi::Interface for ComObject { fn uuidof() -> winapi::shared::guiddef::GUID { todo!() } } /// # pub struct ComObject1; impl winapi::Interface for ComObject1 { fn uuidof() -> winapi::shared::guiddef::GUID { todo!() } } /// # pub struct ComObject2; impl winapi::Interface for ComObject2 { fn uuidof() -> winapi::shared::guiddef::GUID { todo!() } } /// # } diff --git a/d3d12/src/command_list.rs b/d3d12/src/command_list.rs index 015d5788b..168d935e3 100644 --- a/d3d12/src/command_list.rs +++ b/d3d12/src/command_list.rs @@ -19,7 +19,7 @@ pub enum CmdListType { // VideoProcess = d3d12::D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS, } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct ClearFlags: u32 { const DEPTH = d3d12::D3D12_CLEAR_FLAG_DEPTH; @@ -263,7 +263,7 @@ impl GraphicsCommandList { } } - pub fn set_pipeline_state(&self, pso:&PipelineState) { + pub fn set_pipeline_state(&self, pso: &PipelineState) { unsafe { self.SetPipelineState(pso.as_mut_ptr()); } diff --git a/d3d12/src/descriptor.rs b/d3d12/src/descriptor.rs index 5bb1b5b35..b2c3ab23b 100644 --- a/d3d12/src/descriptor.rs +++ b/d3d12/src/descriptor.rs @@ -20,7 +20,7 @@ pub enum DescriptorHeapType { Dsv = d3d12::D3D12_DESCRIPTOR_HEAP_TYPE_DSV, } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct DescriptorHeapFlags: u32 { const SHADER_VISIBLE = d3d12::D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; @@ -253,7 +253,7 @@ pub enum RootSignatureVersion { V1_1 = d3d12::D3D_ROOT_SIGNATURE_VERSION_1_1, } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct RootSignatureFlags: u32 { const ALLOW_IA_INPUT_LAYOUT = d3d12::D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT; diff --git a/d3d12/src/device.rs b/d3d12/src/device.rs index 517b858bb..475fa22b5 100644 --- a/d3d12/src/device.rs +++ b/d3d12/src/device.rs @@ -16,7 +16,7 @@ pub type Device = ComPtr; #[cfg(feature = "libloading")] impl crate::D3D12Lib { -pub fn create_device( + pub fn create_device( &self, adapter: &ComPtr, feature_level: crate::FeatureLevel, diff --git a/d3d12/src/dxgi.rs b/d3d12/src/dxgi.rs index 81e2aaa1e..0cbb5bb63 100644 --- a/d3d12/src/dxgi.rs +++ b/d3d12/src/dxgi.rs @@ -9,7 +9,7 @@ use winapi::{ Interface, }; -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct FactoryCreationFlags: u32 { const DEBUG = dxgi1_3::DXGI_CREATE_FACTORY_DEBUG; @@ -336,7 +336,7 @@ impl FactoryMedia { } } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct SwapChainPresentFlags: u32 { const DXGI_PRESENT_DO_NOT_SEQUENCE = dxgi::DXGI_PRESENT_DO_NOT_SEQUENCE; diff --git a/d3d12/src/heap.rs b/d3d12/src/heap.rs index 8d081a213..074de56d7 100644 --- a/d3d12/src/heap.rs +++ b/d3d12/src/heap.rs @@ -29,7 +29,7 @@ pub enum MemoryPool { L1 = d3d12::D3D12_MEMORY_POOL_L1, } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct HeapFlags: u32 { const NONE = d3d12::D3D12_HEAP_FLAG_NONE; diff --git a/d3d12/src/lib.rs b/d3d12/src/lib.rs index 8a68475de..13f022689 100644 --- a/d3d12/src/lib.rs +++ b/d3d12/src/lib.rs @@ -1,5 +1,9 @@ -#[macro_use] -extern crate bitflags; +#![cfg(windows)] +#![allow( + clippy::missing_safety_doc, + clippy::too_many_arguments, + clippy::not_unsafe_ptr_arg_deref +)] use std::{convert::TryFrom, ffi::CStr}; use winapi::{ diff --git a/d3d12/src/pso.rs b/d3d12/src/pso.rs index 2c19bd48d..83a549621 100644 --- a/d3d12/src/pso.rs +++ b/d3d12/src/pso.rs @@ -1,17 +1,22 @@ //! Pipeline state use crate::{com::ComPtr, Blob, D3DResult, Error}; -use std::{ffi::{self, c_void}, ops::Deref, ptr, marker::PhantomData}; +use std::{ + ffi::{self, c_void}, + marker::PhantomData, + ops::Deref, + ptr, +}; use winapi::um::{d3d12, d3dcompiler}; -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct PipelineStateFlags: u32 { const TOOL_DEBUG = d3d12::D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG; } } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct ShaderCompileFlags: u32 { const DEBUG = d3dcompiler::D3DCOMPILE_DEBUG; @@ -28,25 +33,34 @@ bitflags! { pub struct Shader<'a>(d3d12::D3D12_SHADER_BYTECODE, PhantomData<&'a c_void>); impl<'a> Shader<'a> { pub fn null() -> Self { - Shader(d3d12::D3D12_SHADER_BYTECODE { - BytecodeLength: 0, - pShaderBytecode: ptr::null(), - }, PhantomData) + Shader( + d3d12::D3D12_SHADER_BYTECODE { + BytecodeLength: 0, + pShaderBytecode: ptr::null(), + }, + PhantomData, + ) } pub fn from_raw(data: &'a [u8]) -> Self { - Shader(d3d12::D3D12_SHADER_BYTECODE { - BytecodeLength: data.len() as _, - pShaderBytecode: data.as_ptr() as _, - }, PhantomData) + Shader( + d3d12::D3D12_SHADER_BYTECODE { + BytecodeLength: data.len() as _, + pShaderBytecode: data.as_ptr() as _, + }, + PhantomData, + ) } // `blob` may not be null. pub fn from_blob(blob: &'a Blob) -> Self { - Shader(d3d12::D3D12_SHADER_BYTECODE { - BytecodeLength: unsafe { blob.GetBufferSize() }, - pShaderBytecode: unsafe { blob.GetBufferPointer() }, - }, PhantomData) + Shader( + d3d12::D3D12_SHADER_BYTECODE { + BytecodeLength: unsafe { blob.GetBufferSize() }, + pShaderBytecode: unsafe { blob.GetBufferPointer() }, + }, + PhantomData, + ) } /// Compile a shader from raw HLSL. @@ -92,18 +106,24 @@ impl<'a> Deref for Shader<'a> { pub struct CachedPSO<'a>(d3d12::D3D12_CACHED_PIPELINE_STATE, PhantomData<&'a c_void>); impl<'a> CachedPSO<'a> { pub fn null() -> Self { - CachedPSO(d3d12::D3D12_CACHED_PIPELINE_STATE { - CachedBlobSizeInBytes: 0, - pCachedBlob: ptr::null(), - }, PhantomData) + CachedPSO( + d3d12::D3D12_CACHED_PIPELINE_STATE { + CachedBlobSizeInBytes: 0, + pCachedBlob: ptr::null(), + }, + PhantomData, + ) } // `blob` may not be null. pub fn from_blob(blob: &'a Blob) -> Self { - CachedPSO(d3d12::D3D12_CACHED_PIPELINE_STATE { - CachedBlobSizeInBytes: unsafe { blob.GetBufferSize() }, - pCachedBlob: unsafe { blob.GetBufferPointer() }, - }, PhantomData) + CachedPSO( + d3d12::D3D12_CACHED_PIPELINE_STATE { + CachedBlobSizeInBytes: unsafe { blob.GetBufferSize() }, + pCachedBlob: unsafe { blob.GetBufferPointer() }, + }, + PhantomData, + ) } } diff --git a/d3d12/src/queue.rs b/d3d12/src/queue.rs index 944cb6f32..a569344f3 100644 --- a/d3d12/src/queue.rs +++ b/d3d12/src/queue.rs @@ -8,7 +8,7 @@ pub enum Priority { GlobalRealtime = d3d12::D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME, } -bitflags! { +bitflags::bitflags! { #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct CommandQueueFlags: u32 { const DISABLE_GPU_TIMEOUT = d3d12::D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT; diff --git a/deno_webgpu/Cargo.toml b/deno_webgpu/Cargo.toml index bbc5b13f2..716f3770d 100644 --- a/deno_webgpu/Cargo.toml +++ b/deno_webgpu/Cargo.toml @@ -40,6 +40,7 @@ workspace = true features = ["dx11", "dx12"] [target.'cfg(windows)'.dependencies.wgpu-hal] +version = "0.18.0" path = "../wgpu-hal" features = ["windows_rs"] diff --git a/examples/boids/Cargo.toml b/examples/boids/Cargo.toml index 45e2cd3e7..55387b46d 100644 --- a/examples/boids/Cargo.toml +++ b/examples/boids/Cargo.toml @@ -14,10 +14,12 @@ harness = false [dependencies] bytemuck.workspace = true nanorand.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen-test.workspace = true + [dev-dependencies] wgpu-test.workspace = true diff --git a/examples/boids/src/main.rs b/examples/boids/src/main.rs index 75d42273d..f81eadd42 100644 --- a/examples/boids/src/main.rs +++ b/examples/boids/src/main.rs @@ -261,13 +261,7 @@ impl wgpu_example::framework::Example for Example { /// render is called each frame, dispatching compute groups proportional /// a TriangleList draw call for all NUM_PARTICLES at 3 vertices each - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { // create render pass descriptor and its color attachments let color_attachments = [Some(wgpu::RenderPassColorAttachment { view, diff --git a/examples/bunnymark/Cargo.toml b/examples/bunnymark/Cargo.toml index 4bd3e7734..48f3a520e 100644 --- a/examples/bunnymark/Cargo.toml +++ b/examples/bunnymark/Cargo.toml @@ -16,10 +16,12 @@ bytemuck.workspace = true nanorand.workspace = true glam.workspace = true png.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true diff --git a/examples/bunnymark/src/main.rs b/examples/bunnymark/src/main.rs index 2da396945..1dbd74125 100644 --- a/examples/bunnymark/src/main.rs +++ b/examples/bunnymark/src/main.rs @@ -286,13 +286,7 @@ impl wgpu_example::framework::Example for Example { //empty } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let delta = 0.01; for bunny in self.bunnies.iter_mut() { bunny.position[0] += bunny.velocity[0] * delta; diff --git a/examples/common/Cargo.toml b/examples/common/Cargo.toml index f9dd5d32e..7c0d54985 100644 --- a/examples/common/Cargo.toml +++ b/examples/common/Cargo.toml @@ -19,9 +19,6 @@ winit.workspace = true wgpu.workspace = true wgpu-test.workspace = true -[target.'cfg(not(target_arch = "wasm32"))'.dependencies] -async-executor.workspace = true - [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook.workspace = true console_log.workspace = true diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index c4c595384..70a69a9bb 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -1,4 +1,3 @@ -use std::future::Future; #[cfg(target_arch = "wasm32")] use std::str::FromStr; #[cfg(not(target_arch = "wasm32"))] @@ -58,13 +57,7 @@ pub trait Example: 'static + Sized { queue: &wgpu::Queue, ); fn update(&mut self, event: WindowEvent); - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - spawner: &Spawner, - ); + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue); } struct Setup { @@ -273,7 +266,6 @@ fn start( offscreen_canvas_setup, }: Setup, ) { - let spawner = Spawner::new(); let mut config = surface .get_default_config(&adapter, size.width, size.height) .expect("Surface isn't supported by the adapter."); @@ -299,9 +291,6 @@ fn start( }; match event { event::Event::RedrawEventsCleared => { - #[cfg(not(target_arch = "wasm32"))] - spawner.run_until_stalled(); - window.request_redraw(); } event::Event::WindowEvent { @@ -378,7 +367,7 @@ fn start( ..wgpu::TextureViewDescriptor::default() }); - example.render(&view, &device, &queue, &spawner); + example.render(&view, &device, &queue); frame.present(); @@ -402,44 +391,6 @@ fn start( }); } -#[cfg(not(target_arch = "wasm32"))] -pub struct Spawner<'a> { - executor: async_executor::LocalExecutor<'a>, -} - -#[cfg(not(target_arch = "wasm32"))] -impl<'a> Spawner<'a> { - fn new() -> Self { - Self { - executor: async_executor::LocalExecutor::new(), - } - } - - #[allow(dead_code)] - pub fn spawn_local(&self, future: impl Future + 'a) { - self.executor.spawn(future).detach(); - } - - fn run_until_stalled(&self) { - while self.executor.try_tick() {} - } -} - -#[cfg(target_arch = "wasm32")] -pub struct Spawner {} - -#[cfg(target_arch = "wasm32")] -impl Spawner { - fn new() -> Self { - Self {} - } - - #[allow(dead_code)] - pub fn spawn_local(&self, future: impl Future + 'static) { - wasm_bindgen_futures::spawn_local(future); - } -} - #[cfg(not(target_arch = "wasm32"))] pub fn run(title: &str) { let setup = pollster::block_on(setup::(title)); @@ -561,8 +512,7 @@ impl From> for GpuT ); { - let spawner = Spawner::new(); - example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); + example.render(&dst_view, &ctx.device, &ctx.queue); // Handle specific case for bunnymark #[allow(deprecated)] @@ -581,7 +531,7 @@ impl From> for GpuT // Step 3 extra frames for _ in 0..3 { - example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); + example.render(&dst_view, &ctx.device, &ctx.queue); } } } diff --git a/examples/conservative-raster/Cargo.toml b/examples/conservative-raster/Cargo.toml index 4d9435e79..6b1387b27 100644 --- a/examples/conservative-raster/Cargo.toml +++ b/examples/conservative-raster/Cargo.toml @@ -12,10 +12,12 @@ path = "src/main.rs" harness = false [dependencies] -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true diff --git a/examples/conservative-raster/src/main.rs b/examples/conservative-raster/src/main.rs index 9be7a0610..580c6781b 100644 --- a/examples/conservative-raster/src/main.rs +++ b/examples/conservative-raster/src/main.rs @@ -250,13 +250,7 @@ impl wgpu_example::framework::Example for Example { fn update(&mut self, _event: winit::event::WindowEvent) {} - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: Some("primary"), }); diff --git a/examples/cube/Cargo.toml b/examples/cube/Cargo.toml index 51afe8947..5c94d6188 100644 --- a/examples/cube/Cargo.toml +++ b/examples/cube/Cargo.toml @@ -14,10 +14,12 @@ harness = false [dependencies] bytemuck.workspace = true glam.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen-test.workspace = true + [dev-dependencies] wgpu-test.workspace = true diff --git a/examples/cube/src/main.rs b/examples/cube/src/main.rs index 33a1260d4..badeae8e5 100644 --- a/examples/cube/src/main.rs +++ b/examples/cube/src/main.rs @@ -1,5 +1,5 @@ use bytemuck::{Pod, Zeroable}; -use std::{borrow::Cow, f32::consts, future::Future, mem, pin::Pin, task}; +use std::{borrow::Cow, f32::consts, mem}; use wgpu::util::DeviceExt; #[repr(C)] @@ -80,28 +80,6 @@ fn create_texels(size: usize) -> Vec { .collect() } -/// A wrapper for `pop_error_scope` futures that panics if an error occurs. -/// -/// Given a future `inner` of an `Option` for some error type `E`, -/// wait for the future to be ready, and panic if its value is `Some`. -/// -/// This can be done simpler with `FutureExt`, but we don't want to add -/// a dependency just for this small case. -struct ErrorFuture { - inner: F, -} -impl>> Future for ErrorFuture { - type Output = (); - fn poll(self: Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll<()> { - let inner = unsafe { self.map_unchecked_mut(|me| &mut me.inner) }; - inner.poll(cx).map(|error| { - if let Some(e) = error { - panic!("Rendering {e}"); - } - }) - } -} - struct Example { vertex_buf: wgpu::Buffer, index_buf: wgpu::Buffer, @@ -352,14 +330,7 @@ impl wgpu_example::framework::Example for Example { queue.write_buffer(&self.uniform_buf, 0, bytemuck::cast_slice(mx_ref)); } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - spawner: &wgpu_example::framework::Spawner, - ) { - device.push_error_scope(wgpu::ErrorFilter::Validation); + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); { @@ -397,11 +368,6 @@ impl wgpu_example::framework::Example for Example { } queue.submit(Some(encoder.finish())); - - // If an error occurs, report it and panic. - spawner.spawn_local(ErrorFuture { - inner: device.pop_error_scope(), - }); } } diff --git a/examples/hello-compute/Cargo.toml b/examples/hello-compute/Cargo.toml index b9a485775..22b981910 100644 --- a/examples/hello-compute/Cargo.toml +++ b/examples/hello-compute/Cargo.toml @@ -26,5 +26,7 @@ log.workspace = true wasm-bindgen-futures.workspace = true [dev-dependencies] -wasm-bindgen-test.workspace = true wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true diff --git a/examples/hello-synchronization/Cargo.toml b/examples/hello-synchronization/Cargo.toml index 19b255fa9..ff9594b6c 100644 --- a/examples/hello-synchronization/Cargo.toml +++ b/examples/hello-synchronization/Cargo.toml @@ -27,5 +27,7 @@ wasm-bindgen-futures.workspace = true web-sys = { workspace = true, features = ["Document"] } [dev-dependencies] -wasm-bindgen-test.workspace = true -wgpu-test.workspace = true \ No newline at end of file +wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/mipmap/Cargo.toml b/examples/mipmap/Cargo.toml index dff04a4f2..46df0175e 100644 --- a/examples/mipmap/Cargo.toml +++ b/examples/mipmap/Cargo.toml @@ -14,10 +14,12 @@ harness = false [dependencies] bytemuck.workspace = true glam.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true diff --git a/examples/mipmap/src/main.rs b/examples/mipmap/src/main.rs index f6c1c66ed..5b6c9ebe4 100644 --- a/examples/mipmap/src/main.rs +++ b/examples/mipmap/src/main.rs @@ -467,13 +467,7 @@ impl wgpu_example::framework::Example for Example { queue.write_buffer(&self.uniform_buf, 0, bytemuck::cast_slice(mx_ref)); } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); { diff --git a/examples/msaa-line/Cargo.toml b/examples/msaa-line/Cargo.toml index ae2ca5b05..f107b0064 100644 --- a/examples/msaa-line/Cargo.toml +++ b/examples/msaa-line/Cargo.toml @@ -15,7 +15,6 @@ harness = false bytemuck.workspace = true glam.workspace = true log.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true @@ -23,3 +22,5 @@ winit.workspace = true [dev-dependencies] wgpu-test.workspace = true +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true diff --git a/examples/msaa-line/src/main.rs b/examples/msaa-line/src/main.rs index ac71d4c09..7d5c7e928 100644 --- a/examples/msaa-line/src/main.rs +++ b/examples/msaa-line/src/main.rs @@ -251,13 +251,7 @@ impl wgpu_example::framework::Example for Example { Example::create_multisampled_framebuffer(device, config, self.sample_count); } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { if self.rebuild_bundle { self.bundle = Example::create_bundle( device, diff --git a/examples/repeated-compute/Cargo.toml b/examples/repeated-compute/Cargo.toml index 6df3820e7..5e26d020e 100644 --- a/examples/repeated-compute/Cargo.toml +++ b/examples/repeated-compute/Cargo.toml @@ -27,5 +27,7 @@ wasm-bindgen-futures.workspace = true web-sys = { workspace = true, features = ["Document"] } [dev-dependencies] -wasm-bindgen-test.workspace = true wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true diff --git a/examples/shadow/Cargo.toml b/examples/shadow/Cargo.toml index d536eb0e4..5bcccfe9b 100644 --- a/examples/shadow/Cargo.toml +++ b/examples/shadow/Cargo.toml @@ -14,7 +14,6 @@ harness = false [dependencies] bytemuck.workspace = true glam.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true @@ -22,3 +21,5 @@ winit.workspace = true [dev-dependencies] wgpu-test.workspace = true +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/shadow/src/main.rs b/examples/shadow/src/main.rs index 2492dad9b..401860781 100644 --- a/examples/shadow/src/main.rs +++ b/examples/shadow/src/main.rs @@ -703,13 +703,7 @@ impl wgpu_example::framework::Example for Example { self.forward_depth = Self::create_depth_texture(config, device); } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { // update uniforms for entity in self.entities.iter_mut() { if entity.rotation_speed != 0.0 { diff --git a/examples/skybox/Cargo.toml b/examples/skybox/Cargo.toml index c96b75004..584b5550e 100644 --- a/examples/skybox/Cargo.toml +++ b/examples/skybox/Cargo.toml @@ -17,10 +17,12 @@ ddsfile.workspace = true glam.workspace = true obj.workspace = true log.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] -wgpu-test.workspace = true \ No newline at end of file +wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/skybox/src/main.rs b/examples/skybox/src/main.rs index bfc0e909d..b74b24ce5 100644 --- a/examples/skybox/src/main.rs +++ b/examples/skybox/src/main.rs @@ -391,13 +391,7 @@ impl wgpu_example::framework::Example for Example { self.camera.screen_size = (config.width, config.height); } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); diff --git a/examples/stencil-triangles/Cargo.toml b/examples/stencil-triangles/Cargo.toml index 729b3d9ff..091523cb6 100644 --- a/examples/stencil-triangles/Cargo.toml +++ b/examples/stencil-triangles/Cargo.toml @@ -13,10 +13,12 @@ harness = false [dependencies] bytemuck.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/stencil-triangles/src/main.rs b/examples/stencil-triangles/src/main.rs index 3e51d2d0a..554c60812 100644 --- a/examples/stencil-triangles/src/main.rs +++ b/examples/stencil-triangles/src/main.rs @@ -177,13 +177,7 @@ impl wgpu_example::framework::Example for Example { // empty } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); { diff --git a/examples/storage-texture/Cargo.toml b/examples/storage-texture/Cargo.toml index d3c6903e0..8df9bdab8 100644 --- a/examples/storage-texture/Cargo.toml +++ b/examples/storage-texture/Cargo.toml @@ -33,5 +33,7 @@ web-sys = { workspace = true, features = [ ] } [dev-dependencies] -wasm-bindgen-test.workspace = true wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/texture-arrays/Cargo.toml b/examples/texture-arrays/Cargo.toml index b78821930..50d242b90 100644 --- a/examples/texture-arrays/Cargo.toml +++ b/examples/texture-arrays/Cargo.toml @@ -13,10 +13,12 @@ harness = false [dependencies] bytemuck.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/texture-arrays/src/main.rs b/examples/texture-arrays/src/main.rs index a87cae6d0..634f7d960 100644 --- a/examples/texture-arrays/src/main.rs +++ b/examples/texture-arrays/src/main.rs @@ -361,13 +361,7 @@ impl wgpu_example::framework::Example for Example { fn update(&mut self, _event: winit::event::WindowEvent) { // noop } - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: Some("primary"), }); diff --git a/examples/timestamp-queries/Cargo.toml b/examples/timestamp-queries/Cargo.toml index f61a0f298..bbcc52e3e 100644 --- a/examples/timestamp-queries/Cargo.toml +++ b/examples/timestamp-queries/Cargo.toml @@ -26,6 +26,7 @@ log.workspace = true wasm-bindgen-futures.workspace = true [dev-dependencies] -wasm-bindgen-test.workspace = true wgpu-test.workspace = true +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/water/Cargo.toml b/examples/water/Cargo.toml index de2514203..234449687 100644 --- a/examples/water/Cargo.toml +++ b/examples/water/Cargo.toml @@ -16,10 +16,12 @@ bytemuck.workspace = true nanorand.workspace = true glam.workspace = true noise.workspace = true -wasm-bindgen-test.workspace = true wgpu-example.workspace = true wgpu.workspace = true winit.workspace = true [dev-dependencies] wgpu-test.workspace = true + +[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +wasm-bindgen-test.workspace = true \ No newline at end of file diff --git a/examples/water/src/main.rs b/examples/water/src/main.rs index 7f31b2b59..2b2541591 100644 --- a/examples/water/src/main.rs +++ b/examples/water/src/main.rs @@ -691,13 +691,7 @@ impl wgpu_example::framework::Example for Example { } #[allow(clippy::eq_op)] - fn render( - &mut self, - view: &wgpu::TextureView, - device: &wgpu::Device, - queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, - ) { + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { // Increment frame count regardless of if we draw. self.current_frame += 1; let back_color = wgpu::Color { diff --git a/naga-cli/Cargo.toml b/naga-cli/Cargo.toml index e5b19a106..101aa3f04 100644 --- a/naga-cli/Cargo.toml +++ b/naga-cli/Cargo.toml @@ -1,11 +1,10 @@ [package] name = "naga-cli" version = "0.14.0" -authors = ["Naga Developers"] +authors = ["gfx-rs developers"] edition = "2021" description = "Shader translation command line tool" -homepage = "https://github.com/gfx-rs/naga" -repository = "https://github.com/gfx-rs/naga" +repository = "https://github.com/gfx-rs/wgpu/tree/trunk/naga-cli" keywords = ["shader", "SPIR-V", "GLSL", "MSL"] license = "MIT OR Apache-2.0" diff --git a/naga/.github/workflows/ci.yml b/naga/.github/workflows/ci.yml deleted file mode 100644 index ef2c49712..000000000 --- a/naga/.github/workflows/ci.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: CI -on: [push, pull_request] - -env: - CARGO_INCREMENTAL: false - CARGO_TERM_COLOR: always - RUST_BACKTRACE: full - MSRV: 1.65 - -jobs: - check-msrv: - name: Check MSRV and minimal-versions - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install MSRV toolchain - run: rustup toolchain install $MSRV --no-self-update --profile=minimal --component clippy - - - name: Install nightly toolchain - run: rustup toolchain install nightly --no-self-update --profile=minimal - - - name: Install cargo-hack - uses: taiki-e/install-action@v2 - with: - tool: cargo-hack - - # -Z avoid-dev-deps doesn't work - - run: cargo +nightly hack generate-lockfile --remove-dev-deps -Z minimal-versions - - - name: Test all features - run: cargo +$MSRV clippy --all-features --workspace -- -D warnings - - test: - name: Test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install cargo-nextest and cargo-llvm-cov - uses: taiki-e/install-action@v2 - with: - tool: cargo-nextest,cargo-llvm-cov - - - name: Default test - # Our intention here is to test `naga` with no features enabled. But - # since `cli` is the default package, a plain `cargo test` will build - # `naga` with the features requested in `cli/Cargo.toml`. Passing - # `--package naga` causes us to use the default features in the - # top-level `Cargo.toml` instead. - run: cargo nextest run --package naga - - - name: Test all features - run: cargo llvm-cov --lcov --output-path lcov.info nextest --all-features --workspace - - - name: Upload coverage report to codecov - uses: codecov/codecov-action@v3 - with: - files: lcov.info - - - name: Check snapshots - run: git diff --exit-code -- tests/out - - check: - name: Check benchmarks and naga-fuzz - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Check benchmarks - run: cargo check --benches - - - name: Check naga-fuzz - run: | - cd fuzz - cargo check - - documentation: - name: Documentation - runs-on: ubuntu-latest - env: - RUSTDOCFLAGS: -Dwarnings - steps: - - uses: actions/checkout@v3 - - - run: cargo doc -p naga --all-features --document-private-items - - fmt: - name: Format - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - run: cargo fmt -- --check diff --git a/naga/Cargo.toml b/naga/Cargo.toml index 91ed49a5c..eb5fb45f4 100644 --- a/naga/Cargo.toml +++ b/naga/Cargo.toml @@ -1,11 +1,10 @@ [package] name = "naga" version = "0.14.0" -authors = ["Naga Developers"] +authors = ["gfx-rs developers"] edition = "2021" description = "Shader translation infrastructure" -homepage = "https://github.com/gfx-rs/naga" -repository = "https://github.com/gfx-rs/naga" +repository = "https://github.com/gfx-rs/wgpu/tree/trunk/naga" keywords = ["shader", "SPIR-V", "GLSL", "MSL"] license = "MIT OR Apache-2.0" exclude = ["bin/**/*", "tests/**/*", "Cargo.lock", "target/**/*"] @@ -66,7 +65,7 @@ criterion = { version = "0.5", features = [] } bincode = "1" diff = "0.1" env_logger = "0.10" -hlsl-snapshots = { path = "./hlsl-snapshots" } +hlsl-snapshots = { version = "0.1.0", path = "./hlsl-snapshots" } # Require at least version 0.7.1 of ron, this version changed how floating points are # serialized by forcing them to always have the decimal part, this makes it backwards # incompatible with our tests because we do a syntatic diff and not a semantic one. diff --git a/naga/fuzz/Cargo.toml b/naga/fuzz/Cargo.toml index 3bacdf348..5a6c86c29 100644 --- a/naga/fuzz/Cargo.toml +++ b/naga/fuzz/Cargo.toml @@ -9,18 +9,15 @@ license = "MIT OR Apache-2.0" [package.metadata] cargo-fuzz = true -[dependencies] +[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios")))'.dependencies] arbitrary = { version = "1.0.2", features = ["derive"] } libfuzzer-sys = "0.4" -[dependencies.naga] +[target.'cfg(not(any(target_arch = "wasm32", target_os = "ios")))'.dependencies.naga] path = ".." +version = "0.14.0" features = ["arbitrary", "spv-in", "wgsl-in", "glsl-in", "validate"] -# Prevent this from interfering with workspaces -[workspace] -members = ["."] - [[bin]] name = "spv_parser" path = "fuzz_targets/spv_parser.rs" diff --git a/naga/fuzz/fuzz_targets/glsl_parser.rs b/naga/fuzz/fuzz_targets/glsl_parser.rs index 18d7175e0..aed7ba981 100644 --- a/naga/fuzz/fuzz_targets/glsl_parser.rs +++ b/naga/fuzz/fuzz_targets/glsl_parser.rs @@ -1,46 +1,49 @@ #![no_main] -use arbitrary::Arbitrary; -use libfuzzer_sys::fuzz_target; -use naga::{ - front::glsl::{Frontend, Options}, - FastHashMap, ShaderStage, -}; +#[cfg(not(any(target_arch = "wasm32", target_os = "ios")))] +mod fuzz { + use arbitrary::Arbitrary; + use libfuzzer_sys::fuzz_target; + use naga::{ + front::glsl::{Frontend, Options}, + FastHashMap, ShaderStage, + }; -#[derive(Debug, Arbitrary)] -enum ShaderStageProxy { - Vertex, - Fragment, - Compute, -} + #[derive(Debug, Arbitrary)] + enum ShaderStageProxy { + Vertex, + Fragment, + Compute, + } -impl From for ShaderStage { - fn from(proxy: ShaderStageProxy) -> Self { - match proxy { - ShaderStageProxy::Vertex => ShaderStage::Vertex, - ShaderStageProxy::Fragment => ShaderStage::Fragment, - ShaderStageProxy::Compute => ShaderStage::Compute, + impl From for ShaderStage { + fn from(proxy: ShaderStageProxy) -> Self { + match proxy { + ShaderStageProxy::Vertex => ShaderStage::Vertex, + ShaderStageProxy::Fragment => ShaderStage::Fragment, + ShaderStageProxy::Compute => ShaderStage::Compute, + } } } -} -#[derive(Debug, Arbitrary)] -struct OptionsProxy { - pub stage: ShaderStageProxy, - pub defines: FastHashMap, -} + #[derive(Debug, Arbitrary)] + struct OptionsProxy { + pub stage: ShaderStageProxy, + pub defines: FastHashMap, + } -impl From for Options { - fn from(proxy: OptionsProxy) -> Self { - Options { - stage: proxy.stage.into(), - defines: proxy.defines, + impl From for Options { + fn from(proxy: OptionsProxy) -> Self { + Options { + stage: proxy.stage.into(), + defines: proxy.defines, + } } } -} -fuzz_target!(|data: (OptionsProxy, String)| { - let (options, source) = data; - // Ensure the parser can handle potentially malformed strings without crashing. - let mut parser = Frontend::default(); - let _result = parser.parse(&options.into(), &source); -}); + fuzz_target!(|data: (OptionsProxy, String)| { + let (options, source) = data; + // Ensure the parser can handle potentially malformed strings without crashing. + let mut parser = Frontend::default(); + let _result = parser.parse(&options.into(), &source); + }); +} diff --git a/naga/fuzz/fuzz_targets/ir.rs b/naga/fuzz/fuzz_targets/ir.rs index ae1d90747..6768917c3 100644 --- a/naga/fuzz/fuzz_targets/ir.rs +++ b/naga/fuzz/fuzz_targets/ir.rs @@ -1,10 +1,14 @@ #![no_main] -use libfuzzer_sys::fuzz_target; +#[cfg(not(any(target_arch = "wasm32", target_os = "ios")))] +mod fuzz { + use libfuzzer_sys::fuzz_target; -fuzz_target!(|module: naga::Module| { - use naga::valid as v; - // Check if the module validates without errors. - //TODO: may also fuzz the flags and capabilities - let mut validator = v::Validator::new(v::ValidationFlags::all(), v::Capabilities::default()); - let _result = validator.validate(&module); -}); + fuzz_target!(|module: naga::Module| { + use naga::valid as v; + // Check if the module validates without errors. + //TODO: may also fuzz the flags and capabilities + let mut validator = + v::Validator::new(v::ValidationFlags::all(), v::Capabilities::default()); + let _result = validator.validate(&module); + }); +} diff --git a/naga/fuzz/fuzz_targets/spv_parser.rs b/naga/fuzz/fuzz_targets/spv_parser.rs index dda3d5e63..2b0fae296 100644 --- a/naga/fuzz/fuzz_targets/spv_parser.rs +++ b/naga/fuzz/fuzz_targets/spv_parser.rs @@ -1,9 +1,12 @@ #![no_main] -use libfuzzer_sys::fuzz_target; -use naga::front::spv::{Frontend, Options}; +#[cfg(not(any(target_arch = "wasm32", target_os = "ios")))] +mod fuzz { + use libfuzzer_sys::fuzz_target; + use naga::front::spv::{Frontend, Options}; -fuzz_target!(|data: Vec| { - // Ensure the parser can handle potentially malformed data without crashing. - let options = Options::default(); - let _result = Frontend::new(data.into_iter(), &options).parse(); -}); + fuzz_target!(|data: Vec| { + // Ensure the parser can handle potentially malformed data without crashing. + let options = Options::default(); + let _result = Frontend::new(data.into_iter(), &options).parse(); + }); +} diff --git a/naga/fuzz/fuzz_targets/wgsl_parser.rs b/naga/fuzz/fuzz_targets/wgsl_parser.rs index a61e99979..7513d63d1 100644 --- a/naga/fuzz/fuzz_targets/wgsl_parser.rs +++ b/naga/fuzz/fuzz_targets/wgsl_parser.rs @@ -1,8 +1,11 @@ #![no_main] -use libfuzzer_sys::fuzz_target; -use naga::front::wgsl::Frontend; +#[cfg(not(any(target_arch = "wasm32", target_os = "ios")))] +mod fuzz { + use libfuzzer_sys::fuzz_target; + use naga::front::wgsl::Frontend; -fuzz_target!(|data: String| { - // Ensure the parser can handle potentially malformed strings without crashing. - let _result = Frontend::new().parse(&data); -}); + fuzz_target!(|data: String| { + // Ensure the parser can handle potentially malformed strings without crashing. + let _result = Frontend::new().parse(&data); + }); +} diff --git a/tests/Cargo.toml b/tests/Cargo.toml index 56ce8d58a..1636e8d15 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -55,11 +55,11 @@ web-sys = { workspace = true } [dev-dependencies] naga = { workspace = true, features = ["wgsl-in"] } -wasm-bindgen-test.workspace = true [target.'cfg(target_arch = "wasm32")'.dev-dependencies] image.workspace = true js-sys.workspace = true wasm-bindgen-futures.workspace = true +wasm-bindgen-test.workspace = true wasm-bindgen.workspace = true web-sys = { workspace = true, features = ["CanvasRenderingContext2d", "Blob"] } diff --git a/tests/src/config.rs b/tests/src/config.rs index c6fe02b05..fa96adbc1 100644 --- a/tests/src/config.rs +++ b/tests/src/config.rs @@ -10,9 +10,13 @@ cfg_if::cfg_if! { // even with the `fragile-send-sync-non-atomic-wasm` enabled. pub trait RunTestSendSync {} impl RunTestSendSync for T {} + pub trait RunTestSend {} + impl RunTestSend for T {} } else { - pub type RunTestAsync = Arc Pin + Send + Sync>> + Send + Sync>; + pub type RunTestAsync = Arc Pin + Send>> + Send + Sync>; + pub trait RunTestSend: Send {} + impl RunTestSend for T where T: Send {} pub trait RunTestSendSync: Send + Sync {} impl RunTestSendSync for T where T: Send + Sync {} } @@ -97,7 +101,7 @@ impl GpuTestConfiguration { pub fn run_async(self, test: F) -> Self where F: Fn(TestingContext) -> R + RunTestSendSync + 'static, - R: Future + RunTestSendSync + 'static, + R: Future + RunTestSend + 'static, { Self { test: Some(Arc::new(move |ctx| Box::pin(test(ctx)))), diff --git a/tests/src/native.rs b/tests/src/native.rs index e7aaa5b1e..e49e9d74d 100644 --- a/tests/src/native.rs +++ b/tests/src/native.rs @@ -11,7 +11,7 @@ use crate::{ config::GpuTestConfiguration, params::TestInfo, report::AdapterReport, run::execute_test, }; -type NativeTestFuture = Pin + Send + Sync>>; +type NativeTestFuture = Pin + Send>>; struct NativeTest { name: String, diff --git a/tests/tests/device.rs b/tests/tests/device.rs index 3135587fc..108c7cc26 100644 --- a/tests/tests/device.rs +++ b/tests/tests/device.rs @@ -27,15 +27,14 @@ static CROSS_DEVICE_BIND_GROUP_USAGE: GpuTestConfiguration = GpuTestConfiguratio }); #[cfg(not(all(target_arch = "wasm32", not(target_os = "emscripten"))))] -#[test] -fn request_device_error_on_native() { - pollster::block_on(request_device_error_message()); -} +#[gpu_test] +static REQUEST_DEVICE_ERROR_MESSAGE_NATIVE: GpuTestConfiguration = + GpuTestConfiguration::new().run_async(|_ctx| request_device_error_message()); /// Check that `RequestDeviceError`s produced have some diagnostic information. /// /// Note: this is a wasm *and* native test. On wasm it is run directly; on native, indirectly -#[wasm_bindgen_test::wasm_bindgen_test] +#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] async fn request_device_error_message() { // Not using initialize_test() because that doesn't let us catch the error // nor .await anything diff --git a/wgpu-core/Cargo.toml b/wgpu-core/Cargo.toml index 6ad0bedf7..a60cec71e 100644 --- a/wgpu-core/Cargo.toml +++ b/wgpu-core/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "wgpu-core" version = "0.18.0" -authors = ["wgpu developers"] +authors = ["gfx-rs developers"] edition = "2021" description = "WebGPU core logic on wgpu-hal" homepage = "https://wgpu.rs/" diff --git a/wgpu-hal/Cargo.toml b/wgpu-hal/Cargo.toml index 02d4d2760..4de36a1d9 100644 --- a/wgpu-hal/Cargo.toml +++ b/wgpu-hal/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "wgpu-hal" version = "0.18.0" -authors = ["wgpu developers"] +authors = ["gfx-rs developers"] edition = "2021" description = "WebGPU hardware abstraction layer" homepage = "https://wgpu.rs/" @@ -138,7 +138,9 @@ winapi = { version = "0.3", features = [ "winuser", "dcomp", ] } -d3d12 = { path = "../d3d12/", features = ["libloading"], optional = true } +d3d12 = { path = "../d3d12/", version = "0.7.0", optional = true, features = [ + "libloading", +] } [target.'cfg(any(target_os="macos", target_os="ios"))'.dependencies] # backend: Metal diff --git a/wgpu-types/Cargo.toml b/wgpu-types/Cargo.toml index 5ae99b93c..491b6c519 100644 --- a/wgpu-types/Cargo.toml +++ b/wgpu-types/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "wgpu-types" version = "0.18.0" -authors = ["wgpu developers"] +authors = ["gfx-rs developers"] edition = "2021" description = "WebGPU types" homepage = "https://wgpu.rs/"