diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fbbdf69d8e..01a47a3384 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -10,6 +10,7 @@ jobs: check: name: Test strategy: + fail-fast: false matrix: include: - os: ubuntu-latest @@ -82,11 +83,13 @@ jobs: # Unset legacy paths: echo "ANDROID_NDK_HOME=" >> $env:GITHUB_ENV echo "ANDROID_NDK_PATH=" >> $env:GITHUB_ENV + # Perform a clean build on Windows. + cargo clean --manifest-path examples/runners/wgpu/Cargo.toml - name: Compile WGPU example for Android run: | rustup target add aarch64-linux-android - cargo apk build --manifest-path examples/runners/wgpu/Cargo.toml --features use-installed-tools --no-default-features + cargo apk build --manifest-path examples/runners/wgpu/Cargo.toml lint: name: Lint diff --git a/.github/workflows/clippy.sh b/.github/workflows/clippy.sh index eabdd8b69d..b72a75015e 100755 --- a/.github/workflows/clippy.sh +++ b/.github/workflows/clippy.sh @@ -29,13 +29,12 @@ function clippy_no_features() { # Core crates clippy crates/rustc_codegen_spirv -clippy crates/spirv-builder +clippy_no_features crates/spirv-builder -# Examples +# Examples +clippy_no_features examples/runners/ash +clippy_no_features examples/runners/wgpu -clippy examples/runners/ash -clippy examples/runners/wgpu - -clippy_no_features examples/runners/cpu -clippy_no_features examples/shaders/sky-shader +clippy_no_features examples/runners/cpu +clippy_no_features examples/shaders/sky-shader clippy_no_features examples/shaders/simplest-shader diff --git a/.github/workflows/test.sh b/.github/workflows/test.sh index 33926893f7..8068dbba9e 100755 --- a/.github/workflows/test.sh +++ b/.github/workflows/test.sh @@ -11,11 +11,11 @@ os=$1 function cargo_test() { echo ::group::"$1 build" - cargo test \ + cargo build \ --manifest-path "$1/Cargo.toml" \ --no-default-features \ --features "$FEAT" \ - --no-run + --tests echo ::endgroup:: echo ::group::"$1 test" @@ -28,26 +28,26 @@ function cargo_test() { function cargo_test_no_features() { echo ::group::"$1 build" - cargo test --manifest-path "$1/Cargo.toml" --no-run + cargo build --manifest-path $1/Cargo.toml echo ::endgroup:: echo ::group::"$1 test" - cargo test --manifest-path "$1/Cargo.toml" + cargo test --manifest-path $1/Cargo.toml echo ::endgroup:: } -# Core crates -cargo_test crates/rustc_codegen_spirv -cargo_test crates/spirv-builder +# # Core crates +cargo_test_no_features crates/rustc_codegen_spirv +cargo_test_no_features crates/spirv-builder +cargo_test_no_features crates/spirv-std # Examples # See: https://github.com/EmbarkStudios/rust-gpu/issues/84 if [[ "$os" != "macOS" ]]; then - cargo_test examples/runners/ash + cargo_test_no_features examples/runners/ash fi -cargo_test examples/runners/wgpu - +cargo_test_no_features examples/runners/wgpu cargo_test_no_features examples/runners/cpu cargo_test_no_features examples/shaders/sky-shader cargo_test_no_features examples/shaders/simplest-shader diff --git a/.gitignore b/.gitignore index 2f7896d1d1..3497f57d4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target/ +examples/**/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock index df1a02666c..19f88e6192 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,11 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" - [[package]] name = "aho-corasick" version = "0.7.15" @@ -15,71 +9,20 @@ dependencies = [ "memchr", ] -[[package]] -name = "andrew" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4afb09dd642feec8408e33f92f3ffc4052946f6b20f32fb99c1f58cd4fa7cf" -dependencies = [ - "bitflags", - "rusttype", - "walkdir", - "xdg", - "xml-rs", -] - [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] -name = "arrayvec" -version = "0.5.2" +name = "anyhow" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "ash" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c69a8137596e84c22d57f3da1b5de1d4230b1742a710091c85f4d7ce50f00f38" -dependencies = [ - "libloading", -] - -[[package]] -name = "ash-molten" -version = "0.7.2+1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b31c40fe3810300e6a0083a4b8fad1be08f20eb1a4b5b07bfd477e287570f64e" -dependencies = [ - "ash", -] - -[[package]] -name = "ash-window" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905c4ca25f752e7ab3c3e8f2882625f876e4c3ea5feffbc83f81d697e043afd6" -dependencies = [ - "ash", - "raw-window-handle", - "raw-window-metal", -] +checksum = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7" [[package]] name = "atty" @@ -89,15 +32,9 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] -[[package]] -name = "autocfg" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" - [[package]] name = "autocfg" version = "1.0.1" @@ -110,39 +47,12 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528c4b6f81eb2aadd3504da4ddc5bf5caec1b4aaf0d9dccfb8aaf2850f5b39c" -[[package]] -name = "bit-set" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3" - [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "bumpalo" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" - [[package]] name = "byteorder" version = "1.3.4" @@ -150,20 +60,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] -name = "calloop" -version = "0.6.5" +name = "cargo-sysroot" +version = "0.8.0-alpha" +source = "git+https://github.com/XAMPPRocky/cargo-sysroot?branch=main#bd9e5d53508b6e9e0d0de5ac43795bd199da41a5" +dependencies = [ + "anyhow", + "cargo-toml2", + "fs_extra", + "remove_dir_all 0.6.1", + "structopt", +] + +[[package]] +name = "cargo-toml2" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b036167e76041694579972c28cf4877b4f92da222560ddb49008937b6a6727c" +checksum = "22b689b002fa6142753b431e1414d0336065b692e1d0e400504698f75997817d" dependencies = [ - "log", - "nix 0.18.0", + "serde", + "serde_derive", + "toml", ] [[package]] name = "cc" -version = "1.0.62" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40" +checksum = "95752358c8f7552394baf48cd82695b345628ad3f170d607de3ca03b8dacca15" dependencies = [ "jobserver", ] @@ -180,2895 +103,1010 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time", - "winapi 0.3.9", -] - [[package]] name = "clap" version = "2.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" dependencies = [ - "ansi_term 0.11.0", + "ansi_term", "atty", "bitflags", - "strsim 0.8.0", - "textwrap 0.11.0", + "strsim", + "textwrap", "unicode-width", "vec_map", ] [[package]] -name = "clap" -version = "3.0.0-beta.2" +name = "const_fn" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd1061998a501ee7d4b6d449020df3266ca3124b941ec56cf2005c3779ca142" -dependencies = [ - "atty", - "bitflags", - "clap_derive", - "indexmap", - "lazy_static", - "os_str_bytes", - "strsim 0.10.0", - "termcolor", - "textwrap 0.12.1", - "unicode-width", - "vec_map", -] +checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" [[package]] -name = "clap_derive" -version = "3.0.0-beta.2" +name = "crossbeam-channel" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370f715b81112975b1b69db93e0b56ea4cd4e5002ac43b2da8474106a54096a1" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] -name = "cloudabi" -version = "0.0.3" +name = "crossbeam-channel" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" dependencies = [ - "bitflags", + "cfg-if 1.0.0", + "crossbeam-utils 0.8.1", ] [[package]] -name = "cloudabi" -version = "0.1.0" +name = "crossbeam-deque" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ - "bitflags", + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils 0.8.1", ] [[package]] -name = "cocoa" -version = "0.20.2" +name = "crossbeam-epoch" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c49e86fc36d5704151f5996b7b3795385f50ce09e3be0f47a0cfde869681cf8" +checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" dependencies = [ - "bitflags", - "block", - "core-foundation 0.7.0", - "core-graphics 0.19.2", - "foreign-types", - "libc", - "objc", + "cfg-if 1.0.0", + "const_fn", + "crossbeam-utils 0.8.1", + "lazy_static", + "memoffset", + "scopeguard", ] [[package]] -name = "cocoa" -version = "0.23.0" +name = "crossbeam-utils" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54201c07dcf3a5ca33fececb8042aed767ee4bfd5a0235a8ceabcda956044b2" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "bitflags", - "block", - "cocoa-foundation", - "core-foundation 0.9.1", - "core-graphics 0.22.1", - "foreign-types", - "libc", - "objc", + "autocfg", + "cfg-if 0.1.10", + "lazy_static", ] [[package]] -name = "cocoa-foundation" -version = "0.1.0" +name = "crossbeam-utils" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" -dependencies = [ - "bitflags", - "block", - "core-foundation 0.9.1", - "core-graphics-types", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "compute-shader" -version = "0.1.0" +checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" dependencies = [ - "spirv-std", + "autocfg", + "cfg-if 1.0.0", + "lazy_static", ] [[package]] -name = "console_error_panic_hook" -version = "0.1.6" +name = "ctor" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +checksum = "7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484" dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen", + "quote 1.0.7", + "syn 1.0.53", ] [[package]] -name = "console_log" -version = "0.2.0" +name = "derive_more" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" +checksum = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" dependencies = [ - "log", - "web-sys", + "lazy_static", + "proc-macro2 0.4.30", + "quote 0.6.13", + "regex", + "rustc_version", + "syn 0.15.44", ] [[package]] -name = "const_fn" -version = "0.4.3" +name = "difference" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] -name = "copyless" -version = "0.1.5" +name = "either" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] -name = "core-foundation" -version = "0.7.0" +name = "eyre" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "5f29abf4740a4778632fe27a4f681ef5b7a6f659aeba3330ac66f48e20cfa3b7" dependencies = [ - "core-foundation-sys 0.7.0", - "libc", + "indenter", + "once_cell", ] [[package]] -name = "core-foundation" -version = "0.9.1" +name = "filetime" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" dependencies = [ - "core-foundation-sys 0.8.2", + "cfg-if 1.0.0", "libc", + "redox_syscall", + "winapi", ] [[package]] -name = "core-foundation-sys" -version = "0.7.0" +name = "form_urlencoded" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +dependencies = [ + "matches", + "percent-encoding", +] [[package]] -name = "core-foundation-sys" -version = "0.8.2" +name = "fs_extra" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" +checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" [[package]] -name = "core-graphics" -version = "0.19.2" +name = "fxhash" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "bitflags", - "core-foundation 0.7.0", - "foreign-types", - "libc", + "byteorder", ] [[package]] -name = "core-graphics" -version = "0.22.1" +name = "getrandom" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc239bba52bab96649441699533a68de294a101533b0270b2d65aa402b29a7f9" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ - "bitflags", - "core-foundation 0.9.1", - "core-graphics-types", - "foreign-types", + "cfg-if 0.1.10", "libc", + "wasi", ] [[package]] -name = "core-graphics-types" -version = "0.1.1" +name = "git2" +version = "0.13.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +checksum = "ca6f1a0238d7f8f8fd5ee642f4ebac4dbc03e03d1f78fbe7a3ede35dcf7e2224" dependencies = [ "bitflags", - "core-foundation 0.9.1", - "foreign-types", "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", ] [[package]] -name = "core-video-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +name = "glam" +version = "0.10.2" +source = "git+https://github.com/EmbarkStudios/glam-rs?rev=238c449e3a326d7586e707841835c8736b4a418f#238c449e3a326d7586e707841835c8736b4a418f" dependencies = [ - "cfg-if 0.1.10", - "core-foundation-sys 0.7.0", - "core-graphics 0.19.2", - "libc", - "objc", + "num-traits", + "version_check", ] [[package]] -name = "crossbeam-channel" -version = "0.4.4" +name = "heck" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", + "unicode-segmentation", ] [[package]] -name = "crossbeam-channel" -version = "0.5.0" +name = "hermit-abi" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.0", + "libc", ] [[package]] -name = "crossbeam-deque" -version = "0.8.0" +name = "idna" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils 0.8.0", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.0" +name = "indenter" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0f606a85340376eef0d6d8fec399e6d4a544d648386c6645eb6d0653b27d9f" -dependencies = [ - "cfg-if 1.0.0", - "const_fn", - "crossbeam-utils 0.8.0", - "lazy_static", - "memoffset", - "scopeguard", -] +checksum = "e0bd112d44d9d870a6819eb505d04dd92b5e4d94bb8c304924a0872ae7016fb5" [[package]] -name = "crossbeam-utils" -version = "0.7.2" +name = "itoa" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg 1.0.1", - "cfg-if 0.1.10", - "lazy_static", -] +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" [[package]] -name = "crossbeam-utils" -version = "0.8.0" +name = "jobserver" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec91540d98355f690a86367e566ecad2e9e579f230230eb7c21398372be73ea5" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" dependencies = [ - "autocfg 1.0.1", - "cfg-if 1.0.0", - "const_fn", - "lazy_static", + "libc", ] [[package]] -name = "ctor" -version = "0.1.16" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbaabec2c953050352311293be5c6aba8e141ba19d6811862b232d6fd020484" -dependencies = [ - "quote 1.0.7", - "syn 1.0.48", -] +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "d3d12" -version = "0.3.2" +name = "libc" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a60cceb22c7c53035f8980524fdc7f17cf49681a3c154e6757d30afbec6ec4" -dependencies = [ - "bitflags", - "libloading", - "winapi 0.3.9", -] +checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" [[package]] -name = "darling" -version = "0.10.2" +name = "libgit2-sys" +version = "0.12.14+1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +checksum = "8f25af58e6495f7caf2919d08f212de550cfa3ed2f5e744988938ea292b9f549" dependencies = [ - "darling_core", - "darling_macro", -] + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] [[package]] -name = "darling_core" -version = "0.10.2" +name = "libm" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2 1.0.24", - "quote 1.0.7", - "strsim 0.9.3", - "syn 1.0.48", -] +checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] -name = "darling_macro" -version = "0.10.2" +name = "libssh2-sys" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +checksum = "df40b13fe7ea1be9b9dffa365a51273816c345fc1811478b57ed7d964fbfc4ce" dependencies = [ - "darling_core", - "quote 1.0.7", - "syn 1.0.48", + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", ] [[package]] -name = "derivative" -version = "2.1.1" +name = "libz-sys" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] -name = "derive_more" -version = "0.15.0" +name = "log" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" dependencies = [ - "lazy_static", - "proc-macro2 0.4.30", - "quote 0.6.13", - "regex", - "rustc_version", - "syn 0.15.44", + "cfg-if 0.1.10", ] [[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" - -[[package]] -name = "dispatch" -version = "0.2.0" +name = "matches" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] -name = "dlib" -version = "0.4.2" +name = "maybe-uninit" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76" -dependencies = [ - "libloading", -] +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] -name = "downcast-rs" -version = "1.2.0" +name = "memchr" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" [[package]] -name = "either" -version = "1.6.1" +name = "memoffset" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "example-runner-ash" -version = "0.1.0" -dependencies = [ - "ash", - "ash-molten", - "ash-window", - "cfg-if 1.0.0", - "shared", - "spirv-builder", - "structopt", - "winit", -] - -[[package]] -name = "example-runner-cpu" -version = "0.1.0" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" dependencies = [ - "minifb", - "rayon", - "shared", - "sky-shader", - "spirv-std", + "autocfg", ] [[package]] -name = "example-runner-wgpu" -version = "0.1.0" +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ - "cfg-if 1.0.0", - "clap 3.0.0-beta.2", - "console_error_panic_hook", - "console_log", - "futures", - "ndk-glue", - "shared", - "spirv-builder", - "strum", - "wasm-bindgen-futures", - "web-sys", - "wgpu", - "wgpu-subscriber", - "winit", + "autocfg", + "libm", ] [[package]] -name = "filetime" -version = "0.2.13" +name = "num_cpus" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" dependencies = [ - "cfg-if 1.0.0", + "hermit-abi", "libc", - "redox_syscall", - "winapi 0.3.9", ] [[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" +name = "once_cell" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "openssl-probe" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] -name = "fuchsia-cprng" -version = "0.1.1" +name = "openssl-sys" +version = "0.9.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] [[package]] -name = "fuchsia-zircon" -version = "0.3.3" +name = "output_vt100" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" dependencies = [ - "bitflags", - "fuchsia-zircon-sys", + "winapi", ] [[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" +name = "percent-encoding" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] -name = "futures" -version = "0.3.8" +name = "pipe" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" +checksum = "bcd11e042e056991b5df9c0c5ae6bd0cce219b74294c40f65b89f40f7030106c" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "crossbeam-channel 0.4.4", ] [[package]] -name = "futures-channel" -version = "0.3.8" +name = "pkg-config" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" -dependencies = [ - "futures-core", - "futures-sink", -] +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] -name = "futures-core" -version = "0.3.8" +name = "ppv-lite86" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] -name = "futures-executor" -version = "0.3.8" +name = "pretty_assertions" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" +checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "ansi_term", + "ctor", + "difference", + "output_vt100", ] [[package]] -name = "futures-io" -version = "0.3.8" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.53", + "version_check", +] [[package]] -name = "futures-macro" -version = "0.3.8" +name = "proc-macro-error-attr" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro-hack", "proc-macro2 1.0.24", "quote 1.0.7", - "syn 1.0.48", + "version_check", ] [[package]] -name = "futures-sink" -version = "0.3.8" +name = "proc-macro2" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] [[package]] -name = "futures-task" -version = "0.3.8" +name = "proc-macro2" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ - "once_cell", + "unicode-xid 0.2.1", ] [[package]] -name = "futures-util" -version = "0.3.8" +name = "quote" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", + "proc-macro2 0.4.30", ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "quote" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" dependencies = [ - "byteorder", + "proc-macro2 1.0.24", ] [[package]] -name = "generator" -version = "0.6.23" +name = "rand" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "cc", + "getrandom", "libc", - "log", - "rustc_version", - "winapi 0.3.9", + "rand_chacha", + "rand_core", + "rand_hc", ] [[package]] -name = "getrandom" -version = "0.1.15" +name = "rand_chacha" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ - "cfg-if 0.1.10", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "ppv-lite86", + "rand_core", ] [[package]] -name = "gfx-auxil" -version = "0.7.0" +name = "rand_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cd956b592970f08545b9325b87580eb95a51843b6f39da27b8667fec1a1216" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "fxhash", - "gfx-hal", - "spirv_cross", + "getrandom", ] [[package]] -name = "gfx-backend-dx11" -version = "0.6.15" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b0c3b8b2e0a60c1380a7c27652cd86b791e5d8312fb9592a7a59bd437e9532" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "arrayvec", - "bitflags", - "gfx-auxil", - "gfx-hal", - "libloading", - "log", - "parking_lot", - "range-alloc", - "raw-window-handle", - "smallvec", - "spirv_cross", - "thunderdome", - "winapi 0.3.9", - "wio", + "rand_core", ] [[package]] -name = "gfx-backend-dx12" -version = "0.6.13" +name = "raw-string" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375014deed24d76b03604736dd899f0925158a1a96db90cbefb9cce070f71af7" -dependencies = [ - "arrayvec", - "bit-set", - "bitflags", - "d3d12", - "gfx-auxil", - "gfx-hal", - "log", - "range-alloc", - "raw-window-handle", - "smallvec", - "spirv_cross", - "winapi 0.3.9", -] +checksum = "e0501e134c6905fee1f10fed25b0a7e1261bf676cffac9543a7d0730dec01af2" [[package]] -name = "gfx-backend-empty" -version = "0.6.0" +name = "rayon" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2085227c12b78f6657a900c829f2d0deb46a9be3eaf86844fde263cdc218f77c" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ - "gfx-hal", - "log", - "raw-window-handle", + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", ] [[package]] -name = "gfx-backend-metal" -version = "0.6.4" +name = "rayon-core" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60ba1c77c112e7d35786dbd49ed26f2a76ce53a44bc09fe964935e4e35ed7f2b" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ - "arrayvec", - "bitflags", - "block", - "cocoa-foundation", - "copyless", - "foreign-types", - "gfx-auxil", - "gfx-hal", + "crossbeam-channel 0.5.0", + "crossbeam-deque", + "crossbeam-utils 0.8.1", "lazy_static", - "log", - "metal", - "objc", - "parking_lot", - "range-alloc", - "raw-window-handle", - "smallvec", - "spirv_cross", - "storage-map", + "num_cpus", ] [[package]] -name = "gfx-backend-vulkan" -version = "0.6.5" +name = "redox_syscall" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3a63cf61067a09b7d1ac480af3cb2ae0c5ede5bed294607bbd814cb1666c45" -dependencies = [ - "arrayvec", - "ash", - "byteorder", - "core-graphics-types", - "gfx-hal", - "inplace_it", - "lazy_static", - "log", - "objc", - "raw-window-handle", - "smallvec", - "winapi 0.3.9", - "x11", -] +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] -name = "gfx-descriptor" -version = "0.2.0" +name = "regex" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8c7afcd000f279d541a490e27117e61037537279b9342279abf4938fe60c6b" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" dependencies = [ - "arrayvec", - "fxhash", - "gfx-hal", - "log", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] -name = "gfx-hal" -version = "0.6.0" +name = "regex-syntax" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d0754f5b7a43915fd7466883b2d1bb0800d7cc4609178d0b27bf143b9e5123" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "bitflags", - "raw-window-handle", + "winapi", ] [[package]] -name = "gfx-memory" -version = "0.2.2" +name = "remove_dir_all" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dccdda5d2b39412f4ca2cb15c70b5a82783a86b0606f5e985342754c8ed88f05" +checksum = "d7b19f5c2df95a07275e7224924cc62f76f04525f4fda801473f85e325e81977" dependencies = [ - "bit-set", - "fxhash", - "gfx-hal", "log", - "slab", + "num_cpus", + "rayon", + "winapi", ] [[package]] -name = "glam" -version = "0.10.2" -source = "git+https://github.com/EmbarkStudios/glam-rs?rev=238c449e3a326d7586e707841835c8736b4a418f#238c449e3a326d7586e707841835c8736b4a418f" +name = "rspirv" +version = "0.7.0" +source = "git+https://github.com/gfx-rs/rspirv.git?rev=01ca0d2e5b667a0e4ff1bc1804511e38f9a08759#01ca0d2e5b667a0e4ff1bc1804511e38f9a08759" dependencies = [ + "derive_more", + "fxhash", "num-traits", - "version_check", + "spirv_headers", ] [[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" - -[[package]] -name = "heck" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" -dependencies = [ - "libc", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "indexmap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" -dependencies = [ - "autocfg 1.0.1", - "hashbrown", -] - -[[package]] -name = "inplace_it" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd01a2a73f2f399df96b22dc88ea687ef4d76226284e7531ae3c7ee1dc5cb534" - -[[package]] -name = "instant" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "itoa" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "jobserver" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" -dependencies = [ - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" - -[[package]] -name = "libloading" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1090080fe06ec2648d0da3881d9453d97e71a45f00eb179af7fdd7e3f686fdb0" -dependencies = [ - "cfg-if 1.0.0", - "winapi 0.3.9", -] - -[[package]] -name = "libm" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" - -[[package]] -name = "lock_api" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" -dependencies = [ - "cfg-if 0.1.10", -] - -[[package]] -name = "loom" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e8460f2f2121162705187214720353c517b97bdfb3494c0b1e33d83ebe4bed" -dependencies = [ - "cfg-if 0.1.10", - "generator", - "scoped-tls", - "serde", - "serde_json", -] - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "matchers" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - -[[package]] -name = "memchr" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" - -[[package]] -name = "memmap" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg 1.0.1", -] - -[[package]] -name = "metal" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4e8a431536529327e28c9ba6992f2cb0c15d4222f0602a16e6d7695ff3bccf" -dependencies = [ - "bitflags", - "block", - "cocoa-foundation", - "foreign-types", - "log", - "objc", -] - -[[package]] -name = "minifb" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb411a297b8f714800f085846cbda55fbd2ae17ecd381f1b4652af0e5bebe63" -dependencies = [ - "cc", - "orbclient", - "raw-window-handle", - "tempfile", - "wayland-client 0.27.0", - "wayland-cursor 0.27.0", - "wayland-protocols 0.27.0", - "winapi 0.3.9", - "x11-dl", - "xkb", - "xkbcommon-sys", -] - -[[package]] -name = "mio" -version = "0.6.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio", - "slab", -] - -[[package]] -name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "naga" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0873deb76cf44b7454fba7b2ba6a89d3de70c08aceffd2c489379b3d9d08e661" -dependencies = [ - "bitflags", - "fxhash", - "log", - "num-traits", - "spirv_headers 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", -] - -[[package]] -name = "ndk" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" -dependencies = [ - "jni-sys", - "ndk-sys", - "num_enum", - "thiserror", -] - -[[package]] -name = "ndk-glue" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" -dependencies = [ - "lazy_static", - "libc", - "log", - "ndk", - "ndk-macro", - "ndk-sys", -] - -[[package]] -name = "ndk-macro" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" -dependencies = [ - "darling", - "proc-macro-crate", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "ndk-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" - -[[package]] -name = "net2" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "nix" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" -dependencies = [ - "bitflags", - "cc", - "cfg-if 0.1.10", - "libc", - "void", -] - -[[package]] -name = "nix" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" -dependencies = [ - "bitflags", - "cc", - "cfg-if 0.1.10", - "libc", -] - -[[package]] -name = "nom" -version = "5.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" -dependencies = [ - "memchr", - "version_check", -] - -[[package]] -name = "num" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" -dependencies = [ - "num-integer", - "num-iter", - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg 1.0.1", - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" -dependencies = [ - "autocfg 1.0.1", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg 1.0.1", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" -dependencies = [ - "derivative", - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" -dependencies = [ - "proc-macro-crate", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", - "objc_exception", -] - -[[package]] -name = "objc_exception" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" -dependencies = [ - "cc", -] - -[[package]] -name = "once_cell" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" - -[[package]] -name = "orbclient" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b18f57ab94fbd058e30aa57f712ec423c0bb7403f8493a6c58eef0c36d9402" -dependencies = [ - "redox_syscall", - "sdl2", -] - -[[package]] -name = "os_str_bytes" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" - -[[package]] -name = "output_vt100" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "owned_ttf_parser" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" -dependencies = [ - "ttf-parser", -] - -[[package]] -name = "parking_lot" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi 0.1.0", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi 0.3.9", -] - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pin-project" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "pin-project-lite" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pipe" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcd11e042e056991b5df9c0c5ae6bd0cce219b74294c40f65b89f40f7030106c" -dependencies = [ - "crossbeam-channel 0.4.4", -] - -[[package]] -name = "pkg-config" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" - -[[package]] -name = "ppv-lite86" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" - -[[package]] -name = "pretty_assertions" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" -dependencies = [ - "ansi_term 0.11.0", - "ctor", - "difference", - "output_vt100", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro-nested" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" - -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - -[[package]] -name = "proc-macro2" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid 0.2.1", -] - -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - -[[package]] -name = "quote" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -dependencies = [ - "proc-macro2 1.0.24", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.7", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.3.1", -] - -[[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.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - -[[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_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi 0.3.9", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi 0.0.3", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "range-alloc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a871f1e45a3a3f0c73fb60343c811238bb5143a81642e27c2ac7aac27ff01a63" - -[[package]] -name = "raw-string" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0501e134c6905fee1f10fed25b0a7e1261bf676cffac9543a7d0730dec01af2" - -[[package]] -name = "raw-window-handle" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" -dependencies = [ - "libc", -] - -[[package]] -name = "raw-window-metal" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0f43bdc87adef4ce827b07775c9e59716b52f369696e7fb4ec7c4acb4e20b1" -dependencies = [ - "cocoa 0.20.2", - "core-graphics 0.19.2", - "objc", - "raw-window-handle", -] - -[[package]] -name = "rayon" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" -dependencies = [ - "autocfg 1.0.1", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" -dependencies = [ - "crossbeam-channel 0.5.0", - "crossbeam-deque", - "crossbeam-utils 0.8.0", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "regex" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "regex-automata" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" -dependencies = [ - "byteorder", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "rspirv" -version = "0.7.0" -source = "git+https://github.com/gfx-rs/rspirv.git?rev=01ca0d2e5b667a0e4ff1bc1804511e38f9a08759#01ca0d2e5b667a0e4ff1bc1804511e38f9a08759" -dependencies = [ - "derive_more", - "fxhash", - "num-traits", - "spirv_headers 1.5.0 (git+https://github.com/gfx-rs/rspirv.git?rev=01ca0d2e5b667a0e4ff1bc1804511e38f9a08759)", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" - -[[package]] -name = "rustc_codegen_spirv" -version = "0.1.0" -dependencies = [ - "bimap", - "pipe", - "pretty_assertions", - "rspirv", - "rustc-demangle", - "spirv-tools", - "tar", - "tempfile", - "topological-sort", -] - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - -[[package]] -name = "rusttype" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ryu" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "sdl2" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d051a07231e303f5f719da78cb6f7394f6d5b54f733aef5b0b447804a83edd7b" -dependencies = [ - "bitflags", - "lazy_static", - "libc", - "num", - "rand 0.6.5", - "sdl2-sys", -] - -[[package]] -name = "sdl2-sys" -version = "0.32.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34e71125077d297d57e4c1acfe8981b5bdfbf5a20e7b589abfdcb33bf1127f86" -dependencies = [ - "cfg-if 0.1.10", - "libc", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "serde" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "serde_json" -version = "1.0.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sharded-slab" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127" -dependencies = [ - "lazy_static", - "loom", -] - -[[package]] -name = "shared" -version = "0.1.0" -dependencies = [ - "spirv-std", -] - -[[package]] -name = "simplest-shader" -version = "0.1.0" -dependencies = [ - "spirv-std", -] - -[[package]] -name = "sky-shader" -version = "0.1.0" -dependencies = [ - "shared", - "spirv-std", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" - -[[package]] -name = "smallvec" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" - -[[package]] -name = "smithay-client-toolkit" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ec5c077def8af49f9b5aeeb5fcf8079c638c6615c3a8f9305e2dea601de57f7" -dependencies = [ - "andrew", - "bitflags", - "byteorder", - "calloop", - "dlib", - "lazy_static", - "log", - "memmap", - "nix 0.18.0", - "wayland-client 0.28.2", - "wayland-cursor 0.28.2", - "wayland-protocols 0.28.2", -] - -[[package]] -name = "spirv-builder" -version = "0.1.0" -dependencies = [ - "lazy_static", - "memchr", - "pretty_assertions", - "raw-string", - "rustc_codegen_spirv", - "serde", - "serde_json", -] - -[[package]] -name = "spirv-std" -version = "0.1.0" -dependencies = [ - "glam", - "num-traits", -] - -[[package]] -name = "spirv-tools" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8f9f3a25d16682ec4836cffa89dbadecaa5e3416f19680a8697e32eb58751a" -dependencies = [ - "memchr", - "spirv-tools-sys", - "tempfile", -] - -[[package]] -name = "spirv-tools-sys" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723f109c9b1c106ec9a2e6c353e20db4ef4840157e33a1dbf6519dc2a48d6769" -dependencies = [ - "cc", -] - -[[package]] -name = "spirv_cross" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea964c42ce40326fe96111918abe71fa45076da1ea85769f3f1ab1cda9a1d496" -dependencies = [ - "cc", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "spirv_headers" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f5b132530b1ac069df335577e3581765995cba5a13995cdbbdbc8fb057c532c" -dependencies = [ - "bitflags", - "num-traits", -] - -[[package]] -name = "spirv_headers" -version = "1.5.0" -source = "git+https://github.com/gfx-rs/rspirv.git?rev=01ca0d2e5b667a0e4ff1bc1804511e38f9a08759#01ca0d2e5b667a0e4ff1bc1804511e38f9a08759" -dependencies = [ - "bitflags", - "num-traits", -] - -[[package]] -name = "storage-map" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c" -dependencies = [ - "lock_api", -] - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "strsim" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "structopt" -version = "0.3.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126d630294ec449fae0b16f964e35bf3c74f940da9dca17ee9b905f7b3112eb8" -dependencies = [ - "clap 2.33.3", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e51c492f9e23a220534971ff5afc14037289de430e3c83f9daf6a1b6ae91e8" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "strum" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89a286a7e3b5720b9a477b23253bc50debac207c8d21505f8e70b36792f11b5" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.19.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e61bb0be289045cb80bfce000512e32d09f8337e54c186725da381377ad1f8d5" -dependencies = [ - "heck", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - -[[package]] -name = "syn" -version = "1.0.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "unicode-xid 0.2.1", -] - -[[package]] -name = "tar" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" -dependencies = [ - "filetime", - "libc", - "redox_syscall", - "xattr", -] - -[[package]] -name = "tempfile" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "rand 0.7.3", - "redox_syscall", - "remove_dir_all", - "winapi 0.3.9", -] - -[[package]] -name = "termcolor" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "textwrap" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "203008d98caf094106cfaba70acfed15e18ed3ddb7d94e49baec153a2b462789" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "thread-id" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" -dependencies = [ - "libc", - "redox_syscall", - "winapi 0.3.9", -] - -[[package]] -name = "thread_local" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "thunderdome" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7572415bd688d401c52f6e36f4c8e805b9ae1622619303b9fa835d531db0acae" - -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", -] - -[[package]] -name = "toml" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" -dependencies = [ - "serde", -] - -[[package]] -name = "topological-sort" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa7c7f42dea4b1b99439786f5633aeb9c14c1b53f75e282803c2ec2ad545873c" - -[[package]] -name = "tracing" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" -dependencies = [ - "cfg-if 0.1.10", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", -] - -[[package]] -name = "tracing-core" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "tracing-log" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0f8c7178e13481ff6765bd169b33e8d554c5d2bbede5e32c356194be02b9b9" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-serde" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1fa8f0c8f4c594e4fc9debc1990deab13238077271ba84dd853d54902ee3401" -dependencies = [ - "ansi_term 0.12.1", - "chrono", - "lazy_static", - "matchers", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", -] - -[[package]] -name = "ttf-parser" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" - -[[package]] -name = "typed-arena" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae" - -[[package]] -name = "unicode-segmentation" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8716a166f290ff49dabc18b44aa407cb7c6dbe1aa0971b44b8a24b0ca35aae" - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" - -[[package]] -name = "void" -version = "1.0.2" +name = "rustc-demangle" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" [[package]] -name = "walkdir" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +name = "rustc_codegen_spirv" +version = "0.1.0" dependencies = [ - "same-file", - "winapi 0.3.9", - "winapi-util", + "bimap", + "pipe", + "pretty_assertions", + "rspirv", + "rustc-demangle", + "spirv-tools", + "tar", + "tempfile", + "topological-sort", ] [[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +name = "rustc_version" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] [[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +name = "ryu" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] -name = "wasm-bindgen" -version = "0.2.68" +name = "scopeguard" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" -dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen-macro", -] +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "wasm-bindgen-backend" -version = "0.2.68" +name = "semver" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2 1.0.24", - "quote 1.0.7", - "syn 1.0.48", - "wasm-bindgen-shared", + "semver-parser", ] [[package]] -name = "wasm-bindgen-futures" -version = "0.4.18" +name = "semver-parser" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" -dependencies = [ - "cfg-if 0.1.10", - "js-sys", - "wasm-bindgen", - "web-sys", -] +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] -name = "wasm-bindgen-macro" -version = "0.2.68" +name = "serde" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" dependencies = [ - "quote 1.0.7", - "wasm-bindgen-macro-support", + "serde_derive", ] [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.68" +name = "serde_derive" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.7", - "syn 1.0.48", - "wasm-bindgen-backend", - "wasm-bindgen-shared", + "syn 1.0.53", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.68" +name = "serde_json" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" +dependencies = [ + "itoa", + "ryu", + "serde", +] [[package]] -name = "wayland-client" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab702fefbcd6d6f67fb5816e3a89a3b5a42a94290abbc015311c9a30d1068ae4" +name = "spirv-builder" +version = "0.1.0" dependencies = [ - "bitflags", - "downcast-rs", - "libc", - "nix 0.17.0", - "wayland-commons 0.27.0", - "wayland-scanner 0.27.0", - "wayland-sys 0.27.0", + "cargo-sysroot", + "eyre", + "git2", + "lazy_static", + "memchr", + "pretty_assertions", + "raw-string", + "remove_dir_all 0.6.1", + "rspirv", + "serde", + "serde_json", ] [[package]] -name = "wayland-client" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222b227f47871e47d657c1c5e5360b4af9a877aa9c892716787be1c192c78c42" +name = "spirv-std" +version = "0.1.0" dependencies = [ - "bitflags", - "downcast-rs", - "libc", - "nix 0.18.0", - "scoped-tls", - "wayland-commons 0.28.2", - "wayland-scanner 0.28.2", - "wayland-sys 0.28.2", + "glam", + "num-traits", ] [[package]] -name = "wayland-commons" -version = "0.27.0" +name = "spirv-tools" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e972e9336ad5a9dd861b4e21ff35ad71d3e5c6b4803d65c39913612f851b95f1" +checksum = "ca2e46e8bb4bf5d0d06aaea116c97787886b083806c9de3b6d22c347ddf3674f" dependencies = [ - "nix 0.17.0", - "once_cell", - "smallvec", - "wayland-sys 0.27.0", + "memchr", + "spirv-tools-sys", + "tempfile", ] [[package]] -name = "wayland-commons" -version = "0.28.2" +name = "spirv-tools-sys" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230b3ffeda101f877ff8ecb8573f5d26e7beb345b197807c4df34ec06879a3e6" +checksum = "fe1f35217731380e8c0665c3013b63aa34fd528863f8563735e4a052a847fb52" dependencies = [ - "nix 0.18.0", - "once_cell", - "smallvec", - "wayland-sys 0.28.2", + "cc", ] [[package]] -name = "wayland-cursor" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539f346e1a3f706f38c8ccbe1196001e2fb1c9b3e6b605c27d665db2f5b60d41" +name = "spirv_headers" +version = "1.5.0" +source = "git+https://github.com/gfx-rs/rspirv.git?rev=01ca0d2e5b667a0e4ff1bc1804511e38f9a08759#01ca0d2e5b667a0e4ff1bc1804511e38f9a08759" dependencies = [ - "nix 0.17.0", - "wayland-client 0.27.0", - "xcursor", + "bitflags", + "num-traits", ] [[package]] -name = "wayland-cursor" -version = "0.28.2" +name = "strsim" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aad1b4301cdccfb5f64056a4736e8155a5f4734bac41fdbca80b1fdbe1ab3e1" -dependencies = [ - "nix 0.18.0", - "wayland-client 0.28.2", - "xcursor", -] +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] -name = "wayland-protocols" -version = "0.27.0" +name = "structopt" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d6fc54b17b98b5083bc21ae3a30e6d75cb4b01647360e4c3a04648bcf8781d" +checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" dependencies = [ - "bitflags", - "wayland-client 0.27.0", - "wayland-commons 0.27.0", - "wayland-scanner 0.27.0", + "clap", + "lazy_static", + "structopt-derive", ] [[package]] -name = "wayland-protocols" -version = "0.28.2" +name = "structopt-derive" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc16a9db803cae58b45f9a84a6cf364434cc49a95c8b1ef98ffeb467d228bdc9" +checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" dependencies = [ - "bitflags", - "wayland-client 0.28.2", - "wayland-commons 0.28.2", - "wayland-scanner 0.28.2", + "heck", + "proc-macro-error", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.53", ] [[package]] -name = "wayland-scanner" -version = "0.27.0" +name = "syn" +version = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030f56009d932bd9400bb472764fea8109be1b0fc482d9cd75496c943ac30328" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", - "xml-rs", + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", ] [[package]] -name = "wayland-scanner" -version = "0.28.2" +name = "syn" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee5bd43a1d746efc486515fec561e47205f328b74802b959f10f5500f7e56cc" +checksum = "8833e20724c24de12bbaba5ad230ea61c3eafb05b881c7c9d3cfe8638b187e68" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.7", - "xml-rs", + "unicode-xid 0.2.1", ] [[package]] -name = "wayland-sys" -version = "0.27.0" +name = "tar" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bdeffbbb474477dfa2acb45ac7479e5fe8f741c64ab032c5d11b94d07edc269" +checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" dependencies = [ - "pkg-config", + "filetime", + "libc", + "redox_syscall", + "xattr", ] [[package]] -name = "wayland-sys" -version = "0.28.2" +name = "tempfile" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0814adbecc7ea97869971e1d1c1b657e31863dda6fd768f119ad3dc408a01e58" +checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ - "dlib", - "lazy_static", - "pkg-config", + "cfg-if 0.1.10", + "libc", + "rand", + "redox_syscall", + "remove_dir_all 0.5.3", + "winapi", ] [[package]] -name = "web-sys" -version = "0.3.39" +name = "textwrap" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bc359e5dd3b46cb9687a051d50a2fdd228e4ba7cf6fcf861a5365c3d671a642" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "js-sys", - "wasm-bindgen", + "unicode-width", ] [[package]] -name = "wgpu" -version = "0.6.0" +name = "thread_local" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549160f188eef412ac978499ddf0ceadad4c9159bb1160f9e6b9d4cc8ee977dc" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "arrayvec", - "futures", - "gfx-backend-vulkan", - "js-sys", - "objc", - "parking_lot", - "raw-window-handle", - "smallvec", - "tracing", - "typed-arena", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core", - "wgpu-types", + "lazy_static", ] [[package]] -name = "wgpu-core" -version = "0.6.5" +name = "tinyvec" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea487deeae90e06d77eb8e6cef945247774e7c0a0a226d238b31e90633594365" +checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" dependencies = [ - "arrayvec", - "bitflags", - "copyless", - "fxhash", - "gfx-backend-dx11", - "gfx-backend-dx12", - "gfx-backend-empty", - "gfx-backend-metal", - "gfx-backend-vulkan", - "gfx-descriptor", - "gfx-hal", - "gfx-memory", - "naga", - "parking_lot", - "raw-window-handle", - "smallvec", - "thiserror", - "tracing", - "wgpu-types", -] - -[[package]] -name = "wgpu-subscriber" + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91955b0d6480d86e577bbd0b0d1dd5acd0699c054610dc8673c4c3366295ed27" -dependencies = [ - "parking_lot", - "thread-id", - "tracing", - "tracing-log", - "tracing-subscriber", -] +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] -name = "wgpu-types" -version = "0.6.1" +name = "toml" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e3529528e608b54838ee618c3923b0f46e6db0334cfc6c42a16cf4ceb3bdb57" +checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" dependencies = [ - "bitflags", + "serde", ] [[package]] -name = "winapi" -version = "0.2.8" +name = "topological-sort" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +checksum = "aa7c7f42dea4b1b99439786f5633aeb9c14c1b53f75e282803c2ec2ad545873c" [[package]] -name = "winapi" -version = "0.3.9" +name = "unicode-bidi" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "matches", ] [[package]] -name = "winapi-build" -version = "0.1.1" +name = "unicode-normalization" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" +dependencies = [ + "tinyvec", +] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "unicode-segmentation" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" [[package]] -name = "winapi-util" -version = "0.1.5" +name = "unicode-width" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi 0.3.9", -] +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "unicode-xid" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] -name = "winit" -version = "0.23.0" +name = "unicode-xid" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5bc559da567d8aa671bbcd08304d49e982c7bf2cb91e10288b9188931c1b772" -dependencies = [ - "bitflags", - "cocoa 0.23.0", - "core-foundation 0.9.1", - "core-graphics 0.22.1", - "core-video-sys", - "dispatch", - "instant", - "lazy_static", - "libc", - "log", - "mio", - "mio-extras", - "ndk", - "ndk-glue", - "ndk-sys", - "objc", - "parking_lot", - "percent-encoding", - "raw-window-handle", - "smithay-client-toolkit", - "wasm-bindgen", - "wayland-client 0.28.2", - "web-sys", - "winapi 0.3.9", - "x11-dl", -] +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] -name = "wio" -version = "0.2.2" +name = "url" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" dependencies = [ - "winapi 0.3.9", + "form_urlencoded", + "idna", + "matches", + "percent-encoding", ] [[package]] -name = "ws2_32-sys" -version = "0.2.1" +name = "vcpkg" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] +checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" [[package]] -name = "x11" -version = "2.18.2" +name = "vec_map" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ecd092546cb16f25783a5451538e73afc8d32e242648d54f4ae5459ba1e773" -dependencies = [ - "libc", - "pkg-config", -] +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] -name = "x11-dl" -version = "2.18.5" +name = "version_check" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" -dependencies = [ - "lazy_static", - "libc", - "maybe-uninit", - "pkg-config", -] +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" [[package]] -name = "xattr" -version = "0.2.2" +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" -dependencies = [ - "libc", -] +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] -name = "xcursor" -version = "0.3.2" +name = "winapi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a481cfdefd35e1c50073ae33a8000d695c98039544659f5dc5dd71311b0d01" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "nom", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] -name = "xdg" -version = "2.2.0" +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "xkb" -version = "0.2.1" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aec02bc5de902aa579f3d2f2c522edaf40fa42963cbaffe645b058ddcc68fdb2" -dependencies = [ - "bitflags", - "libc", - "xkbcommon-sys", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "xkbcommon-sys" -version = "0.7.4" +name = "xattr" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa434980dca02ebf28795d71e570dbb78316d095a228707efd6117bf8246d78b" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" dependencies = [ "libc", - "pkg-config", ] - -[[package]] -name = "xml-rs" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" diff --git a/Cargo.toml b/Cargo.toml index cc904e6ec7..fbf6a6df6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,13 +1,7 @@ [workspace] members = [ - "examples/runners/cpu", - "examples/runners/ash", - "examples/runners/wgpu", - "examples/shaders/sky-shader", - "examples/shaders/simplest-shader", - "examples/shaders/compute-shader", - "crates/rustc_codegen_spirv", "crates/spirv-builder", "crates/spirv-std", ] +exclude = ["examples"] diff --git a/crates/spirv-builder/Cargo.toml b/crates/spirv-builder/Cargo.toml index 4c1bd46244..998c708194 100644 --- a/crates/spirv-builder/Cargo.toml +++ b/crates/spirv-builder/Cargo.toml @@ -5,20 +5,18 @@ authors = ["Embark <opensource@embark-studios.com>"] edition = "2018" license = "MIT OR Apache-2.0" -# See rustc_codegen_spirv/Cargo.toml for details on these features -[features] -default = ["use-compiled-tools"] -use-installed-tools = ["rustc_codegen_spirv/use-installed-tools"] -use-compiled-tools = ["rustc_codegen_spirv/use-compiled-tools"] - [dependencies] memchr = "2.3" raw-string = "0.3.5" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -# See comment in lib.rs invoke_rustc for why this is here -rustc_codegen_spirv = { path = "../rustc_codegen_spirv", default-features = false } +# TODO: Update before merge. +cargo-sysroot = { git = "https://github.com/XAMPPRocky/cargo-sysroot", branch = "main" } +git2 = "0.13.12" +eyre = "0.6.2" +remove_dir_all = "0.6.1" [dev-dependencies] lazy_static = "1.4" pretty_assertions = "0.6" +rspirv = { git = "https://github.com/gfx-rs/rspirv.git", rev = "01ca0d2e5b667a0e4ff1bc1804511e38f9a08759" } diff --git a/crates/spirv-builder/build.rs b/crates/spirv-builder/build.rs new file mode 100644 index 0000000000..b6d9144723 --- /dev/null +++ b/crates/spirv-builder/build.rs @@ -0,0 +1,3 @@ +/// Empty build script to force cargo to generate an empty `OUT_DIR` directory +/// that we can use as a scratchpad directory for tests. +fn main() {} diff --git a/crates/spirv-builder/src/depfile.rs b/crates/spirv-builder/src/depfile.rs index be0acecbc1..38b08a6715 100644 --- a/crates/spirv-builder/src/depfile.rs +++ b/crates/spirv-builder/src/depfile.rs @@ -1,5 +1,5 @@ //! Reading Makefile-style dependency files. -//! Taken with permission from https://github.com/m-ou-se/ninj/blob/master/lib/depfile/mod.rs +//! Taken with permission from <https://github.com/m-ou-se/ninj/blob/master/lib/depfile/mod.rs> use raw_string::{RawStr, RawString}; use std::fs::File; diff --git a/crates/spirv-builder/src/error.rs b/crates/spirv-builder/src/error.rs new file mode 100644 index 0000000000..8e3178c327 --- /dev/null +++ b/crates/spirv-builder/src/error.rs @@ -0,0 +1,13 @@ +use std::fmt; + +/// An error occurred while Building the SPIR-V module. +#[derive(Debug)] +pub struct SpirvBuilderError; + +impl fmt::Display for SpirvBuilderError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("Build failed") + } +} + +impl std::error::Error for SpirvBuilderError {} diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 6ad9cdda6e..64e3dae53a 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -1,63 +1,119 @@ +//! `spirv-builder` is crate designed to automate the process of compiling and +//! building SPIR-V crates. +//! +//! # Dependencies +//! `spirv-builder` requires `cargo` to be available in the environment, in +//! order to compile crates. You can override which `cargo` is used with the +//! `CARGO` environment variable. +//! +//! # Build script example +//! In this example we'll show how to compile a SPIR-V crate to be included +//! at compile time. +//! +//! ## `build.rs` +//! ```no_run +//! use spirv_builder::{options::{Source, SourceKind}, SpirvBuilder}; +//! +//! fn main() -> Result<(), Box<dyn std::error::Error>> { +//! # let path_to_crate_source = std::path::PathBuf::new(); +//! let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR")?); +//! SpirvBuilder::new(path_to_crate_source, &out_dir) +//! // Currently `librustc_codegen_spirv` and the `spirv-unknown-unknown` +//! // sysroot are not packaged with Rust, so we have to build it ourselves. +//! // See `Source` for more information on different ways to provide or +//! // compile the sources. +//! .codegen_source(Source { +//! compile_source: true, +//! kind: SourceKind::Git { +//! repository: "https://github.com/EmbarkStudios/rust-gpu".into(), +//! into: out_dir.join("rust-gpu"), +//! commitish: None, +//! } +//! }) +//! .sysroot_location(Source { +//! compile_source: true, +//! kind: SourceKind::Path(out_dir.join("sysroot")) +//! }) +//! // Emit cargo build script metadata for the SPIR-V project. +//! .emit_build_script_metadata() +//! .build()?; +//! Ok(()) +//! } +//! ``` +//! +//! ## `main.rs` +//! ```no_compile +//! const SPIRV_BINARY: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/crate_name.spv")); +//! ``` + #[cfg(test)] mod test; mod depfile; +mod error; +pub mod options; +mod rustc; +mod utils; -use raw_string::{RawStr, RawString}; -use serde::Deserialize; -use std::collections::HashMap; use std::env; -use std::error::Error; -use std::fmt; use std::path::{Path, PathBuf}; -use std::process::{Command, Stdio}; +use std::process::Stdio; -#[derive(Debug)] -pub enum SpirvBuilderError { - BuildFailed, -} +use eyre::Result; -impl fmt::Display for SpirvBuilderError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - SpirvBuilderError::BuildFailed => f.write_str("Build failed"), - } - } -} - -impl Error for SpirvBuilderError {} +use options::{CodegenBuildOptions, MemoryModel, Source, Version}; -pub enum MemoryModel { - Simple, - Vulkan, - GLSL450, -} +pub use error::SpirvBuilderError; +/// The builder struct that compiles SPIR-V crates using +/// either a compiled or installed `librustc_codegen_spirv` and +/// `spirv-unknown-unknown` sysroot. +#[derive(Default)] pub struct SpirvBuilder { - path_to_crate: PathBuf, - print_metadata: bool, - spirv_version: Option<(u8, u8)>, + build_script_metadata: bool, + codegen_options: CodegenBuildOptions, + codegen_source: Source, + destination: PathBuf, memory_model: Option<MemoryModel>, + rust_src: Option<PathBuf>, + sysroot_location: Source, + source: PathBuf, + spirv_version: Option<Version>, } + impl SpirvBuilder { - pub fn new(path_to_crate: impl AsRef<Path>) -> Self { + /// Initialise a new [`SpirvBuilder`] with a source and + /// destination directories. + pub fn new(source: impl Into<PathBuf>, destination: impl Into<PathBuf>) -> Self { Self { - path_to_crate: path_to_crate.as_ref().to_owned(), - print_metadata: true, - spirv_version: None, - memory_model: None, + source: source.into(), + destination: destination.into(), + ..Default::default() } } - /// Whether to print build.rs cargo metadata (e.g. cargo:rustc-env=var=val). Defaults to true. - pub fn print_metadata(mut self, v: bool) -> Self { - self.print_metadata = v; + /// Sets the source for code generation. + pub fn codegen_source(mut self, codegen_source: Source) -> Self { + self.codegen_source = codegen_source; + self + } + + /// Sets the location for the sysroot. + pub fn sysroot_location(mut self, sysroot_location: Source) -> Self { + self.sysroot_location = sysroot_location; self } /// Sets the SPIR-V binary version to use. Defaults to v1.3. pub fn spirv_version(mut self, major: u8, minor: u8) -> Self { - self.spirv_version = Some((major, minor)); + self.spirv_version = Some(Version { major, minor }); + self + } + + /// Sets the path to the rust source to use for building sysroot. Default: + /// The current toolchain's `rust-src` component. + pub fn rust_src(mut self, rust_src: impl Into<PathBuf>) -> Self { + self.rust_src = Some(rust_src.into()); self } @@ -67,166 +123,182 @@ impl SpirvBuilder { self } - /// Builds the module. Returns the path to the built spir-v file. If print_metadata is true, - /// you usually don't have to inspect the path, as the environment variable will already be - /// set. - pub fn build(self) -> Result<PathBuf, SpirvBuilderError> { - let spirv_module = invoke_rustc(&self)?; - let env_var = spirv_module.file_name().unwrap().to_str().unwrap(); - if self.print_metadata { - println!("cargo:rustc-env={}={}", env_var, spirv_module.display()); - } - Ok(spirv_module) + /// Sets whether to print build script metadata (e.g. `rerun-if-changed` + /// for artifacts) to `cargo`. + pub fn emit_build_script_metadata(mut self) -> Self { + self.build_script_metadata = true; + self } -} -// https://github.com/rust-lang/cargo/blob/1857880b5124580c4aeb4e8bc5f1198f491d61b1/src/cargo/util/paths.rs#L29-L52 -fn dylib_path_envvar() -> &'static str { - if cfg!(windows) { - "PATH" - } else if cfg!(target_os = "macos") { - "DYLD_FALLBACK_LIBRARY_PATH" - } else { - "LD_LIBRARY_PATH" + /// Creates the target feature flag for rustc, setting the SPIR-V version + /// and/or memory model. + fn target_feature_flag(&self) -> String { + let mut target_features = Vec::new(); + if let Some(version) = self.spirv_version { + target_features.push(format!("+{}", version)); + } + if let Some(memory_model) = &self.memory_model { + target_features.push(format!("+{}", memory_model)); + } + + if target_features.is_empty() { + String::new() + } else { + format!("-C target-feature={}", target_features.join(",")) + } } -} -fn dylib_path() -> Vec<PathBuf> { - match env::var_os(dylib_path_envvar()) { - Some(var) => env::split_paths(&var).collect(), - None => Vec::new(), + + fn rustc_flags(&self, sysroot: Option<impl AsRef<Path>>, codegen: impl AsRef<Path>) -> String { + vec![ + match sysroot { + Some(path) => format!("--sysroot={}", path.as_ref().display()), + None => String::new(), + }, + format!("-Zcodegen-backend={}", codegen.as_ref().display()), + self.target_feature_flag(), + ] + .join(" ") } -} -fn find_rustc_codegen_spirv() -> PathBuf { - let filename = format!( - "{}rustc_codegen_spirv{}", - env::consts::DLL_PREFIX, - env::consts::DLL_SUFFIX - ); - for mut path in dylib_path() { - path.push(&filename); - if path.is_file() { - return path; + /// Builds the module. Returns the path to the built spir-v file(s). + pub fn build(mut self) -> Result<PathBuf> { + if std::fs::metadata(&self.destination).is_ok() { + remove_dir_all::remove_dir_all(&self.destination)?; + } + std::fs::create_dir_all(&self.destination)?; + self.destination = self.destination.canonicalize()?; + self.source = self.source.canonicalize()?; + utils::fix_canon_paths(&mut self.destination); + utils::fix_canon_paths(&mut self.source); + + for module in self.build_shader()? { + std::fs::copy(&module, self.destination.join(module.file_name().unwrap()))?; } - } - panic!("Could not find {} in library path", filename); -} -fn invoke_rustc(builder: &SpirvBuilder) -> Result<PathBuf, SpirvBuilderError> { - // Okay, this is a little bonkers: in a normal world, we'd have the user clone - // rustc_codegen_spirv and pass in the path to it, and then we'd invoke cargo to build it, grab - // the resulting .so, and pass it into -Z codegen-backend. But that's really gross: the user - // needs to clone rustc_codegen_spirv and tell us its path! So instead, we *directly reference - // rustc_codegen_spirv in spirv-builder's Cargo.toml*, which means that it will get built - // alongside build.rs, and cargo will helpfully add it to LD_LIBRARY_PATH for us! However, - // rustc expects a full path, instead of a filename looked up via LD_LIBRARY_PATH, so we need - // to copy cargo's understanding of library lookup and find the library and its full path. - let rustc_codegen_spirv = find_rustc_codegen_spirv(); - let mut target_features = Vec::new(); - // these must match codegen_cx/mod.rs - if let Some((major, minor)) = builder.spirv_version { - target_features.push(format!("+spirv{}.{}", major, minor)); + Ok(self.destination) } - if let Some(memory_model) = &builder.memory_model { - target_features.push( - match memory_model { - MemoryModel::Simple => "+simple", - MemoryModel::Vulkan => "+vulkan", - MemoryModel::GLSL450 => "+glsl450", - } - .to_string(), + + /// Builds the SPIR-V codegen backend and returns a path to the + /// compiled dynamic library. If `codegen_source.compile_source` is `false` + /// then then it will return the `codegen_source` path with the DLL file name. + pub fn build_spirv_codegen(&self) -> Result<PathBuf> { + const CRATE_NAME: &str = "rustc_codegen_spirv"; + let dll_file_name = format!( + "{}{}{}", + env::consts::DLL_PREFIX, + CRATE_NAME, + env::consts::DLL_SUFFIX ); + + let path = self.codegen_source.get()?; + let repo_dir = match self.codegen_source.compile_source { + true => path, + false => return Ok(path.join(&dll_file_name)), + }; + + let crate_path = repo_dir.join("crates").join(CRATE_NAME); + let mut args = vec![ + "build".into(), + "--no-default-features".into(), + format!("--features={}", self.codegen_options.spirv_tools), + format!( + "--manifest-path={}", + crate_path.join("Cargo.toml").display() + ), + ]; + + if self.codegen_options.release { + args.push("--release".into()); + } + + let output = rustc::cargo() + .args(&args) + .stderr(Stdio::inherit()) + .current_dir(&crate_path) + .output()?; + + let backend = repo_dir + .join("target") + .join(if self.codegen_options.release { + "release" + } else { + "debug" + }) + .join(&dll_file_name); + + if !output.status.success() || std::fs::metadata(&backend).is_err() { + Err(eyre::eyre!("Building `rustc_codegen_spirv` failed.")) + } else { + Ok(backend) + } } - let feature_flag = if target_features.is_empty() { - String::new() - } else { - format!(" -C target-feature={}", target_features.join(",")) - }; - let rustflags = format!( - "-Z codegen-backend={} -Z symbol-mangling-version=v0{}", - rustc_codegen_spirv.display(), - feature_flag, - ); - let build = Command::new("cargo") - .args(&[ - "build", - "--message-format=json-render-diagnostics", - "-Z", - "build-std=core", - "--target", - "spirv-unknown-unknown", - "--release", - ]) - .stderr(Stdio::inherit()) - .current_dir(&builder.path_to_crate) - .env("RUSTFLAGS", rustflags) - .output() - .expect("failed to execute cargo build"); - - // `get_last_artifact` has the side-effect of printing invalid lines, so - // we do that even in case of an error, to let through any useful messages - // that ended up on stdout instead of stderr. - let stdout = String::from_utf8(build.stdout).unwrap(); - let artifact = get_last_artifact(&stdout); - - if build.status.success() { - if builder.print_metadata { - print_deps_of(&artifact); + + pub fn build_sysroot(&self, backend: impl AsRef<Path>) -> Result<Option<PathBuf>> { + const TARGET_NAME: &str = "spirv-unknown-unknown"; + if self.sysroot_location.kind.is_environment() { + return Ok(None); + } + + let backend = backend.as_ref(); + let path = self.sysroot_location.get()?; + + let sysroot_dir = match self.sysroot_location.compile_source { + true => path, + false => return Ok(Some(path)), + }; + + let mut builder = + cargo_sysroot::SysrootBuilder::new(cargo_sysroot::Sysroot::CompilerBuiltins); + builder + .target(TARGET_NAME.into()) + .output(sysroot_dir) + .rustc_flags(&[format!("-Zcodegen-backend={}", backend.display())]); + + if let Some(path) = &self.rust_src { + builder.rust_src(path.clone()); } - Ok(artifact) - } else { - Err(SpirvBuilderError::BuildFailed) + + let sysroot = builder.build().map_err(|e| eyre::eyre!("{}", e))?; + let sysroot_codegen = sysroot.join(backend.file_name().unwrap()); + std::fs::copy(&backend, &sysroot_codegen)?; + Ok(Some(sysroot)) } -} -#[derive(Deserialize)] -struct RustcOutput { - reason: String, - filenames: Option<Vec<String>>, -} + pub fn build_shader(&self) -> eyre::Result<Vec<PathBuf>> { + let backend = self.build_spirv_codegen()?; + let sysroot = self.build_sysroot(&backend)?; + let flags = self.rustc_flags(sysroot, backend); + let build = rustc::cargo() + .args(&[ + "build", + "--verbose", + "--release", + "--message-format=json-render-diagnostics", + "--target", + "spirv-unknown-unknown", + ]) + .stderr(Stdio::inherit()) + .current_dir(&self.source) + .env("RUSTFLAGS", flags) + .output() + .expect("failed to execute cargo build"); -fn get_last_artifact(out: &str) -> PathBuf { - let last = out - .lines() - .filter_map(|line| match serde_json::from_str::<RustcOutput>(line) { - Ok(line) => Some(line), - Err(_) => { - // Pass through invalid lines - println!("{}", line); - None - } - }) - .filter(|line| line.reason == "compiler-artifact") - .last() - .expect("Did not find output file in rustc output"); - - let mut filenames = last - .filenames - .unwrap() - .into_iter() - .filter(|v| v.ends_with(".spv")); - let filename = filenames.next().expect("Crate had no .spv artifacts"); - assert_eq!(filenames.next(), None, "Crate had multiple .spv artifacts"); - filename.into() -} + // get_artifacts_from_output` has the side-effect of printing invalid + // lines, so we do that even in case of an error, to let through any + // useful messages that ended up on stdout instead of stderr. + let stdout = String::from_utf8(build.stdout).unwrap(); + let artifacts = rustc::get_artifacts_from_output(&stdout); -fn print_deps_of(artifact: &Path) { - let deps_file = artifact.with_extension("d"); - let mut deps_map = HashMap::new(); - depfile::read_deps_file(&deps_file, |item, deps| { - deps_map.insert(item, deps); - Ok(()) - }) - .expect("Could not read dep file"); - fn recurse(map: &HashMap<RawString, Vec<RawString>>, artifact: &RawStr) { - match map.get(artifact) { - Some(entries) => { - for entry in entries { - recurse(map, entry) + if build.status.success() { + if self.build_script_metadata { + for artifact in &artifacts { + rustc::print_deps_of(&artifact); } } - None => println!("cargo:rerun-if-changed={}", artifact), + + Ok(artifacts) + } else { + Err(SpirvBuilderError.into()) } } - recurse(&deps_map, artifact.to_str().unwrap().into()); } diff --git a/crates/spirv-builder/src/options.rs b/crates/spirv-builder/src/options.rs new file mode 100644 index 0000000000..0b034c8dc0 --- /dev/null +++ b/crates/spirv-builder/src/options.rs @@ -0,0 +1,102 @@ +//! Various options for building SPIR-V modules and relevant components. + +mod source; + +use std::fmt; + +pub use source::{Source, SourceKind}; + +/// Options for compiling `librustc_codegen_spirv`. +#[derive(Default)] +pub struct CodegenBuildOptions { + /// Whether to compile in release mode. Default: `false` + pub release: bool, + /// Whether to use installed SPIR-V tools, or compile them. Default: `Auto` + pub spirv_tools: SpirvTools, +} + +/// Sets the memory model to use for the SPIR-V module. See [Memory Model] +/// from the SPIR-V specification for more information. +/// +/// [memory model]: https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memorymodelsection_a_memory_model +pub enum MemoryModel { + /// No shared memory consistency issues. Capabilities: Shader + Simple, + /// Vulkan memory model, as specified by the client API. This memory model + /// must be declared if and only if the `VulkanMemoryModel` capability + /// is declared. Capabilities: VulkanMemoryModel + Vulkan, + /// Memory model needed by later versions of GLSL and ESSL. Works across + /// multiple versions. Capabilities: Shader + Glsl450, +} + +impl fmt::Display for MemoryModel { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}", + match self { + MemoryModel::Simple => "simple", + MemoryModel::Vulkan => "vulkan", + MemoryModel::Glsl450 => "glsl450", + } + ) + } +} + +/// How to compile SPIR-V tools. +pub enum SpirvTools { + /// Detect whether SPIR-V tools are present in the environment and use + /// those, else compile them. + Auto, + /// Compile SPIR-V tools from source. + Compiled, + /// Use SPIR-V tools available in the environment. + Installed, +} + +impl Default for SpirvTools { + fn default() -> Self { + Self::Auto + } +} + +impl fmt::Display for SpirvTools { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const COMPILED_FEATURE: &str = "use-compiled-tools"; + const INSTALLED_FEATURE: &str = "use-installed-tools"; + write!( + f, + "{}", + match self { + Self::Auto => { + if std::process::Command::new("spirv-val") + .args(&["--version"]) + .status() + .map_or(false, |s| s.success()) + { + INSTALLED_FEATURE + } else { + COMPILED_FEATURE + } + } + Self::Compiled => COMPILED_FEATURE, + Self::Installed => INSTALLED_FEATURE, + } + ) + } +} + +/// The version of SPIR-V to when compiling. +#[derive(Clone, Copy)] +pub(crate) struct Version { + pub major: u8, + pub minor: u8, +} + +impl fmt::Display for Version { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "spirv{}.{}", self.major, self.minor) + } +} diff --git a/crates/spirv-builder/src/options/source.rs b/crates/spirv-builder/src/options/source.rs new file mode 100644 index 0000000000..aa6e03034e --- /dev/null +++ b/crates/spirv-builder/src/options/source.rs @@ -0,0 +1,82 @@ +use std::path::PathBuf; + +/// Defines the source to use for `rustc_codegen_spirv` and `sysroot`. +#[derive(Debug, Default)] +pub struct Source { + /// Whether to attempt to compile the source provided by `kind`. If `false` + /// expects the source to point to a prebuilt sysroot containing the + /// `spirv-unknown-unknown` sysroot and codegen. Errors if `true`, and + /// using `SourceKind::Environment`. + pub compile_source: bool, + pub kind: SourceKind, +} + +impl Source { + pub fn get(&self) -> eyre::Result<PathBuf> { + if self.compile_source && self.kind == SourceKind::Environment { + return Err(eyre::eyre!( + "Invalid source configuration. Environment \ + can't use compile_source." + )); + } + + Ok(match &self.kind { + SourceKind::Environment => PathBuf::from("spirv"), + SourceKind::Path(path) => { + std::fs::create_dir_all(path)?; + let mut path = path + .canonicalize() + .map_err(|e| eyre::eyre!("Path: `{}`\n{}", path.display(), e))?; + crate::utils::fix_canon_paths(&mut path); + path + } + SourceKind::Git { + repository, + commitish, + into, + } => { + let into = into.to_owned(); + std::fs::create_dir_all(&into)?; + let repo = git2::build::RepoBuilder::new().clone(&repository, &into)?; + + if let Some(commitish) = commitish { + repo.set_head(commitish)?; + } + + into + } + }) + } +} + +/// Where the source of a component is located. +#[derive(Debug, Eq, PartialEq)] +pub enum SourceKind { + /// Clones a git repository for the source. + Git { + /// The git repository. + repository: String, + /// The branch or commit to checkout Default: default branch of the + /// repository. + commitish: Option<String>, + /// The directory to clone the repository into. + into: PathBuf, + }, + /// Uses the path provided for the source. + Path(PathBuf), + /// Assume that `rustc_codegen_spirv` and `spirv-unknown-unknown` are + /// already available in the environment. + Environment, +} + +impl SourceKind { + pub fn is_environment(&self) -> bool { + *self == Self::Environment + } +} + +impl Default for SourceKind { + fn default() -> Self { + Self::Environment + } +} diff --git a/crates/spirv-builder/src/rustc.rs b/crates/spirv-builder/src/rustc.rs new file mode 100644 index 0000000000..b2dbc720cd --- /dev/null +++ b/crates/spirv-builder/src/rustc.rs @@ -0,0 +1,63 @@ +use std::collections::HashMap; +use std::path::{Path, PathBuf}; +use std::process::Command; + +use raw_string::{RawStr, RawString}; + +pub fn cargo() -> Command { + let mut cmd = Command::new(std::env::var("CARGO").unwrap_or_else(|_| String::from("cargo"))); + cmd.env_clear(); + cmd.env("PATH", std::env::var("PATH").unwrap()); + cmd +} + +#[derive(serde::Deserialize)] +struct RustcOutput { + reason: String, + filenames: Option<Vec<String>>, +} + +pub fn get_artifacts_from_output(out: &str) -> Vec<PathBuf> { + let filenames = out + .lines() + .filter_map(|line| match serde_json::from_str::<RustcOutput>(line) { + Ok(line) => Some(line), + Err(_) => { + // Pass through invalid lines + println!("{}", line); + None + } + }) + .filter(|line| line.reason == "compiler-artifact") + .flat_map(|line| line.filenames.unwrap()) + .filter(|v| v.ends_with(".spv")) + .map(Into::into) + .collect::<Vec<_>>(); + + if filenames.is_empty() { + panic!("Crate had no .spv artifacts"); + } + + filenames +} + +pub fn print_deps_of(artifact: &Path) { + let deps_file = artifact.with_extension("d"); + let mut deps_map = HashMap::new(); + crate::depfile::read_deps_file(&deps_file, |item, deps| { + deps_map.insert(item, deps); + Ok(()) + }) + .expect("Could not read dep file"); + fn recurse(map: &HashMap<RawString, Vec<RawString>>, artifact: &RawStr) { + match map.get(artifact) { + Some(entries) => { + for entry in entries { + recurse(map, entry) + } + } + None => println!("cargo:rerun-if-changed={}", artifact), + } + } + recurse(&deps_map, artifact.to_str().unwrap().into()); +} diff --git a/crates/spirv-builder/src/test/mod.rs b/crates/spirv-builder/src/test/mod.rs index 8bdb48f8c4..0e6f35fdbf 100644 --- a/crates/spirv-builder/src/test/mod.rs +++ b/crates/spirv-builder/src/test/mod.rs @@ -2,7 +2,6 @@ mod basic; mod control_flow; use lazy_static::lazy_static; -use rustc_codegen_spirv::rspirv; use std::error::Error; use std::path::{Path, PathBuf}; use std::sync::{Mutex, MutexGuard}; @@ -34,7 +33,7 @@ fn global_lock() -> MutexGuard<'static, ()> { } static CARGO_TOML: &str = r#"[package] -name = "test-project" +name = "spirv-module" version = "0.1.0" authors = ["Embark <opensource@embark-studios.com>"] edition = "2018" @@ -70,11 +69,19 @@ fn setup(src: &str) -> Result<PathBuf, Box<dyn Error>> { } fn build(src: &str) -> PathBuf { + let out_dir = PathBuf::from(env!("OUT_DIR")); let project = setup(src).expect("Failed to set up project"); - crate::SpirvBuilder::new(&project) - .print_metadata(false) + crate::SpirvBuilder::new(&project, out_dir.join("spirv")) + .codegen_source(crate::Source { + compile_source: false, + kind: crate::options::SourceKind::Path("../../target/debug/".into()), + }) + .sysroot_location(crate::Source { + compile_source: true, + kind: crate::options::SourceKind::Path("../../target/sysroot".into()), + }) .build() - .expect("Failed to build test") + .unwrap() } fn read_module(path: &Path) -> Result<rspirv::dr::Module, Box<dyn Error>> { @@ -108,8 +115,8 @@ fn assert_str_eq(expected: &str, result: &str) { fn dis_fn(src: &str, func: &str, expect: &str) { let _lock = global_lock(); - let module = read_module(&build(src)).unwrap(); - let abs_func_path = format!("test_project::{}", func); + let module = read_module(&build(src).join("spirv_module.spv")).unwrap(); + let abs_func_path = format!("spirv_module::{}", func); let id = module .debugs .iter() diff --git a/crates/spirv-builder/src/utils.rs b/crates/spirv-builder/src/utils.rs new file mode 100644 index 0000000000..fbed13922c --- /dev/null +++ b/crates/spirv-builder/src/utils.rs @@ -0,0 +1,21 @@ +use std::path::PathBuf; + +/// Currently cargo doesn't work well with UNC (`\\?\`) paths on Windows +/// so we have to remove it. +pub fn fix_canon_paths(path: &mut PathBuf) { + if cfg!(windows) { + let prefix = path + .components() + .next() + .and_then(|p| p.as_os_str().to_str()) + .map(|s| s.replace(r"\\?\", "")) + .unwrap(); + + *path = vec![ + prefix.into(), + path.components().skip(1).collect::<PathBuf>(), + ] + .into_iter() + .collect(); + } +} diff --git a/deny.toml b/deny.toml index e0137f1424..9d5bba4425 100644 --- a/deny.toml +++ b/deny.toml @@ -37,9 +37,7 @@ skip = [ # by default infinite skip-tree = [ # we don't really care if our example brings in some duplicate dependencies, for now - { name = "example-runner-ash", version = "*", depth = 20 }, - { name = "example-runner-cpu", version = "*", depth = 20 }, - { name = "example-runner-wgpu", version = "*", depth = 20 }, + { name = "spirv-builder", version = "*", depth = 20 }, ] diff --git a/examples/runners/ash/Cargo.toml b/examples/runners/ash/Cargo.toml index 9cb533ca55..19f2fb7b16 100644 --- a/examples/runners/ash/Cargo.toml +++ b/examples/runners/ash/Cargo.toml @@ -8,9 +8,6 @@ publish = false # See rustc_codegen_spirv/Cargo.toml for details on these features [features] -default = ["use-compiled-tools"] -use-installed-tools = ["spirv-builder/use-installed-tools"] -use-compiled-tools = ["spirv-builder/use-compiled-tools"] [dependencies] shared = { path = "../../shaders/shared" } diff --git a/examples/runners/ash/build.rs b/examples/runners/ash/build.rs index b0cb1f6292..5921eabf2b 100644 --- a/examples/runners/ash/build.rs +++ b/examples/runners/ash/build.rs @@ -1,10 +1,24 @@ -use spirv_builder::SpirvBuilder; use std::error::Error; +use std::path::PathBuf; + +use spirv_builder::{options::{Source, SourceKind}, SpirvBuilder}; fn main() -> Result<(), Box<dyn Error>> { + let out_dir = PathBuf::from(std::env::var("OUT_DIR")?); // This will set the env var `sky-shader.spv` to a spir-v file that can be include!()'d - SpirvBuilder::new("../../shaders/sky-shader") - .spirv_version(1, 3) - .build()?; + SpirvBuilder::new( + "../../shaders/sky-shader", + std::env::var("OUT_DIR").unwrap(), + ) + .spirv_version(1, 3) + .codegen_source(Source { + compile_source: true, + kind: SourceKind::Path(std::fs::canonicalize("../../../")?) + }) + .sysroot_location(Source { + compile_source: true, + kind: SourceKind::Path(out_dir.join("sysroot")) + }) + .build()?; Ok(()) } diff --git a/examples/runners/ash/src/main.rs b/examples/runners/ash/src/main.rs index e2c80bf062..4ce7a08b81 100644 --- a/examples/runners/ash/src/main.rs +++ b/examples/runners/ash/src/main.rs @@ -19,7 +19,7 @@ use std::ops::Drop; use structopt::StructOpt; fn shader_module() -> &'static [u8] { - &include_bytes!(env!("sky_shader.spv"))[..] + &include_bytes!(concat!(env!("OUT_DIR"), "/sky_shader.spv"))[..] } // Simple offset_of macro akin to C++ offsetof diff --git a/examples/runners/wgpu/Cargo.toml b/examples/runners/wgpu/Cargo.toml index 66d8300366..8fad40de85 100644 --- a/examples/runners/wgpu/Cargo.toml +++ b/examples/runners/wgpu/Cargo.toml @@ -11,9 +11,6 @@ crate-type = ["lib", "cdylib"] # See rustc_codegen_spirv/Cargo.toml for details on these features [features] -default = ["use-compiled-tools"] -use-installed-tools = ["spirv-builder/use-installed-tools"] -use-compiled-tools = ["spirv-builder/use-compiled-tools"] [dependencies] cfg-if = "1.0.0" diff --git a/examples/runners/wgpu/build.rs b/examples/runners/wgpu/build.rs index 87322e3d6a..ba4c8bf0e6 100644 --- a/examples/runners/wgpu/build.rs +++ b/examples/runners/wgpu/build.rs @@ -1,16 +1,26 @@ -use spirv_builder::SpirvBuilder; use std::error::Error; +use std::path::PathBuf; -fn build_shader(path_to_create: &str) -> Result<(), Box<dyn Error>> { - SpirvBuilder::new(path_to_create) - .spirv_version(1, 0) +use spirv_builder::{options::{Source, SourceKind}, SpirvBuilder}; + +fn build_shader(path_to_crate: &str) -> Result<(), Box<dyn Error>> { + let out_dir = PathBuf::from(std::env::var("OUT_DIR")?); + SpirvBuilder::new(path_to_crate, &out_dir) + .spirv_version(1, 3) + .codegen_source(Source { + compile_source: true, + kind: SourceKind::Path("../../../".into()) + }) + .sysroot_location(Source { + compile_source: true, + kind: SourceKind::Path(out_dir.join("sysroot")) + }) + .emit_build_script_metadata() .build()?; Ok(()) } fn main() -> Result<(), Box<dyn Error>> { - build_shader("../../shaders/sky-shader")?; - build_shader("../../shaders/simplest-shader")?; - build_shader("../../shaders/compute-shader")?; + build_shader("../../shaders")?; Ok(()) } diff --git a/examples/runners/wgpu/src/lib.rs b/examples/runners/wgpu/src/lib.rs index c86876bfa5..add045ac7f 100644 --- a/examples/runners/wgpu/src/lib.rs +++ b/examples/runners/wgpu/src/lib.rs @@ -13,9 +13,15 @@ pub enum RustGPUShader { fn shader_module(shader: RustGPUShader) -> wgpu::ShaderModuleSource<'static> { match shader { - RustGPUShader::Simplest => wgpu::include_spirv!(env!("simplest_shader.spv")), - RustGPUShader::Sky => wgpu::include_spirv!(env!("sky_shader.spv")), - RustGPUShader::Compute => wgpu::include_spirv!(env!("compute_shader.spv")), + RustGPUShader::Compute => { + wgpu::include_spirv!(concat!(env!("OUT_DIR"), "/compute_shader.spv")) + } + RustGPUShader::Simplest => { + wgpu::include_spirv!(concat!(env!("OUT_DIR"), "/simplest_shader.spv")) + } + RustGPUShader::Sky => { + wgpu::include_spirv!(concat!(env!("OUT_DIR"), "/sky_shader.spv")) + } } } diff --git a/examples/shaders/Cargo.toml b/examples/shaders/Cargo.toml new file mode 100644 index 0000000000..3e4457383d --- /dev/null +++ b/examples/shaders/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "compute-shader", + "simplest-shader", + "sky-shader", +]