diff --git a/Cargo.lock b/Cargo.lock index 7136254..f054218 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,11 +2,30 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ab_glyph" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser 0.20.0", +] + [[package]] name = "ab_glyph_rasterizer" -version = "0.1.7" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "addr2line" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] [[package]] name = "adler" @@ -16,37 +35,68 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.7.6" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ - "getrandom", + "cfg-if 1.0.0", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "0.7.19" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "andrew" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c4afb09dd642feec8408e33f92f3ffc4052946f6b20f32fb99c1f58cd4fa7cf" dependencies = [ - "bitflags", + "bitflags 1.3.2", "rusttype", "walkdir", "xdg", "xml-rs", ] +[[package]] +name = "android-activity" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" +dependencies = [ + "android-properties", + "bitflags 1.3.2", + "cc", + "jni-sys", + "libc", + "log", + "ndk 0.7.0", + "ndk-context", + "ndk-sys 0.4.1+23.1.7779620", + "num_enum 0.6.1", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -58,21 +108,15 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.2" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ash" @@ -85,11 +129,11 @@ dependencies = [ [[package]] name = "ash" -version = "0.37.0+1.3.209" +version = "0.37.3+1.3.251" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006ca68e0f2b03f22d6fa9f2860f85aed430d257fec20f8879b2145e7c7ae1a6" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" dependencies = [ - "libloading 0.7.3", + "libloading 0.7.4", ] [[package]] @@ -105,34 +149,34 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.4.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ + "async-lock", "async-task", "concurrent-queue", - "fastrand", + "fastrand 2.0.1", "futures-lite", - "once_cell", "slab", ] [[package]] -name = "async-task" -version = "4.3.0" +name = "async-lock" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] [[package]] -name = "atty" -version = "0.2.14" +name = "async-task" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] +checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46" [[package]] name = "autocfg" @@ -140,6 +184,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -161,50 +220,63 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + [[package]] name = "block" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys", + "objc2-encode", +] + [[package]] name = "bumpalo" -version = "3.11.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytemuck" -version = "1.12.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.2.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9e1f5fa78f69496407a27ae9ed989e3c3b072310286f5ef385525e4cbc24a9" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.42", ] -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "cache-padded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" - [[package]] name = "calloop" version = "0.6.5" @@ -217,12 +289,13 @@ dependencies = [ [[package]] name = "calloop" -version = "0.10.1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22a6a8f622f797120d452c630b0ab12e1331a1a753e2039ce7868d4ac77b4ee" +checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8" dependencies = [ + "bitflags 1.3.2", "log", - "nix 0.24.2", + "nix 0.25.1", "slotmap", "thiserror", "vec_map", @@ -230,9 +303,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.73" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] [[package]] name = "cfg-if" @@ -252,25 +329,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" -[[package]] -name = "cmake" -version = "0.1.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" -dependencies = [ - "cc", -] - [[package]] name = "cocoa" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "cocoa-foundation", - "core-foundation 0.9.3", + "core-foundation 0.9.4", "core-graphics 0.22.3", "foreign-types 0.3.2", "libc", @@ -279,15 +347,14 @@ dependencies = [ [[package]] name = "cocoa-foundation" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", - "core-foundation 0.9.3", + "core-foundation 0.9.4", "core-graphics-types", - "foreign-types 0.3.2", "libc", "objc", ] @@ -302,12 +369,19 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "com-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" + [[package]] name = "compute-shader-hello" version = "0.1.0" dependencies = [ "bytemuck", "env_logger", + "fastrand 1.9.0", "futures-intrusive", "pollster", "wgpu", @@ -321,16 +395,16 @@ dependencies = [ "bytemuck", "pollster", "wgpu", - "winit 0.27.3", + "winit 0.28.7", ] [[package]] name = "concurrent-queue" -version = "1.2.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ - "cache-padded", + "crossbeam-utils", ] [[package]] @@ -345,11 +419,11 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "core-foundation-sys 0.8.3", + "core-foundation-sys 0.8.6", "libc", ] @@ -361,9 +435,9 @@ checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" @@ -371,7 +445,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation 0.7.0", "foreign-types 0.3.2", "libc", @@ -383,8 +457,8 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ - "bitflags", - "core-foundation 0.9.3", + "bitflags 1.3.2", + "core-foundation 0.9.4", "core-graphics-types", "foreign-types 0.3.2", "libc", @@ -392,25 +466,12 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ - "bitflags", - "core-foundation 0.9.3", - "foreign-types 0.3.2", - "libc", -] - -[[package]] -name = "core-text" -version = "19.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" -dependencies = [ - "core-foundation 0.9.3", - "core-graphics 0.22.3", - "foreign-types 0.3.2", + "bitflags 1.3.2", + "core-foundation 0.9.4", "libc", ] @@ -438,9 +499,9 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +checksum = "6eb9105919ca8e40d437fc9cbb8f1975d916f1bd28afe795a48aae32a2cc8920" dependencies = [ "cfg-if 1.0.0", "crossbeam-channel", @@ -452,9 +513,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "82a9b73a36529d9c47029b9fb3a6f0ea3cc916a261195352ba19e770fc1748b2" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -462,9 +523,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -473,22 +534,20 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.11" +version = "0.9.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.6" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" +checksum = "adc6598521bb5a83d491e8c1fe51db7296019d2ca3cb93cc6c2a20369a4d78a2" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -496,36 +555,13 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.12" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "crossfont" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66b1c1979c4362323f03ab6bf7fb522902bfc418e0c37319ab347f9561d980f" -dependencies = [ - "cocoa", - "core-foundation 0.9.3", - "core-foundation-sys 0.8.3", - "core-graphics 0.22.3", - "core-text", - "dwrote", - "foreign-types 0.5.0", - "freetype-rs", - "libc", - "log", - "objc", - "once_cell", - "pkg-config", - "servo-fontconfig", - "winapi", -] - [[package]] name = "cty" version = "0.2.2" @@ -534,12 +570,12 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" [[package]] name = "d3d12" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" +checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ - "bitflags", - "libloading 0.7.3", + "bitflags 2.4.1", + "libloading 0.8.1", "winapi", ] @@ -549,18 +585,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" dependencies = [ - "darling_core 0.10.2", - "darling_macro 0.10.2", -] - -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core 0.13.4", - "darling_macro 0.13.4", + "darling_core", + "darling_macro", ] [[package]] @@ -573,22 +599,8 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.9.3", - "syn", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.10.0", - "syn", + "strsim", + "syn 1.0.109", ] [[package]] @@ -597,40 +609,9 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ - "darling_core 0.10.2", + "darling_core", "quote", - "syn", -] - -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core 0.13.4", - "quote", - "syn", -] - -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", + "syn 1.0.109", ] [[package]] @@ -650,11 +631,11 @@ dependencies = [ [[package]] name = "dlib" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.7.3", + "libloading 0.8.1", ] [[package]] @@ -664,61 +645,101 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] -name = "dwrote" -version = "0.11.0" +name = "env_logger" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "lazy_static", "libc", - "serde", - "serde_derive", - "winapi", - "wio", + "windows-sys 0.52.0", ] [[package]] -name = "env_logger" -version = "0.9.1" +name = "event-listener" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" +checksum = "84f2cdcf274580f2d63697192d744727b3198894b1bf02923643bf59e2c26712" dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", + "concurrent-queue", + "parking", + "pin-project-lite", ] [[package]] -name = "expat-sys" -version = "2.1.6" +name = "event-listener-strategy" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ - "cmake", - "pkg-config", + "event-listener", + "pin-project-lite", ] [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fdeflate" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +dependencies = [ + "simd-adler32", +] + [[package]] name = "flate2" -version = "1.0.24" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "spin", +] + [[package]] name = "fnv" version = "1.0.7" @@ -746,13 +767,13 @@ dependencies = [ [[package]] name = "foreign-types-macros" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8469d0d40519bc608ec6863f1cc88f3f1deee15913f2f3b3e573d81ed38cccc" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.42", ] [[package]] @@ -767,91 +788,83 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" -[[package]] -name = "freetype-rs" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb" -dependencies = [ - "bitflags", - "freetype-sys", - "libc", -] - -[[package]] -name = "freetype-sys" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" -dependencies = [ - "cmake", - "libc", - "pkg-config", -] - [[package]] name = "futures-core" -version = "0.3.24" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-intrusive" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot 0.12.1", ] [[package]] name = "futures-io" -version = "0.3.24" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" -version = "1.12.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" dependencies = [ - "fastrand", + "fastrand 2.0.1", "futures-core", "futures-io", - "memchr", "parking", "pin-project-lite", - "waker-fn", ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "futures-sink" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", ] [[package]] name = "glow" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +checksum = "886c2a30b160c4c6fec8f987430c26b526b7988ca71f664e6a699ddf6f9601e4" dependencies = [ "js-sys", "slotmap", @@ -859,63 +872,99 @@ dependencies = [ "web-sys", ] +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + [[package]] name = "gpu-alloc" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags", + "bitflags 2.4.1", "gpu-alloc-types", ] [[package]] name = "gpu-alloc-types" -version = "0.2.0" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.4.1", +] + +[[package]] +name = "gpu-allocator" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +checksum = "40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad" dependencies = [ - "bitflags", + "backtrace", + "log", + "presser", + "thiserror", + "winapi", + "windows", ] [[package]] name = "gpu-descriptor" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags", + "bitflags 2.4.1", "gpu-descriptor-types", "hashbrown", ] [[package]] name = "gpu-descriptor-types" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags", + "bitflags 2.4.1", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", + "allocator-api2", ] [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "hassle-rs" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" dependencies = [ + "bitflags 1.3.2", + "com-rs", "libc", + "libloading 0.7.4", + "thiserror", + "widestring", + "winapi", ] +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + [[package]] name = "hexf-parse" version = "0.2.1" @@ -936,11 +985,11 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "1.9.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ - "autocfg", + "equivalent", "hashbrown", ] @@ -956,32 +1005,58 @@ dependencies = [ "web-sys", ] +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys 0.48.0", +] + [[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.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] [[package]] name = "khronos-egl" -version = "4.1.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.7.3", + "libloading 0.8.1", "pkg-config", ] +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + [[package]] name = "lazy_static" version = "1.4.0" @@ -990,9 +1065,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.134" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libloading" @@ -1006,19 +1081,46 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if 1.0.0", "winapi", ] +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" + [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -1026,12 +1128,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "malloc_buf" @@ -1044,9 +1143,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap2" @@ -1059,9 +1158,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -1081,7 +1180,7 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c12e48c737ee9a55e8bb2352bcde588f79ae308d3529ee888f7cc0f469b5777" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "cocoa-foundation", "foreign-types 0.3.2", @@ -1091,31 +1190,27 @@ dependencies = [ [[package]] name = "metal" -version = "0.24.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags", + "bitflags 2.4.1", "block", "core-graphics-types", - "foreign-types 0.3.2", + "foreign-types 0.5.0", "log", "objc", + "paste", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.5.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", + "simd-adler32", ] [[package]] @@ -1133,14 +1228,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.4" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", "wasi", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1166,12 +1261,12 @@ dependencies = [ [[package]] name = "naga" -version = "0.10.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "262d2840e72dbe250e8cf2f522d080988dfca624c4112c096238a4845f591707" +checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" dependencies = [ "bit-set", - "bitflags", + "bitflags 2.4.1", "codespan-reporting", "hexf-parse", "indexmap", @@ -1184,6 +1279,15 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom", +] + [[package]] name = "ndk" version = "0.3.0" @@ -1192,7 +1296,7 @@ checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab" dependencies = [ "jni-sys", "ndk-sys 0.2.2", - "num_enum", + "num_enum 0.5.11", "thiserror", ] @@ -1202,11 +1306,11 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "jni-sys", - "ndk-sys 0.4.0", - "num_enum", - "raw-window-handle 0.5.0", + "ndk-sys 0.4.1+23.1.7779620", + "num_enum 0.5.11", + "raw-window-handle 0.5.2", "thiserror", ] @@ -1226,50 +1330,21 @@ dependencies = [ "libc", "log", "ndk 0.3.0", - "ndk-macro 0.2.0", + "ndk-macro", "ndk-sys 0.2.2", ] -[[package]] -name = "ndk-glue" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" -dependencies = [ - "libc", - "log", - "ndk 0.7.0", - "ndk-context", - "ndk-macro 0.3.0", - "ndk-sys 0.4.0", - "once_cell", - "parking_lot 0.12.1", -] - [[package]] name = "ndk-macro" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" dependencies = [ - "darling 0.10.2", + "darling", "proc-macro-crate 0.1.5", "proc-macro2", "quote", - "syn", -] - -[[package]] -name = "ndk-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" -dependencies = [ - "darling 0.13.4", - "proc-macro-crate 1.2.1", - "proc-macro2", - "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1280,9 +1355,9 @@ checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" [[package]] name = "ndk-sys" -version = "0.4.0" +version = "0.4.1+23.1.7779620" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d83ec9c63ec5bf950200a8e508bdad6659972187b625469f58ef8c08e29046" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" dependencies = [ "jni-sys", ] @@ -1293,7 +1368,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cc", "cfg-if 0.1.10", "libc", @@ -1305,7 +1380,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cc", "cfg-if 1.0.0", "libc", @@ -1313,24 +1388,27 @@ dependencies = [ [[package]] name = "nix" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if 1.0.0", "libc", "memoffset", ] [[package]] -name = "nom" -version = "7.1.1" +name = "nix" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" dependencies = [ - "memchr", - "minimal-lexical", + "autocfg", + "bitflags 1.3.2", + "cfg-if 1.0.0", + "libc", + "memoffset", ] [[package]] @@ -1344,32 +1422,53 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_enum" -version = "0.5.7" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" dependencies = [ - "num_enum_derive", + "num_enum_derive 0.6.1", ] [[package]] name = "num_enum_derive" -version = "0.5.7" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate 1.2.1", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.42", ] [[package]] @@ -1382,6 +1481,32 @@ dependencies = [ "objc_exception", ] +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2", + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -1391,26 +1516,53 @@ dependencies = [ "cc", ] +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.15.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "orbclient" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +dependencies = [ + "libredox", +] [[package]] name = "owned_ttf_parser" -version = "0.6.0" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e6affeb1632d6ff6a23d2cd40ffed138e82f1532571a26f527c8a284bb2fbb" +dependencies = [ + "ttf-parser 0.15.2", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" dependencies = [ - "ttf-parser", + "ttf-parser 0.20.0", ] [[package]] name = "parking" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" @@ -1420,7 +1572,7 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core 0.8.5", + "parking_lot_core 0.8.6", ] [[package]] @@ -1430,41 +1582,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.3", + "parking_lot_core 0.9.9", ] [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "winapi", ] [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.4.1", "smallvec", - "windows-sys", + "windows-targets 0.48.5", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "piet-compute-toy" @@ -1481,7 +1639,7 @@ source = "git+https://github.com/linebender/piet-gpu?rev=8b65942#8b65942f6566f29 dependencies = [ "ash 0.31.0", "ash-window", - "bitflags", + "bitflags 1.3.2", "block", "cocoa-foundation", "metal 0.22.0", @@ -1494,33 +1652,40 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "png" -version = "0.17.6" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", + "fdeflate", "flate2", "miniz_oxide", ] [[package]] name = "pollster" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" +checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] name = "proc-macro-crate" @@ -1533,44 +1698,43 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "once_cell", - "thiserror", - "toml", + "once_cell", + "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.6" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f61dcf0b917cd75d4521d7343d1ffff3d1583054133c9b5cbea3375c703c40d" +checksum = "d135ede8821cf6376eb7a64148901e1690b788c11ae94dc297ae917dbc91dc0e" [[package]] name = "quote" -version = "1.0.21" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] [[package]] name = "range-alloc" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" [[package]] name = "raw-window-handle" @@ -1593,12 +1757,9 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-metal" @@ -1618,25 +1779,44 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] -name = "redox_users" -version = "0.4.3" +name = "redox_syscall" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "getrandom", - "redox_syscall", - "thiserror", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.6.0" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -1645,15 +1825,21 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "renderdoc-sys" -version = "0.7.1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -1662,22 +1848,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] -name = "rusttype" -version = "0.9.2" +name = "rustix" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] -name = "safe_arch" -version = "0.5.2" +name = "rusttype" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" +checksum = "3ff8374aa04134254b7995b63ad3dc41c7f7236f69528b28553da7d72efaa967" dependencies = [ - "bytemuck", + "ab_glyph_rasterizer", + "owned_ttf_parser 0.15.2", ] [[package]] @@ -1691,89 +1881,78 @@ dependencies = [ [[package]] name = "scoped-tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.4.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04b7c47a572f73de28bee5b5060d085b42b6ce1e4ee2b49c956ea7b25e94b6f0" +checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" dependencies = [ - "crossfont", + "ab_glyph", "log", - "smithay-client-toolkit 0.16.0", + "memmap2 0.5.10", + "smithay-client-toolkit 0.16.1", "tiny-skia", ] [[package]] name = "serde" -version = "1.0.145" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +dependencies = [ + "serde_derive", +] [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn", -] - -[[package]] -name = "servo-fontconfig" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e3e22fe5fd73d04ebf0daa049d3efe3eae55369ce38ab16d07ddd9ac5c217c" -dependencies = [ - "libc", - "servo-fontconfig-sys", + "syn 2.0.42", ] [[package]] -name = "servo-fontconfig-sys" -version = "5.1.0" +name = "simd-adler32" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36b879db9892dfa40f95da1c38a835d41634b825fbd8c4c418093d53c24b388" -dependencies = [ - "expat-sys", - "freetype-sys", - "pkg-config", -] +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "slotmap" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ "version_check", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smithay-client-toolkit" @@ -1782,7 +1961,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4750c76fd5d3ac95fa3ed80fe667d6a3d8590a960e5b575b98eea93339a80b80" dependencies = [ "andrew", - "bitflags", + "bitflags 1.3.2", "calloop 0.6.5", "dlib 0.4.2", "lazy_static", @@ -1796,30 +1975,39 @@ dependencies = [ [[package]] name = "smithay-client-toolkit" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ - "bitflags", - "calloop 0.10.1", - "dlib 0.5.0", + "bitflags 1.3.2", + "calloop 0.10.6", + "dlib 0.5.2", "lazy_static", "log", - "memmap2 0.5.7", - "nix 0.24.2", + "memmap2 0.5.10", + "nix 0.24.3", "pkg-config", "wayland-client 0.29.5", "wayland-cursor 0.29.5", "wayland-protocols 0.29.5", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + [[package]] name = "spirv" version = "0.2.0+1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" dependencies = [ - "bitflags", + "bitflags 1.3.2", "num-traits", ] @@ -1829,6 +2017,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + [[package]] name = "strsim" version = "0.9.3" @@ -1836,16 +2030,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" [[package]] -name = "strsim" -version = "0.10.0" +name = "syn" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] [[package]] name = "syn" -version = "1.0.102" +version = "2.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" +checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8" dependencies = [ "proc-macro2", "quote", @@ -1854,84 +2053,107 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.42", ] [[package]] name = "tiny-skia" -version = "0.7.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642680569bb895b16e4b9d181c60be1ed136fa0c9c7f11d004daf053ba89bf82" +checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" dependencies = [ "arrayref", - "arrayvec 0.5.2", + "arrayvec", "bytemuck", "cfg-if 1.0.0", "png", - "safe_arch", "tiny-skia-path", ] [[package]] name = "tiny-skia-path" -version = "0.7.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c114d32f0c2ee43d585367cb013dfaba967ab9f62b90d9af0d696e955e70fa6c" +checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" dependencies = [ "arrayref", "bytemuck", + "strict-num", ] [[package]] name = "toml" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + [[package]] name = "ttf-parser" -version = "0.6.2" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" +checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" [[package]] name = "unicode-ident" -version = "1.0.4" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -1951,20 +2173,13 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - [[package]] name = "walkdir" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -1976,9 +2191,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -1986,24 +2201,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.42", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2013,9 +2228,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2023,22 +2238,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.42", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wayland-client" @@ -2046,7 +2261,7 @@ version = "0.28.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3ab332350e502f159382201394a78e3cc12d0f04db863429260164ea40e0355" dependencies = [ - "bitflags", + "bitflags 1.3.2", "downcast-rs", "libc", "nix 0.20.0", @@ -2062,10 +2277,10 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" dependencies = [ - "bitflags", + "bitflags 1.3.2", "downcast-rs", "libc", - "nix 0.24.2", + "nix 0.24.3", "scoped-tls", "wayland-commons 0.29.5", "wayland-scanner 0.29.5", @@ -2090,7 +2305,7 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" dependencies = [ - "nix 0.24.2", + "nix 0.24.3", "once_cell", "smallvec", "wayland-sys 0.29.5", @@ -2113,7 +2328,7 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ - "nix 0.24.2", + "nix 0.24.3", "wayland-client 0.29.5", "xcursor", ] @@ -2124,7 +2339,7 @@ version = "0.28.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "286620ea4d803bacf61fa087a4242ee316693099ee5a140796aaba02b29f861f" dependencies = [ - "bitflags", + "bitflags 1.3.2", "wayland-client 0.28.6", "wayland-commons 0.28.6", "wayland-scanner 0.28.6", @@ -2136,7 +2351,7 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ - "bitflags", + "bitflags 1.3.2", "wayland-client 0.29.5", "wayland-commons 0.29.5", "wayland-scanner 0.29.5", @@ -2170,7 +2385,7 @@ version = "0.28.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d841fca9aed7febf9bed2e9796c49bf58d4152ceda8ac949ebe00868d8f0feb8" dependencies = [ - "dlib 0.5.0", + "dlib 0.5.2", "lazy_static", "pkg-config", ] @@ -2181,16 +2396,16 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" dependencies = [ - "dlib 0.5.0", + "dlib 0.5.2", "lazy_static", "pkg-config", ] [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -2198,16 +2413,19 @@ dependencies = [ [[package]] name = "wgpu" -version = "0.14.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2272b17bffc8a0c7d53897435da7c1db587c87d3a14e8dae9cdb8d1d210fc0f" +checksum = "30e7d227c9f961f2061c26f4cb0fbd4df0ef37e056edd0931783599d6c94ef24" dependencies = [ - "arrayvec 0.7.2", + "arrayvec", + "cfg-if 1.0.0", + "flume", "js-sys", "log", "naga", "parking_lot 0.12.1", - "raw-window-handle 0.5.0", + "profiling", + "raw-window-handle 0.5.2", "smallvec", "static_assertions", "wasm-bindgen", @@ -2220,21 +2438,20 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.14.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73d14cad393054caf992ee02b7da6a372245d39a484f7461c1f44f6f6359bd28" +checksum = "ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726" dependencies = [ - "arrayvec 0.7.2", + "arrayvec", "bit-vec", - "bitflags", - "cfg_aliases", + "bitflags 2.4.1", "codespan-reporting", - "fxhash", "log", "naga", "parking_lot 0.12.1", "profiling", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", + "rustc-hash", "smallvec", "thiserror", "web-sys", @@ -2244,35 +2461,39 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.14.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdae6a80dbc725343f02f854b310b37190be946aeea65e9d83afaa7d840ebaac" +checksum = "b84ecc802da3eb67b4cf3dd9ea6fe45bbb47ef13e6c49c5c3240868a9cc6cdd9" dependencies = [ "android_system_properties", - "arrayvec 0.7.2", - "ash 0.37.0+1.3.209", + "arrayvec", + "ash 0.37.3+1.3.251", "bit-set", - "bitflags", + "bitflags 2.4.1", "block", "core-graphics-types", "d3d12", - "foreign-types 0.3.2", - "fxhash", "glow", + "glutin_wgl_sys", "gpu-alloc", + "gpu-allocator", "gpu-descriptor", + "hassle-rs", "js-sys", "khronos-egl", - "libloading 0.7.3", + "libc", + "libloading 0.8.1", "log", - "metal 0.24.0", + "metal 0.27.0", "naga", "objc", + "once_cell", "parking_lot 0.12.1", "profiling", "range-alloc", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", "renderdoc-sys", + "rustc-hash", "smallvec", "thiserror", "wasm-bindgen", @@ -2283,13 +2504,21 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.14.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28fb86c1909233c804aa79b7dd1ad06ebd979b2a465e3e980582db0ea9e69f3f" +checksum = "0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd" dependencies = [ - "bitflags", + "bitflags 2.4.1", + "js-sys", + "web-sys", ] +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" + [[package]] name = "winapi" version = "0.3.9" @@ -2308,9 +2537,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -2321,48 +2550,222 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +dependencies = [ + "windows-core", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" -version = "0.36.1" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" -version = "0.36.1" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.36.1" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.36.1" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.36.1" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.36.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winit" @@ -2370,9 +2773,9 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79610794594d5e86be473ef7763f604f2159cbac8c94debd00df8fb41e86c2f8" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cocoa", - "core-foundation 0.9.3", + "core-foundation 0.9.4", "core-graphics 0.22.3", "core-video-sys", "dispatch", @@ -2383,7 +2786,7 @@ dependencies = [ "mio 0.7.14", "mio-misc", "ndk 0.3.0", - "ndk-glue 0.3.0", + "ndk-glue", "ndk-sys 0.2.2", "objc", "parking_lot 0.11.2", @@ -2398,37 +2801,48 @@ dependencies = [ [[package]] name = "winit" -version = "0.27.3" +version = "0.28.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22e94ba35ca3ff11820044bfa0dc48b95a3a15569c0068555566a12ef41c9e5" +checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" dependencies = [ - "bitflags", - "cocoa", - "core-foundation 0.9.3", + "android-activity", + "bitflags 1.3.2", + "cfg_aliases", + "core-foundation 0.9.4", "core-graphics 0.22.3", "dispatch", "instant", "libc", "log", - "mio 0.8.4", + "mio 0.8.10", "ndk 0.7.0", - "ndk-glue 0.7.0", - "objc", + "objc2", "once_cell", - "parking_lot 0.12.1", + "orbclient", "percent-encoding", - "raw-window-handle 0.4.3", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", + "redox_syscall 0.3.5", "sctk-adwaita", - "smithay-client-toolkit 0.16.0", + "smithay-client-toolkit 0.16.1", "wasm-bindgen", "wayland-client 0.29.5", + "wayland-commons 0.29.5", "wayland-protocols 0.29.5", + "wayland-scanner 0.29.5", "web-sys", - "windows-sys", + "windows-sys 0.45.0", "x11-dl", ] +[[package]] +name = "winnow" +version = "0.5.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +dependencies = [ + "memchr", +] + [[package]] name = "wio" version = "0.2.2" @@ -2440,35 +2854,49 @@ dependencies = [ [[package]] name = "x11-dl" -version = "2.20.0" +version = "2.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" dependencies = [ - "lazy_static", "libc", + "once_cell", "pkg-config", ] [[package]] name = "xcursor" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" -dependencies = [ - "nom", -] +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" [[package]] name = "xdg" -version = "2.4.1" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" + +[[package]] +name = "xml-rs" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + +[[package]] +name = "zerocopy" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4583db5cbd4c4c0303df2d15af80f0539db703fa1c68802d4cbbd2dd0f88f6" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ - "dirs", + "zerocopy-derive", ] [[package]] -name = "xml-rs" -version = "0.8.4" +name = "zerocopy-derive" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.42", +] diff --git a/compute-shader-hello/Cargo.toml b/compute-shader-hello/Cargo.toml index aaa9720..eb7876c 100644 --- a/compute-shader-hello/Cargo.toml +++ b/compute-shader-hello/Cargo.toml @@ -6,8 +6,9 @@ license = "MIT/Apache-2.0" edition = "2021" [dependencies] -wgpu = "0.14" -env_logger = "0.9.1" -pollster = "0.2.5" -futures-intrusive = "0.4" -bytemuck = { version = "1.12.1", features = ["derive"] } +wgpu = "0.18" +env_logger = "0.10.1" +pollster = "0.3" +futures-intrusive = "0.5" +bytemuck = { version = "1.14", features = ["derive"] } +fastrand = "1.8" diff --git a/compute-shader-hello/src/main.rs b/compute-shader-hello/src/main.rs index 6916d2e..7a06064 100644 --- a/compute-shader-hello/src/main.rs +++ b/compute-shader-hello/src/main.rs @@ -20,10 +20,27 @@ use std::time::Instant; use wgpu::util::DeviceExt; -use bytemuck; +use bytemuck::{self, bytes_of, Pod, Zeroable, offset_of}; + +const WG: u32 = 256; +const ELEMENTS_PER_THREAD: u32 = 4; +const BLOCK_SIZE: u32 = WG * ELEMENTS_PER_THREAD; +const BIN_COUNT: u32 = 16; + +#[derive(Clone, Copy, Default, Pod, Zeroable, Debug)] +#[repr(C)] +struct Config { + num_keys: u32, + num_blocks_per_wg: u32, + num_wgs: u32, + num_wgs_with_additional_blocks: u32, + num_reduce_wg_per_bin: u32, + num_scan_values: u32, + shift: u32, +} async fn run() { - let instance = wgpu::Instance::new(wgpu::Backends::PRIMARY); + let instance = wgpu::Instance::new(wgpu::InstanceDescriptor::default()); let adapter = instance.request_adapter(&Default::default()).await.unwrap(); let features = adapter.features(); let (device, queue) = adapter @@ -47,114 +64,379 @@ async fn run() { None }; + let n = 1 << 24; + let input = (0..n).map(|_| fastrand::u32(..)).collect::>(); + //let input = (0..n).collect::>(); + + let start_sort = std::time::Instant::now(); + let expected = sort_all(&input); + println!("CPU sort elapsed: {:?}", start_sort.elapsed()); + + // compute buffer and dispatch sizes + let num_blocks = (n + (BLOCK_SIZE - 1)) / BLOCK_SIZE; + // TODO: multiple blocks per wg for large problems + let num_wgs = num_blocks; + let num_blocks_per_wg = num_blocks / num_wgs; + let num_wgs_with_additional_blocks = num_blocks % num_wgs; + // I think the else always has the same value, but fix later. + let num_reduce_wgs = BIN_COUNT * if BLOCK_SIZE > num_wgs { + 1 + } else { + (num_wgs + BLOCK_SIZE - 1) / BLOCK_SIZE + }; + let num_reduce_wg_per_bin = num_reduce_wgs / BIN_COUNT; + + let config = Config { + num_keys: n, + num_blocks_per_wg, + num_wgs, + num_wgs_with_additional_blocks, + num_reduce_wg_per_bin, + num_scan_values: num_reduce_wgs, + shift: 0, + }; + println!("{config:?}"); + let start_instant = Instant::now(); let cs_module = device.create_shader_module(wgpu::ShaderModuleDescriptor { label: None, - //source: wgpu::ShaderSource::SpirV(bytes_to_u32(include_bytes!("alu.spv")).into()), source: wgpu::ShaderSource::Wgsl(include_str!("shader.wgsl").into()), }); println!("shader compilation {:?}", start_instant.elapsed()); - let input_f = &[1.0f32, 2.0f32]; - let input: &[u8] = bytemuck::bytes_of(input_f); + let config_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: None, + contents: bytes_of(&config), + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + }); let input_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { label: None, - contents: input, + contents: bytemuck::cast_slice(&input), usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::COPY_SRC, }); + let count_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: None, + size: (num_blocks * 64).into(), + usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC, + mapped_at_creation: false, + }); + let reduced_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: None, + size: (BLOCK_SIZE * 4).into(), + usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC, + mapped_at_creation: false, + }); let output_buf = device.create_buffer(&wgpu::BufferDescriptor { label: None, - size: input.len() as u64, + size: input_buf.size(), + usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC, + mapped_at_creation: false, + }); + let output_buf_2 = device.create_buffer(&wgpu::BufferDescriptor { + label: None, + size: input_buf.size(), + usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC, + mapped_at_creation: false, + }); + let output_staging_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: None, + size: output_buf.size(), usage: wgpu::BufferUsages::MAP_READ | wgpu::BufferUsages::COPY_DST, mapped_at_creation: false, }); - // This works if the buffer is initialized, otherwise reads all 0, for some reason. - let query_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + let query_buf = device.create_buffer(&wgpu::BufferDescriptor { + label: None, + size: 16, + usage: wgpu::BufferUsages::COPY_SRC | wgpu::BufferUsages::QUERY_RESOLVE, + mapped_at_creation: false, + }); + let query_staging_buf = device.create_buffer(&wgpu::BufferDescriptor { label: None, - contents: &[0; 16], + size: 16, usage: wgpu::BufferUsages::MAP_READ | wgpu::BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + let shifts = (0..8).map(|x| x * 4).collect::>(); + let shifts_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: None, + contents: bytemuck::cast_slice(&shifts), + usage: wgpu::BufferUsages::STORAGE + | wgpu::BufferUsages::COPY_DST + | wgpu::BufferUsages::COPY_SRC, }); + let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { label: None, - entries: &[wgpu::BindGroupLayoutEntry { - binding: 0, - visibility: wgpu::ShaderStages::COMPUTE, - ty: wgpu::BindingType::Buffer { - ty: wgpu::BufferBindingType::Storage { read_only: false }, - has_dynamic_offset: false, - min_binding_size: None, + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { read_only: true }, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 2, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { read_only: false }, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, }, - count: None, - }], + wgpu::BindGroupLayoutEntry { + binding: 3, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { read_only: false }, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 4, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Storage { read_only: false }, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + ], }); let compute_pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { label: None, bind_group_layouts: &[&bind_group_layout], push_constant_ranges: &[], }); - let pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { - label: None, + let count_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("count"), + layout: Some(&compute_pipeline_layout), + module: &cs_module, + entry_point: "count", + }); + let reduce_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("reduce"), + layout: Some(&compute_pipeline_layout), + module: &cs_module, + entry_point: "reduce", + }); + let scan_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("scan"), layout: Some(&compute_pipeline_layout), module: &cs_module, - entry_point: "main", + entry_point: "scan", + }); + let scan_add_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("scan_add"), + layout: Some(&compute_pipeline_layout), + module: &cs_module, + entry_point: "scan_add", + }); + let scatter_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("scatter"), + layout: Some(&compute_pipeline_layout), + module: &cs_module, + entry_point: "multisplit", }); - let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + let bind_group_init = device.create_bind_group(&wgpu::BindGroupDescriptor { label: None, layout: &bind_group_layout, - entries: &[wgpu::BindGroupEntry { - binding: 0, - resource: input_buf.as_entire_binding(), - }], + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: config_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: input_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: count_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 3, + resource: reduced_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 4, + resource: output_buf.as_entire_binding(), + }, + ], + }); + let bind_group_odd = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: config_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: output_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: count_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 3, + resource: reduced_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 4, + resource: output_buf_2.as_entire_binding(), + }, + ], + }); + let bind_group_even = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: config_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: output_buf_2.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: count_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 3, + resource: reduced_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 4, + resource: output_buf.as_entire_binding(), + }, + ], }); - let mut encoder = device.create_command_encoder(&Default::default()); - if let Some(query_set) = &query_set { - encoder.write_timestamp(query_set, 0); - } - { - let mut cpass = encoder.begin_compute_pass(&Default::default()); - cpass.set_pipeline(&pipeline); - cpass.set_bind_group(0, &bind_group, &[]); - cpass.dispatch_workgroups(input_f.len() as u32, 1, 1); - } - if let Some(query_set) = &query_set { - encoder.write_timestamp(query_set, 1); - } - encoder.copy_buffer_to_buffer(&input_buf, 0, &output_buf, 0, input.len() as u64); - if let Some(query_set) = &query_set { - encoder.resolve_query_set(query_set, 0..2, &query_buf, 0); - } - queue.submit(Some(encoder.finish())); - - let buf_slice = output_buf.slice(..); - let (sender, receiver) = futures_intrusive::channel::shared::oneshot_channel(); - buf_slice.map_async(wgpu::MapMode::Read, move |v| sender.send(v).unwrap()); - let query_slice = query_buf.slice(..); - // Assume that both buffers become available at the same time. A more careful - // approach would be to wait for both notifications to be sent. - let _query_future = query_slice.map_async(wgpu::MapMode::Read, |_| ()); - println!("pre-poll {:?}", std::time::Instant::now()); - device.poll(wgpu::Maintain::Wait); - println!("post-poll {:?}", std::time::Instant::now()); - if let Some(Ok(())) = receiver.receive().await { - let data_raw = &*buf_slice.get_mapped_range(); - let data: &[f32] = bytemuck::cast_slice(data_raw); - println!("data: {:?}", &*data); - } - if features.contains(wgpu::Features::TIMESTAMP_QUERY) { - let ts_period = queue.get_timestamp_period(); - let ts_data_raw = &*query_slice.get_mapped_range(); - let ts_data: &[u64] = bytemuck::cast_slice(ts_data_raw); - println!( - "compute shader elapsed: {:?}ms", - (ts_data[1] - ts_data[0]) as f64 * ts_period as f64 * 1e-6 - ); + for iter in 0..10 { + let mut encoder = device.create_command_encoder(&Default::default()); + if let Some(query_set) = &query_set { + encoder.write_timestamp(query_set, 0); + } + const N_PASSES: u64 = 8; + for pass in 0..N_PASSES { + // The most straightforward way to update the shift amount would be + // queue.buffer_write, but that has performance problems, so we copy + // from a pre-initialized buffer. + let shift_offset = offset_of!(Config, shift); + encoder.copy_buffer_to_buffer(&shifts_buf, 4 * pass, &config_buf, shift_offset as _, 4); + let mut cpass = encoder.begin_compute_pass(&Default::default()); + // TODO: set config based on pass + cpass.set_pipeline(&count_pipeline); + let bind_group = if pass == 0 { + &bind_group_init + } else if pass % 2 == 1 { + &bind_group_odd + } else { + &bind_group_even + }; + cpass.set_bind_group(0, bind_group, &[]); + cpass.dispatch_workgroups(config.num_wgs, 1, 1); + cpass.set_pipeline(&reduce_pipeline); + cpass.dispatch_workgroups(num_reduce_wgs, 1, 1); + cpass.set_pipeline(&scan_pipeline); + cpass.dispatch_workgroups(1, 1, 1); + cpass.set_pipeline(&scan_add_pipeline); + cpass.dispatch_workgroups(num_reduce_wgs, 1, 1); + cpass.set_pipeline(&scatter_pipeline); + cpass.dispatch_workgroups(config.num_wgs, 1, 1); + } + if let Some(query_set) = &query_set { + encoder.write_timestamp(query_set, 1); + } + let final_output_buf = if N_PASSES % 2 == 0 { + &output_buf_2 + } else { + &output_buf + }; + encoder.copy_buffer_to_buffer(&final_output_buf, 0, &output_staging_buf, 0, output_buf.size()); + if let Some(query_set) = &query_set { + encoder.resolve_query_set(query_set, 0..2, &query_buf, 0); + } + encoder.copy_buffer_to_buffer(&query_buf, 0, &query_staging_buf, 0, 16); + queue.submit(Some(encoder.finish())); + + let buf_slice = output_staging_buf.slice(..); + let (sender, receiver) = futures_intrusive::channel::shared::oneshot_channel(); + buf_slice.map_async(wgpu::MapMode::Read, move |v| sender.send(v).unwrap()); + let query_slice = query_staging_buf.slice(..); + // Assume that both buffers become available at the same time. A more careful + // approach would be to wait for both notifications to be sent. + let _query_future = query_slice.map_async(wgpu::MapMode::Read, |_| ()); + let poll_start_time = std::time::Instant::now(); + device.poll(wgpu::Maintain::Wait); + println!("poll time {:?}", poll_start_time.elapsed()); + if let Some(Ok(())) = receiver.receive().await { + let data_raw = &*buf_slice.get_mapped_range(); + let data: &[u32] = bytemuck::cast_slice(data_raw); + if iter == 0 { + println!("data size = {}", data.len()); + println!("data: {:x?}", &data[..32]); + println!("expected: {:x?}", &expected[..32]); + let first_diff = data.iter().zip(&expected).position(|(a, b)| a != b); + if let Some(ix) = first_diff { + println!("discrepancy at {ix}, got {} expected {}", data[ix], expected[ix]); + } + } + } + if features.contains(wgpu::Features::TIMESTAMP_QUERY) { + let ts_period = queue.get_timestamp_period(); + let ts_data_raw = &*query_slice.get_mapped_range(); + let ts_data: &[u64] = bytemuck::cast_slice(ts_data_raw); + println!( + "compute shader elapsed: {:?}ms", + (ts_data[1] - ts_data[0]) as f64 * ts_period as f64 * 1e-6 + ); + } + output_staging_buf.unmap(); + query_staging_buf.unmap(); } } +// Useful for verifying the operation of a single digit +#[allow(unused)] +fn sort_digit(input: &[u32], digit: u32) -> Vec { + let mut result = input.to_owned(); + let shift = digit * 4; + result.sort_by(|a, b| ((a >> shift) & 0xf).cmp(&((b >> shift) & 0xf))); + result +} + +fn sort_all(input: &[u32]) -> Vec { + let mut result = input.to_owned(); + result.sort(); + result +} + fn main() { pollster::block_on(run()); } diff --git a/compute-shader-hello/src/shader.wgsl b/compute-shader-hello/src/shader.wgsl index f491677..488d7f9 100644 --- a/compute-shader-hello/src/shader.wgsl +++ b/compute-shader-hello/src/shader.wgsl @@ -14,17 +14,448 @@ // // Also licensed under MIT license, at your choice. -struct DataBuf { - data: array, +struct Config { + num_keys: u32, + num_blocks_per_wg: u32, + num_wgs: u32, + num_wgs_with_additional_blocks: u32, + num_reduce_wg_per_bin: u32, + num_scan_values: u32, + shift: u32, } -@group(0) -@binding(0) -var v_indices: DataBuf; +@group(0) @binding(0) +var config: Config; + +@group(0) @binding(1) +var src: array; + +@group(0) @binding(2) +var counts: array; + +@group(0) @binding(3) +var reduced: array; + +@group(0) @binding(4) +var out: array; + +const OFFSET = 42u; + +const WG = 256u; +const BITS_PER_PASS = 4u; +const BIN_COUNT = 1u << BITS_PER_PASS; +const HISTOGRAM_SIZE = WG * BIN_COUNT; +const ELEMENTS_PER_THREAD = 4u; +const BLOCK_SIZE = WG * ELEMENTS_PER_THREAD; + +// Following version follows original and is designed to minimize atomic contention. + +// var histogram: array; + +// @compute +// @workgroup_size(WG) +// fn count( +// @builtin(local_invocation_id) local_id: vec3, +// @builtin(workgroup_id) group_id: vec3, +// ) { +// for (var i = 0u; i < BIN_COUNT; i++) { +// histogram[i * WG + local_id.x] = 0u; +// } +// workgroupBarrier(); +// var num_blocks = config.num_blocks_per_wg; +// var wg_block_start = BLOCK_SIZE * num_blocks * group_id.x; +// let num_not_additional = config.num_wgs - config.num_wgs_with_additional_blocks; +// if group_id.x >= num_not_additional { +// wg_block_start += (group_id.x - num_not_additional) * BLOCK_SIZE; +// num_blocks += 1u; +// } +// var block_index = wg_block_start + local_id.x; +// let shift_bit = config.shift; +// for (var block_count = 0u; block_count < num_blocks; block_count++) { +// var data_index = block_index; +// for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { +// if data_index < config.num_keys { +// let local_key = (src[data_index] >> shift_bit) & 0xfu; +// histogram[local_key * WG + local_id.x] += 1u; +// } +// data_index += WG; +// } +// block_index += BLOCK_SIZE; +// } +// workgroupBarrier(); +// if local_id.x < BIN_COUNT { +// var sum = 0u; +// for (var i = 0u; i < WG; i++) { +// sum += histogram[local_id.x * WG + i]; +// } +// counts[local_id.x * config.num_wgs + group_id.x] = sum; +// } +// } + +var histogram: array, BIN_COUNT>; + +@compute +@workgroup_size(WG) +fn count( + @builtin(local_invocation_id) local_id: vec3, + @builtin(workgroup_id) group_id: vec3, +) { + if local_id.x < BIN_COUNT { + histogram[local_id.x] = 0u; + } + workgroupBarrier(); + var num_blocks = config.num_blocks_per_wg; + var wg_block_start = BLOCK_SIZE * num_blocks * group_id.x; + let num_not_additional = config.num_wgs - config.num_wgs_with_additional_blocks; + if group_id.x >= num_not_additional { + wg_block_start += (group_id.x - num_not_additional) * BLOCK_SIZE; + num_blocks += 1u; + } + var block_index = wg_block_start + local_id.x; + let shift_bit = config.shift; + for (var block_count = 0u; block_count < num_blocks; block_count++) { + var data_index = block_index; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + if data_index < config.num_keys { + let local_key = (src[data_index] >> shift_bit) & 0xfu; + atomicAdd(&histogram[local_key], 1u); + } + data_index += WG; + } + block_index += BLOCK_SIZE; + } + workgroupBarrier(); + if local_id.x < BIN_COUNT { + counts[local_id.x * config.num_wgs + group_id.x] = histogram[local_id.x]; + } +} + +var sums: array; + +@compute +@workgroup_size(WG) +fn reduce( + @builtin(local_invocation_id) local_id: vec3, + @builtin(workgroup_id) group_id: vec3, +) { + let bin_id = group_id.x / config.num_reduce_wg_per_bin; + let bin_offset = bin_id * config.num_wgs; + let base_index = (group_id.x % config.num_reduce_wg_per_bin) * BLOCK_SIZE; + var sum = 0u; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let data_index = base_index + i * WG + local_id.x; + if data_index < config.num_wgs { + sum += counts[bin_offset + data_index]; + } + } + sums[local_id.x] = sum; + for (var i = 0u; i < 8u; i++) { + workgroupBarrier(); + if local_id.x < ((WG / 2u) >> i) { + sum += sums[local_id.x + ((WG / 2u) >> i)]; + sums[local_id.x] = sum; + } + } + if local_id.x == 0u { + reduced[group_id.x] = sum; + } +} + +var lds: array, ELEMENTS_PER_THREAD>; + +@compute +@workgroup_size(WG) +fn scan( + @builtin(local_invocation_id) local_id: vec3, + @builtin(workgroup_id) group_id: vec3, +) { + // We only dispatch a single wg, so I think this is always 0 + let base_index = BLOCK_SIZE * group_id.x; + let num_values_to_scan = config.num_scan_values; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let data_index = i * WG + local_id.x; + let col = (i * WG + local_id.x) / ELEMENTS_PER_THREAD; + let row = (i * WG + local_id.x) % ELEMENTS_PER_THREAD; + lds[row][col] = reduced[data_index]; + } + workgroupBarrier(); + var sum = 0u; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let tmp = lds[i][local_id.x]; + lds[i][local_id.x] = sum; + sum += tmp; + } + // workgroup prefix sum + sums[local_id.x] = sum; + for (var i = 0u; i < 8u; i++) { + workgroupBarrier(); + if local_id.x >= (1u << i) { + sum += sums[local_id.x - (1u << i)]; + } + workgroupBarrier(); + sums[local_id.x] = sum; + } + workgroupBarrier(); + sum = 0u; + if local_id.x > 0u { + sum = sums[local_id.x - 1u]; + } + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + lds[i][local_id.x] += sum; + } + // lds now contains exclusive prefix sum + workgroupBarrier(); + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let data_index = i * WG + local_id.x; + let col = (i * WG + local_id.x) / ELEMENTS_PER_THREAD; + let row = (i * WG + local_id.x) % ELEMENTS_PER_THREAD; + if data_index < num_values_to_scan { + reduced[data_index] = lds[row][col]; + } + } +} + +@compute +@workgroup_size(WG) +fn scan_add( + @builtin(local_invocation_id) local_id: vec3, + @builtin(workgroup_id) group_id: vec3, +) { + let bin_id = group_id.x / config.num_reduce_wg_per_bin; + let bin_offset = bin_id * config.num_wgs; + let base_index = (group_id.x % config.num_reduce_wg_per_bin) * ELEMENTS_PER_THREAD * WG; + let num_values_to_scan = config.num_wgs; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let data_index = base_index + i * WG + local_id.x; + let col = (i * WG + local_id.x) / ELEMENTS_PER_THREAD; + let row = (i * WG + local_id.x) % ELEMENTS_PER_THREAD; + // This is not gated, we let robustness do it for us + lds[row][col] = counts[bin_offset + data_index]; + } + workgroupBarrier(); + var sum = 0u; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let tmp = lds[i][local_id.x]; + lds[i][local_id.x] = sum; + sum += tmp; + } + // workgroup prefix sum + sums[local_id.x] = sum; + for (var i = 0u; i < 8u; i++) { + workgroupBarrier(); + if local_id.x >= (1u << i) { + sum += sums[local_id.x - (1u << i)]; + } + workgroupBarrier(); + sums[local_id.x] = sum; + } + workgroupBarrier(); + sum = reduced[group_id.x]; + if local_id.x > 0u { + sum += sums[local_id.x - 1u]; + } + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + lds[i][local_id.x] += sum; + } + // lds now contains exclusive prefix sum + // Note: storing inclusive might be slightly cheaper here + workgroupBarrier(); + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let data_index = base_index + i * WG + local_id.x; + let col = (i * WG + local_id.x) / ELEMENTS_PER_THREAD; + let row = (i * WG + local_id.x) % ELEMENTS_PER_THREAD; + if data_index < num_values_to_scan { + counts[bin_offset + data_index] = lds[row][col]; + } + } +} + +var bin_offset_cache: array; + +var local_histogram: array, BIN_COUNT>; + +@compute +@workgroup_size(WG) +fn scatter( + @builtin(local_invocation_id) local_id: vec3, + @builtin(workgroup_id) group_id: vec3, +) { + if local_id.x < BIN_COUNT { + bin_offset_cache[local_id.x] = counts[local_id.x * config.num_wgs + group_id.x]; + } + workgroupBarrier(); + let wg_block_start = BLOCK_SIZE * config.num_blocks_per_wg * group_id.x; + let num_blocks = config.num_blocks_per_wg; + // TODO: handle additional as above + let block_index = wg_block_start + local_id.x; + for (var block_count = 0u; block_count < num_blocks; block_count++) { + var data_index = block_index; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + if local_id.x < BIN_COUNT { + local_histogram[local_id.x] = 0u; + } + var local_key = ~0u; + if data_index < config.num_keys { + local_key = src[data_index]; + } + for (var bit_shift = 0u; bit_shift < BITS_PER_PASS; bit_shift += 2u) { + let key_index = (local_key >> config.shift) & 0xfu; + let bit_key = (key_index >> bit_shift) & 3u; + var packed_histogram = 1u << (bit_key * 8u); + // workgroup prefix sum + var sum = packed_histogram; + sums[local_id.x] = sum; + for (var i = 0u; i < 8u; i++) { + workgroupBarrier(); + if local_id.x >= (1u << i) { + sum += sums[local_id.x - (1u << i)]; + } + workgroupBarrier(); + sums[local_id.x] = sum; + } + workgroupBarrier(); + packed_histogram = sums[WG - 1u]; + packed_histogram = (packed_histogram << 8u) + (packed_histogram << 16u) + (packed_histogram << 24u); + var local_sum = packed_histogram; + if local_id.x > 0u { + local_sum += sums[local_id.x - 1u]; + } + let key_offset = (local_sum >> (bit_key * 8u)) & 0xffu; + sums[key_offset] = local_key; + workgroupBarrier(); + local_key = sums[local_id.x]; + // TODO: handle value here (if we had it) + workgroupBarrier(); + } + let key_index = (local_key >> config.shift) & 0xfu; + atomicAdd(&local_histogram[key_index], 1u); + workgroupBarrier(); + var histogram_local_sum = 0u; + if local_id.x < BIN_COUNT { + histogram_local_sum = local_histogram[local_id.x]; + } + // workgroup prefix sum of histogram + var histogram_prefix_sum = histogram_local_sum; + if local_id.x < BIN_COUNT { + sums[local_id.x] = histogram_prefix_sum; + } + for (var i = 0u; i < 4u; i++) { + workgroupBarrier(); + if local_id.x >= (1u << i) && local_id.x < BIN_COUNT { + histogram_prefix_sum += sums[local_id.x - (1u << i)]; + } + workgroupBarrier(); + if local_id.x < BIN_COUNT { + sums[local_id.x] = histogram_prefix_sum; + } + } + let global_offset = bin_offset_cache[key_index]; + workgroupBarrier(); + var local_offset = local_id.x; + if key_index > 0u { + local_offset -= sums[key_index - 1u]; + } + let total_offset = global_offset + local_offset; + if total_offset < config.num_keys { + out[total_offset] = local_key; + } + if local_id.x < BIN_COUNT { + bin_offset_cache[local_id.x] += local_histogram[local_id.x]; + } + workgroupBarrier(); + data_index += WG; + } + } +} + +// An implementation of warp-local multisplit. See the Onesweep paper. + +// Since WGSL doesn't yet have subgroups, we use the terms "warp" and "lane" +// to describe the arrangement of data, and simulate the warp ballot operation +// using simple iteration across values in shared memory. + +const WARP_SIZE = 16u; +const N_WARPS = WG / WARP_SIZE; +const WMLS_SIZE = N_WARPS * BIN_COUNT; + +var sh_wmls_histogram: array; +var sh_wmls_keys: array; +var sh_wmls_ballot: array; @compute -@workgroup_size(1) -fn main(@builtin(global_invocation_id) global_id: vec3) { - // TODO: a more interesting computation than this. - v_indices.data[global_id.x] = v_indices.data[global_id.x] + 42.0; +@workgroup_size(WG) +fn multisplit( + @builtin(local_invocation_id) local_id: vec3, + @builtin(workgroup_id) group_id: vec3, +) { + if local_id.x < BIN_COUNT { + bin_offset_cache[local_id.x] = counts[local_id.x * config.num_wgs + group_id.x]; + } + if local_id.x < WMLS_SIZE { + sh_wmls_histogram[local_id.x] = 0u; + } + let warp_ix = local_id.x / WARP_SIZE; + let lane_ix = local_id.x % WARP_SIZE; + let base_ix = BLOCK_SIZE * group_id.x + warp_ix * (WARP_SIZE * ELEMENTS_PER_THREAD) + lane_ix; + workgroupBarrier(); + // Note: these can be stored packed, either u16 or packed by hand + var offsets: array; + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let ix = base_ix + i * WARP_SIZE; + var key = ~0u; + if ix < config.num_keys { + key = src[ix]; + } + let digit = (key >> config.shift) % BIN_COUNT; + sh_wmls_keys[local_id.x] = digit; + workgroupBarrier(); + var ballot = 0u; + for (var j = 0u; j < WARP_SIZE; j++) { + if digit == sh_wmls_keys[warp_ix * WARP_SIZE + j] { + ballot |= (1u << j); + } + } + let rank = countOneBits(ballot << (31u - lane_ix)); + let wmls_ix = digit * N_WARPS + warp_ix; + offsets[i] = sh_wmls_histogram[wmls_ix] + rank - 1u; + workgroupBarrier(); + if rank == 1u { + sh_wmls_histogram[wmls_ix] += countOneBits(ballot); + } + } + // Prefix sum over warps for each digit + workgroupBarrier(); + var sum = 0u; + if local_id.x < WMLS_SIZE { + sum = sh_wmls_histogram[local_id.x]; + } + let sub_ix = local_id.x % N_WARPS; + for (var i = 0u; i < firstTrailingBit(N_WARPS); i++) { + if local_id.x < WMLS_SIZE && sub_ix >= (1u << i) { + sum += sh_wmls_histogram[local_id.x - (1u << i)]; + } + workgroupBarrier(); + if local_id.x < WMLS_SIZE && sub_ix >= (1u << i) { + sh_wmls_histogram[local_id.x] = sum; + } + workgroupBarrier(); + } + // scatter + for (var i = 0u; i < ELEMENTS_PER_THREAD; i++) { + let ix = base_ix + i * WARP_SIZE; + var key = ~0u; + if ix < config.num_keys { + key = src[ix]; + } + let digit = (key >> config.shift) % BIN_COUNT; + var total_offset = bin_offset_cache[digit]; + if warp_ix > 0u { + total_offset += sh_wmls_histogram[digit * N_WARPS + warp_ix - 1u]; + } + total_offset += offsets[i]; + if total_offset < config.num_keys { + out[total_offset] = key; + } + } + // TODO (multiple blocks per wg): update bin_offset_cache } diff --git a/compute-shader-toy/Cargo.toml b/compute-shader-toy/Cargo.toml index f1fa2cf..da18ed9 100644 --- a/compute-shader-toy/Cargo.toml +++ b/compute-shader-toy/Cargo.toml @@ -7,8 +7,8 @@ description = "A simple compute shader example that draws in a window, based on edition = "2021" [dependencies] -wgpu = { version = "0.14"} -winit = "0.27.3" -pollster = "0.2.5" -async-executor = "1.4.1" -bytemuck = "1.12.1" +wgpu = { version = "0.18" } +winit = "0.28" +pollster = "0.3" +async-executor = "1.8" +bytemuck = "1.14" diff --git a/compute-shader-toy/src/main.rs b/compute-shader-toy/src/main.rs index 64a0e42..1351cc4 100644 --- a/compute-shader-toy/src/main.rs +++ b/compute-shader-toy/src/main.rs @@ -26,8 +26,8 @@ use winit::{ }; async fn run(event_loop: EventLoop<()>, window: Window) { - let instance = wgpu::Instance::new(wgpu::Backends::PRIMARY); - let surface = unsafe { instance.create_surface(&window) }; + let instance = wgpu::Instance::new(Default::default()); + let surface = unsafe { instance.create_surface(&window).unwrap() }; let adapter = instance .request_adapter(&wgpu::RequestAdapterOptions { power_preference: Default::default(), @@ -42,14 +42,16 @@ async fn run(event_loop: EventLoop<()>, window: Window) { .await .expect("error creating device"); let size = window.inner_size(); - let format = surface.get_supported_formats(&adapter)[0]; + let swapchain_capabilities = surface.get_capabilities(&adapter); + let format = swapchain_capabilities.formats[0]; let sc = wgpu::SurfaceConfiguration { usage: wgpu::TextureUsages::RENDER_ATTACHMENT, format: format, width: size.width, height: size.height, present_mode: wgpu::PresentMode::Fifo, - alpha_mode: surface.get_supported_alpha_modes(&adapter)[0], + alpha_mode: swapchain_capabilities.alpha_modes[0], + view_formats: vec![], }; surface.configure(&device, &sc); @@ -119,6 +121,7 @@ async fn run(event_loop: EventLoop<()>, window: Window) { dimension: wgpu::TextureDimension::D2, format: wgpu::TextureFormat::Rgba8Unorm, usage: wgpu::TextureUsages::STORAGE_BINDING | wgpu::TextureUsages::TEXTURE_BINDING, + view_formats: &[], }); let img_view = img.create_view(&Default::default()); @@ -211,7 +214,7 @@ async fn run(event_loop: EventLoop<()>, window: Window) { }); let start_time = std::time::Instant::now(); - event_loop.run(move |event, _, control_flow| { + event_loop.run(move |event, _event_loop, control_flow| { // TODO: this may be excessive polling. It really should be synchronized with // swapchain presentation, but that's currently underbaked in wgpu. *control_flow = ControlFlow::Poll; @@ -247,10 +250,12 @@ async fn run(event_loop: EventLoop<()>, window: Window) { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), - store: true, + store: wgpu::StoreOp::Store, }, })], depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, }); rpass.set_pipeline(&render_pipeline); rpass.set_bind_group(0, ©_bind_group, &[]); diff --git a/piet-compute-toy/src/main.rs b/piet-compute-toy/src/main.rs index dddcf3a..a7c2afc 100644 --- a/piet-compute-toy/src/main.rs +++ b/piet-compute-toy/src/main.rs @@ -23,8 +23,8 @@ //! (cd shader && ninja) && cargo run //! ``` -use piet_gpu_hal::{BufferUsage, Error, Instance, ImageLayout, Session}; use piet_gpu_hal::include_shader; +use piet_gpu_hal::{BufferUsage, Error, ImageLayout, Instance, Session}; use winit::{ event::{Event, WindowEvent}, @@ -51,18 +51,22 @@ unsafe fn toy() -> Result<(), Error> { let mut swapchain = instance.swapchain(size.width as _, size.height as _, &device, &surface)?; let session = Session::new(device); let config_size = 12; - let mut config_host = session.create_buffer(config_size, BufferUsage::COPY_SRC | BufferUsage::MAP_WRITE)?; - let config_dev = session.create_buffer(config_size, BufferUsage::COPY_DST | BufferUsage::STORAGE)?; + let mut config_host = + session.create_buffer(config_size, BufferUsage::COPY_SRC | BufferUsage::MAP_WRITE)?; + let config_dev = + session.create_buffer(config_size, BufferUsage::COPY_DST | BufferUsage::STORAGE)?; let staging_img = session.create_image2d(size.width, size.height)?; let start_time = std::time::Instant::now(); let shader_code = include_shader!(&session, "../shader/gen/shader"); - let pipeline = session.pipeline_builder() + let pipeline = session + .pipeline_builder() .add_buffers(1) .add_images(1) .create_compute_pipeline(&session, shader_code)?; - let descriptor_set = session.descriptor_set_builder() + let descriptor_set = session + .descriptor_set_builder() .add_buffers(&[&config_dev]) .add_images(&[&staging_img]) .build(&session, &pipeline)?; @@ -85,11 +89,7 @@ unsafe fn toy() -> Result<(), Error> { let swap_image = swapchain.image(image_idx); let i_time: f32 = 0.5 + start_time.elapsed().as_micros() as f32 * 1e-6; - let config_data = [ - size.width, - size.height, - i_time.to_bits(), - ]; + let config_data = [size.width, size.height, i_time.to_bits()]; config_host.write(&config_data).unwrap(); let mut cmd_buf = session.cmd_buf().unwrap();