From 07e169d9c674de5ea68f01f226359841b9fb523c Mon Sep 17 00:00:00 2001 From: Michael Krasnitski <42564254+mkrasnitski@users.noreply.github.com> Date: Sun, 22 Sep 2024 14:44:11 -0700 Subject: [PATCH] Bump `wgpu` to 0.19 and `winit` to 0.29 (#391) * Bump `wgpu` to 0.19 and `winit` to 0.29 * Fix conway example * Fix custom-shader example * Fix raqote-winit example * Fix tiny-skia-winit example * Fix minimal-winit example * Fix minimal-winit-android example * Fix minimal-web example * Fix minimal-tao example Removed menu as it's no longer supported directly by `tao`. * Fix invaders example Lock game-loop to 1.1.0 - version 1.2.0 bumps `winit` to 0.30 which we don't support yet * Fix minimal-egui example * Keep imgui-winit example on old dependencies Until `imgui-wgpu-rs` updates support for `wgpu`, pin the example to an old `pixels` commit. * Fix minimal-fltk exmaple * Cargo.lock --- Cargo.lock | 1953 +++++++++++++++++---- Cargo.toml | 8 +- examples/conway/Cargo.toml | 4 +- examples/conway/src/main.rs | 36 +- examples/custom-shader/Cargo.toml | 4 +- examples/custom-shader/src/main.rs | 26 +- examples/custom-shader/src/renderers.rs | 4 +- examples/imgui-winit/Cargo.toml | 11 +- examples/invaders/Cargo.toml | 6 +- examples/invaders/src/main.rs | 38 +- examples/minimal-egui/Cargo.toml | 10 +- examples/minimal-egui/src/gui.rs | 28 +- examples/minimal-egui/src/main.rs | 31 +- examples/minimal-fltk/Cargo.toml | 2 +- examples/minimal-fltk/src/main.rs | 16 +- examples/minimal-tao/Cargo.toml | 2 +- examples/minimal-tao/src/main.rs | 17 +- examples/minimal-web/Cargo.toml | 4 +- examples/minimal-web/src/main.rs | 24 +- examples/minimal-winit-android/Cargo.toml | 2 +- examples/minimal-winit-android/src/lib.rs | 56 +- examples/minimal-winit/Cargo.toml | 4 +- examples/minimal-winit/src/main.rs | 24 +- examples/raqote-winit/Cargo.toml | 4 +- examples/raqote-winit/src/main.rs | 24 +- examples/tiny-skia-winit/Cargo.toml | 4 +- examples/tiny-skia-winit/src/main.rs | 24 +- internals/pixels-mocks/Cargo.toml | 2 +- internals/pixels-mocks/src/lib.rs | 60 +- src/builder.rs | 40 +- src/lib.rs | 68 +- src/renderers.rs | 4 +- 32 files changed, 1953 insertions(+), 587 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 99990ac7..6a97c1b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,6 +46,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "getrandom", "once_cell", "version_check", "zerocopy", @@ -68,20 +69,23 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-activity" -version = "0.4.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" dependencies = [ "android-properties", - "bitflags 1.3.2", + "bitflags 2.6.0", "cc", + "cesu8", + "jni", "jni-sys", "libc", "log", - "ndk", + "ndk 0.8.0", "ndk-context", - "ndk-sys", - "num_enum 0.6.1", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.3", + "thiserror", ] [[package]] @@ -141,6 +145,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + [[package]] name = "ash" version = "0.37.3+1.3.251" @@ -150,23 +160,191 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.1.1", + "futures-lite 2.3.0", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "blocking", + "futures-lite 1.13.0", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +dependencies = [ + "async-lock 3.4.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.7.3", + "rustix 0.38.37", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.37", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io 2.3.4", + "async-lock 3.4.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.37", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "atk" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" dependencies = [ "atk-sys", - "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" dependencies = [ "glib-sys", "gobject-sys", @@ -174,6 +352,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.3.0" @@ -234,23 +418,45 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "block-sys" -version = "0.1.0-beta.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" dependencies = [ "objc-sys", ] [[package]] name = "block2" -version = "0.2.0-alpha.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" dependencies = [ "block-sys", - "objc2-encode", + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite 2.3.0", + "piper", ] [[package]] @@ -293,11 +499,11 @@ checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cairo-rs" -version = "0.16.7" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", @@ -307,9 +513,9 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.16.3" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", @@ -330,6 +536,32 @@ dependencies = [ "vec_map", ] +[[package]] +name = "calloop" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +dependencies = [ + "bitflags 2.6.0", + "log", + "polling 3.7.3", + "rustix 0.38.37", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop 0.12.4", + "rustix 0.38.37", + "wayland-backend", + "wayland-client 0.31.6", +] + [[package]] name = "cargo-run-wasm" version = "0.3.2" @@ -476,12 +708,43 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + [[package]] name = "com-rs" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "combine" version = "4.6.7" @@ -492,6 +755,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -522,10 +794,10 @@ dependencies = [ "error-iter", "getrandom", "log", - "pixels", + "pixels 0.14.0", "randomize", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -593,6 +865,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -640,12 +921,28 @@ dependencies = [ "winapi", ] +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "cty" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + [[package]] name = "custom-shader" version = "0.1.0" @@ -654,9 +951,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "pixels 0.14.0", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -670,6 +967,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "d3d12" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" +dependencies = [ + "bitflags 2.6.0", + "libloading 0.8.5", + "winapi", +] + [[package]] name = "darling" version = "0.13.4" @@ -705,12 +1013,33 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "devserver_lib" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edf215dbb8cb1409cca7645aaed35f9e39fb0a21855bba1ac48bc0334903bf66" +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -726,6 +1055,15 @@ dependencies = [ "libloading 0.8.5", ] +[[package]] +name = "document-features" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" version = "1.2.1" @@ -748,18 +1086,18 @@ dependencies = [ [[package]] name = "ecolor" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfdf4e52dbbb615cfd30cf5a5265335c217b5fd8d669593cea74a517d9c605af" +checksum = "03cfe80b1890e1a8cdbffc6044d6872e814aaf6011835a2a5e2db0e5c5c4ef4e" dependencies = [ "bytemuck", ] [[package]] name = "egui" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7" +checksum = "180f595432a5b615fc6b74afef3955249b86cfea72607b40740a4cd60d5297d0" dependencies = [ "ahash", "epaint", @@ -769,41 +1107,65 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d4c9ab93d9528c184ef1d695c8c99b2e6d50833696ec3f513063efeee0fe77" +checksum = "86f2d75e1e70228e7126f828bac05f9fe0e7ea88e9660c8cebe609bb114c61d4" dependencies = [ "bytemuck", + "document-features", + "egui", "epaint", "log", "thiserror", "type-map", - "wgpu", + "web-time 0.2.4", + "wgpu 0.19.4", ] [[package]] name = "egui-winit" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15479a96d9fadccf5dac690bdc6373b97b8e1c0dd28367058f25a5298da0195" +checksum = "aa4d44f8d89f70d4480545eb2346b76ea88c3022e9f4706cebc799dbe8b004a2" dependencies = [ "egui", "log", - "raw-window-handle 0.5.2", - "web-time", + "raw-window-handle 0.6.2", + "web-time 0.2.4", "webbrowser", - "winit 0.28.7", + "winit 0.29.15", ] [[package]] name = "emath" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef2b29de53074e575c18b694167ccbe6e5191f7b25fe65175a0d905a32eeec0" +checksum = "6916301ecf80448f786cdf3eb51d9dbdd831538732229d49119e2d4312eaaf09" dependencies = [ "bytemuck", ] +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "env_logger" version = "0.10.2" @@ -819,9 +1181,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58067b840d009143934d91d8dcb8ded054d8301d7c11a517ace0a99bb1e1595e" +checksum = "77b9fdf617dd7f58b0c8e6e9e4a1281f730cde0831d40547da446b2bb76a47af" dependencies = [ "ab_glyph", "ahash", @@ -865,26 +1227,73 @@ dependencies = [ ] [[package]] -name = "expat-sys" -version = "2.1.6" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa" -dependencies = [ - "cmake", - "pkg-config", -] +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] -name = "fallible-iterator" -version = "0.2.0" +name = "event-listener" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] [[package]] -name = "fastrand" -version = "2.1.1" +name = "event-listener" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + +[[package]] +name = "expat-sys" +version = "2.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa" +dependencies = [ + "cmake", + "pkg-config", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -926,7 +1335,7 @@ dependencies = [ "fltk-sys", "once_cell", "paste", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "ttf-parser", ] @@ -1050,6 +1459,34 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.1.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.30" @@ -1061,6 +1498,12 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + [[package]] name = "futures-task" version = "0.3.30" @@ -1074,8 +1517,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", + "futures-io", "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1083,22 +1529,21 @@ dependencies = [ [[package]] name = "game-loop" -version = "0.10.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96fac7dbca77aeb9f72968756770bdba2063a016166fa130d99232a8988bc36" +checksum = "2a06ba31889b085d08926f154e554ba0b87d6f6f5d11624ea3445e76df0d0028" dependencies = [ "wasm-bindgen", "web-sys", - "winit 0.28.7", + "winit 0.29.15", ] [[package]] name = "gdk" -version = "0.16.2" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1110,22 +1555,22 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.16.7" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3578c60dee9d029ad86593ed88cb40f35c1b83360e12498d055022385dd9a05" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" dependencies = [ - "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.16.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" dependencies = [ "gio-sys", "glib-sys", @@ -1136,9 +1581,9 @@ dependencies = [ [[package]] name = "gdk-sys" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1153,9 +1598,9 @@ dependencies = [ [[package]] name = "gdkwayland-sys" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4511710212ed3020b61a8622a37aa6f0dd2a84516575da92e9b96928dcbe83ba" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" dependencies = [ "gdk-sys", "glib-sys", @@ -1167,9 +1612,9 @@ dependencies = [ [[package]] name = "gdkx11-sys" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa2bf8b5b8c414bc5d05e48b271896d0fd3ddb57464a3108438082da61de6af" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" dependencies = [ "gdk-sys", "glib-sys", @@ -1178,6 +1623,26 @@ dependencies = [ "x11", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + [[package]] name = "getrandom" version = "0.2.15" @@ -1242,11 +1707,10 @@ checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "gio" -version = "0.16.7" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" dependencies = [ - "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", @@ -1262,9 +1726,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.16.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" dependencies = [ "glib-sys", "gobject-sys", @@ -1273,13 +1737,24 @@ dependencies = [ "winapi", ] +[[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 = "glib" -version = "0.16.9" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16aa2475c9debed5a32832cb5ff2af5a3f9e1ab9e69df58eaadc1ab2004d6eba" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", @@ -1290,6 +1765,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", + "memchr", "once_cell", "smallvec", "thiserror", @@ -1297,24 +1773,23 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.16.8" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ - "anyhow", "heck 0.4.1", - "proc-macro-crate", + "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] name = "glib-sys" -version = "0.16.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" dependencies = [ "libc", "system-deps", @@ -1332,11 +1807,32 @@ dependencies = [ "web-sys", ] +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "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 = "gobject-sys" -version = "0.16.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", @@ -1375,6 +1871,19 @@ dependencies = [ "windows 0.44.0", ] +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + [[package]] name = "gpu-descriptor" version = "0.2.4" @@ -1397,12 +1906,11 @@ dependencies = [ [[package]] name = "gtk" -version = "0.16.2" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" dependencies = [ "atk", - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1413,16 +1921,15 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", - "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1438,16 +1945,15 @@ dependencies = [ [[package]] name = "gtk3-macros" -version = "0.16.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "096eb63c6fedf03bafe65e5924595785eaf1bcb7200dac0f2cbe9c9738f05ad8" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" dependencies = [ - "anyhow", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -1482,6 +1988,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.6.0", + "com", + "libc", + "libloading 0.8.5", + "thiserror", + "widestring", + "winapi", +] + [[package]] name = "heck" version = "0.3.3" @@ -1503,12 +2024,24 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "hermit-abi" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hexf-parse" version = "0.2.1" @@ -1530,6 +2063,17 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2", + "dispatch", + "objc2", +] + [[package]] name = "id-arena" version = "2.2.1" @@ -1599,7 +2143,7 @@ dependencies = [ "imgui", "log", "smallvec", - "wgpu", + "wgpu 0.17.2", ] [[package]] @@ -1612,7 +2156,7 @@ dependencies = [ "imgui-wgpu", "imgui-winit-support", "log", - "pixels", + "pixels 0.13.0", "winit 0.27.5", "winit_input_helper 0.13.0", ] @@ -1691,10 +2235,10 @@ dependencies = [ "getrandom", "gilrs", "log", - "pixels", + "pixels 0.14.0", "simple-invaders", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -1707,13 +2251,24 @@ dependencies = [ "mach2", ] +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "is-terminal" version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] @@ -1724,20 +2279,6 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" -[[package]] -name = "jni" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" -dependencies = [ - "cesu8", - "combine", - "jni-sys", - "log", - "thiserror", - "walkdir", -] - [[package]] name = "jni" version = "0.21.1" @@ -1789,6 +2330,23 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.5", + "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.5.0" @@ -1854,12 +2412,24 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + [[package]] name = "linux-raw-sys" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.12" @@ -1920,6 +2490,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -1929,6 +2508,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "memoffset" version = "0.9.1" @@ -1953,6 +2541,21 @@ dependencies = [ "paste", ] +[[package]] +name = "metal" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + [[package]] name = "minimal-egui" version = "0.1.0" @@ -1963,9 +2566,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "pixels 0.14.0", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -1976,7 +2579,7 @@ dependencies = [ "error-iter", "fltk", "log", - "pixels", + "pixels 0.14.0", ] [[package]] @@ -1986,7 +2589,7 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels", + "pixels 0.14.0", "tao", ] @@ -1999,13 +2602,13 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels", + "pixels 0.14.0", "pollster", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -2015,9 +2618,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "pixels 0.14.0", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -2027,8 +2630,8 @@ dependencies = [ "android_logger", "env_logger", "log", - "pixels", - "winit 0.28.7", + "pixels 0.14.0", + "winit 0.29.15", ] [[package]] @@ -2082,7 +2685,27 @@ dependencies = [ "log", "num-traits", "rustc-hash", - "spirv", + "spirv 0.2.0+1.5.4", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "naga" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +dependencies = [ + "bit-set", + "bitflags 2.6.0", + "codespan-reporting", + "hexf-parse", + "indexmap 2.5.0", + "log", + "num-traits", + "rustc-hash", + "spirv 0.3.0+sdk-1.3.268.0", "termcolor", "thiserror", "unicode-xid", @@ -2096,12 +2719,27 @@ checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "num_enum 0.5.11", "raw-window-handle 0.5.2", "thiserror", ] +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.3", + "raw-window-handle 0.6.2", + "thiserror", +] + [[package]] name = "ndk-context" version = "0.1.1" @@ -2116,10 +2754,10 @@ checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" dependencies = [ "libc", "log", - "ndk", + "ndk 0.7.0", "ndk-context", "ndk-macro", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "once_cell", "parking_lot", ] @@ -2131,7 +2769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" dependencies = [ "darling", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -2147,8 +2785,17 @@ dependencies = [ ] [[package]] -name = "nix" -version = "0.24.3" +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" dependencies = [ @@ -2171,6 +2818,18 @@ dependencies = [ "memoffset 0.6.5", ] +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", +] + [[package]] name = "nix" version = "0.29.0" @@ -2210,11 +2869,11 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.6.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ - "num_enum_derive 0.6.1", + "num_enum_derive 0.7.3", ] [[package]] @@ -2223,7 +2882,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -2231,11 +2890,11 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.6.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", "syn 2.0.77", @@ -2253,29 +2912,25 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.2.0-beta.2" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.3.0-beta.3.patch-leaks.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" dependencies = [ - "block2", "objc-sys", "objc2-encode", ] [[package]] name = "objc2-encode" -version = "2.0.0-pre.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" -dependencies = [ - "objc-sys", -] +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" [[package]] name = "objc_exception" @@ -2310,6 +2965,16 @@ dependencies = [ "libredox", ] +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "owned_ttf_parser" version = "0.24.0" @@ -2321,11 +2986,10 @@ dependencies = [ [[package]] name = "pango" -version = "0.16.5" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" dependencies = [ - "bitflags 1.3.2", "gio", "glib", "libc", @@ -2335,9 +2999,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.16.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" dependencies = [ "glib-sys", "gobject-sys", @@ -2345,6 +3009,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.3" @@ -2407,6 +3077,30 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand 2.1.1", + "futures-io", +] + +[[package]] +name = "pixels" +version = "0.13.0" +source = "git+https://github.com/parasyte/pixels?rev=befb84a#befb84aea80179377554e22fa9350f02b0b2aad6" +dependencies = [ + "bytemuck", + "pollster", + "raw-window-handle 0.5.2", + "thiserror", + "ultraviolet", + "wgpu 0.17.2", +] + [[package]] name = "pixels" version = "0.14.0" @@ -2414,18 +3108,18 @@ dependencies = [ "bytemuck", "pixels-mocks", "pollster", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "thiserror", "ultraviolet", - "wgpu", - "winit 0.28.7", + "wgpu 0.19.4", + "winit 0.29.15", ] [[package]] name = "pixels-mocks" version = "0.1.0" dependencies = [ - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", ] [[package]] @@ -2447,12 +3141,58 @@ dependencies = [ "miniz_oxide 0.7.4", ] +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.37", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "pollster" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2463,6 +3203,16 @@ dependencies = [ "toml_edit 0.19.15", ] +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2502,6 +3252,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +[[package]] +name = "quick-xml" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.37" @@ -2511,6 +3270,36 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "randomize" version = "3.0.1" @@ -2543,10 +3332,10 @@ dependencies = [ "error-iter", "euclid", "log", - "pixels", + "pixels 0.14.0", "raqote", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -2564,6 +3353,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + [[package]] name = "redox_syscall" version = "0.3.5" @@ -2654,6 +3449,20 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + [[package]] name = "rustix" version = "0.38.37" @@ -2663,7 +3472,7 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] @@ -2720,21 +3529,21 @@ checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" dependencies = [ "crossfont", "log", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "tiny-skia 0.7.0", ] [[package]] name = "sctk-adwaita" -version = "0.5.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" +checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" dependencies = [ "ab_glyph", "log", - "memmap2", - "smithay-client-toolkit", - "tiny-skia 0.8.4", + "memmap2 0.9.5", + "smithay-client-toolkit 0.18.1", + "tiny-skia 0.11.4", ] [[package]] @@ -2775,6 +3584,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "serde_spanned" version = "0.6.7" @@ -2805,12 +3625,32 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -2859,16 +3699,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ "bitflags 1.3.2", - "calloop", + "calloop 0.10.6", "dlib", "lazy_static", "log", - "memmap2", + "memmap2 0.5.10", "nix 0.24.3", "pkg-config", - "wayland-client", - "wayland-cursor", - "wayland-protocols", + "wayland-client 0.29.5", + "wayland-cursor 0.29.5", + "wayland-protocols 0.29.5", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +dependencies = [ + "bitflags 2.6.0", + "calloop 0.12.4", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2 0.9.5", + "rustix 0.38.37", + "thiserror", + "wayland-backend", + "wayland-client 0.31.6", + "wayland-csd-frame", + "wayland-cursor 0.31.6", + "wayland-protocols 0.31.2", + "wayland-protocols-wlr", + "wayland-scanner 0.31.5", + "xkeysym", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", ] [[package]] @@ -2881,6 +3765,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -2948,48 +3841,43 @@ dependencies = [ [[package]] name = "tao" -version = "0.20.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511428fc831c0b02629c7c160ecb07a4fec54fa7d95571d280c4fbd41779720a" +checksum = "75d4a64cfac8e487c61d778fe4ab8480f162451e8af7f247aafadcb3b2560852" dependencies = [ "bitflags 1.3.2", - "cairo-rs", "cc", - "cocoa 0.24.1", + "cocoa 0.25.0", "core-foundation", - "core-graphics 0.22.3", + "core-graphics 0.23.2", "crossbeam-channel", "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", "gdkwayland-sys", "gdkx11-sys", - "gio", - "glib", - "glib-sys", "gtk", "image", "instant", - "jni 0.20.0", + "jni", "lazy_static", "libc", "log", - "ndk", + "ndk 0.7.0", "ndk-context", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "objc", "once_cell", "parking_lot", "png", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "scopeguard", "tao-macros", "unicode-segmentation", - "uuid", - "windows 0.48.0", - "windows-implement 0.48.0", + "url", + "windows 0.52.0", + "windows-implement 0.52.0", + "windows-version", "x11-dl", + "zbus", ] [[package]] @@ -3016,9 +3904,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", - "fastrand", + "fastrand 2.1.1", "once_cell", - "rustix", + "rustix 0.38.37", "windows-sys 0.59.0", ] @@ -3066,20 +3954,6 @@ dependencies = [ "tiny-skia-path 0.7.0", ] -[[package]] -name = "tiny-skia" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" -dependencies = [ - "arrayref", - "arrayvec 0.7.6", - "bytemuck", - "cfg-if", - "png", - "tiny-skia-path 0.8.4", -] - [[package]] name = "tiny-skia" version = "0.11.4" @@ -3105,17 +3979,6 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "tiny-skia-path" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", -] - [[package]] name = "tiny-skia-path" version = "0.11.4" @@ -3134,10 +3997,10 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels", + "pixels 0.14.0", "tiny-skia 0.11.4", - "winit 0.28.7", - "winit_input_helper 0.14.1", + "winit 0.29.15", + "winit_input_helper 0.15.3", ] [[package]] @@ -3157,21 +4020,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" -version = "0.8.19" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.21", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -3184,20 +4047,51 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.5.0", "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "toml_edit" -version = "0.22.21" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", ] [[package]] @@ -3222,17 +4116,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] -name = "ultraviolet" -version = "0.9.2" +name = "typenum" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a28554d13eb5daba527cc1b91b6c341372a0ae45ed277ffb2c6fbc04f319d7e" -dependencies = [ - "wide", -] +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] -name = "unicode-bidi" -version = "0.3.15" +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset 0.9.1", + "tempfile", + "winapi", +] + +[[package]] +name = "ultraviolet" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a28554d13eb5daba527cc1b91b6c341372a0ae45ed277ffb2c6fbc04f319d7e" +dependencies = [ + "wide", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" @@ -3285,9 +4196,6 @@ name = "uuid" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" -dependencies = [ - "getrandom", -] [[package]] name = "vec_map" @@ -3307,6 +4215,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "waker-fn" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" + [[package]] name = "walkdir" version = "2.5.0" @@ -3521,6 +4435,20 @@ dependencies = [ "serde", ] +[[package]] +name = "wayland-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" +dependencies = [ + "cc", + "downcast-rs", + "rustix 0.38.37", + "scoped-tls", + "smallvec", + "wayland-sys 0.31.5", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -3533,8 +4461,20 @@ dependencies = [ "nix 0.24.3", "scoped-tls", "wayland-commons", - "wayland-scanner", - "wayland-sys", + "wayland-scanner 0.29.5", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-client" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" +dependencies = [ + "bitflags 2.6.0", + "rustix 0.38.37", + "wayland-backend", + "wayland-scanner 0.31.5", ] [[package]] @@ -3546,7 +4486,18 @@ dependencies = [ "nix 0.24.3", "once_cell", "smallvec", - "wayland-sys", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.6.0", + "cursor-icon", + "wayland-backend", ] [[package]] @@ -3556,7 +4507,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ "nix 0.24.3", - "wayland-client", + "wayland-client 0.29.5", + "xcursor", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" +dependencies = [ + "rustix 0.38.37", + "wayland-client 0.31.6", "xcursor", ] @@ -3567,9 +4529,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ "bitflags 1.3.2", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", - "wayland-scanner", + "wayland-scanner 0.29.5", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client 0.31.6", + "wayland-scanner 0.31.5", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client 0.31.6", + "wayland-protocols 0.31.2", + "wayland-scanner 0.31.5", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client 0.31.6", + "wayland-protocols 0.31.2", + "wayland-scanner 0.31.5", ] [[package]] @@ -3583,6 +4583,17 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "wayland-scanner" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + [[package]] name = "wayland-sys" version = "0.29.5" @@ -3594,6 +4605,18 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "wayland-sys" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.70" @@ -3614,6 +4637,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webbrowser" version = "0.8.15" @@ -3622,7 +4655,7 @@ checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" dependencies = [ "core-foundation", "home", - "jni 0.21.1", + "jni", "log", "ndk-context", "objc", @@ -3641,7 +4674,7 @@ dependencies = [ "cfg-if", "js-sys", "log", - "naga", + "naga 0.13.0", "parking_lot", "profiling", "raw-window-handle 0.5.2", @@ -3650,9 +4683,34 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", + "wgpu-core 0.17.1", + "wgpu-hal 0.17.2", + "wgpu-types 0.17.0", +] + +[[package]] +name = "wgpu" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" +dependencies = [ + "arrayvec 0.7.6", + "cfg-if", + "cfg_aliases 0.1.1", + "js-sys", + "log", + "naga 0.19.2", + "parking_lot", + "profiling", + "raw-window-handle 0.6.2", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.19.4", + "wgpu-hal 0.19.5", + "wgpu-types 0.19.2", ] [[package]] @@ -3666,7 +4724,7 @@ dependencies = [ "bitflags 2.6.0", "codespan-reporting", "log", - "naga", + "naga 0.13.0", "parking_lot", "profiling", "raw-window-handle 0.5.2", @@ -3674,8 +4732,34 @@ dependencies = [ "smallvec", "thiserror", "web-sys", - "wgpu-hal", - "wgpu-types", + "wgpu-hal 0.17.2", + "wgpu-types 0.17.0", +] + +[[package]] +name = "wgpu-core" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" +dependencies = [ + "arrayvec 0.7.6", + "bit-vec", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "indexmap 2.5.0", + "log", + "naga 0.19.2", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle 0.6.2", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.19.5", + "wgpu-types 0.19.2", ] [[package]] @@ -3691,19 +4775,19 @@ dependencies = [ "bitflags 2.6.0", "block", "core-graphics-types", - "d3d12", - "glow", + "d3d12 0.7.0", + "glow 0.12.3", "gpu-alloc", - "gpu-allocator", + "gpu-allocator 0.22.0", "gpu-descriptor", - "hassle-rs", + "hassle-rs 0.10.0", "js-sys", - "khronos-egl", + "khronos-egl 4.1.0", "libc", "libloading 0.8.5", "log", - "metal", - "naga", + "metal 0.26.0", + "naga 0.13.0", "objc", "parking_lot", "profiling", @@ -3715,7 +4799,52 @@ dependencies = [ "thiserror", "wasm-bindgen", "web-sys", - "wgpu-types", + "wgpu-types 0.17.0", + "winapi", +] + +[[package]] +name = "wgpu-hal" +version = "0.19.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" +dependencies = [ + "android_system_properties", + "arrayvec 0.7.6", + "ash", + "bit-set", + "bitflags 2.6.0", + "block", + "cfg_aliases 0.1.1", + "core-graphics-types", + "d3d12 0.19.0", + "glow 0.13.1", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator 0.25.0", + "gpu-descriptor", + "hassle-rs 0.11.0", + "js-sys", + "khronos-egl 6.0.0", + "libc", + "libloading 0.8.5", + "log", + "metal 0.27.0", + "naga 0.19.2", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot", + "profiling", + "range-alloc", + "raw-window-handle 0.6.2", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 0.19.2", "winapi", ] @@ -3730,6 +4859,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wgpu-types" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + [[package]] name = "wide" version = "0.7.28" @@ -3788,13 +4928,14 @@ dependencies = [ [[package]] name = "windows" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-implement 0.48.0", - "windows-interface 0.48.0", - "windows-targets 0.48.5", + "windows-core 0.52.0", + "windows-implement 0.52.0", + "windows-interface 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -3803,7 +4944,16 @@ version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core", + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ "windows-targets 0.52.6", ] @@ -3822,13 +4972,13 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -3844,13 +4994,13 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -3978,6 +5128,15 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-version" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -4155,7 +5314,7 @@ dependencies = [ "libc", "log", "mio", - "ndk", + "ndk 0.7.0", "ndk-glue", "objc", "once_cell", @@ -4164,10 +5323,10 @@ dependencies = [ "raw-window-handle 0.4.3", "raw-window-handle 0.5.2", "sctk-adwaita 0.4.3", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "wasm-bindgen", - "wayland-client", - "wayland-protocols", + "wayland-client 0.29.5", + "wayland-protocols 0.29.5", "web-sys", "windows-sys 0.36.1", "x11-dl", @@ -4175,37 +5334,50 @@ dependencies = [ [[package]] name = "winit" -version = "0.28.7" +version = "0.29.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" +checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" dependencies = [ + "ahash", "android-activity", - "bitflags 1.3.2", + "atomic-waker", + "bitflags 2.6.0", + "bytemuck", + "calloop 0.12.4", "cfg_aliases 0.1.1", "core-foundation", - "core-graphics 0.22.3", - "dispatch", - "instant", + "core-graphics 0.23.2", + "cursor-icon", + "icrate", + "js-sys", "libc", "log", - "mio", - "ndk", + "memmap2 0.9.5", + "ndk 0.8.0", + "ndk-sys 0.5.0+25.2.9519653", "objc2", "once_cell", "orbclient", "percent-encoding", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "redox_syscall 0.3.5", - "sctk-adwaita 0.5.4", - "smithay-client-toolkit", + "rustix 0.38.37", + "sctk-adwaita 0.8.3", + "smithay-client-toolkit 0.18.1", + "smol_str", + "unicode-segmentation", "wasm-bindgen", - "wayland-client", - "wayland-commons", - "wayland-protocols", - "wayland-scanner", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client 0.31.6", + "wayland-protocols 0.31.2", + "wayland-protocols-plasma", "web-sys", - "windows-sys 0.45.0", + "web-time 0.2.4", + "windows-sys 0.48.0", "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -4219,11 +5391,12 @@ dependencies = [ [[package]] name = "winit_input_helper" -version = "0.14.1" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de0485e86aa2ee87d2d4c373a908c9548357bc65c5bce19fd884c8ea9eac4d7" +checksum = "ec8c438d722f4ce69f261e0206072b51a8ac80af1ad6bf7e3dc5c25b5d8483a3" dependencies = [ - "winit 0.28.7", + "web-time 1.1.0", + "winit 0.29.15", ] [[package]] @@ -4235,15 +5408,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" -dependencies = [ - "memchr", -] - [[package]] name = "wio" version = "0.2.2" @@ -4274,24 +5438,141 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.5", + "once_cell", + "rustix 0.38.37", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + [[package]] name = "xcursor" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.6.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + [[package]] name = "xml-rs" version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" +[[package]] +name = "zbus" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "byteorder", + "derivative", + "enumflags2", + "event-listener 2.5.3", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix 0.26.4", + "once_cell", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "winapi", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + [[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -4305,3 +5586,41 @@ dependencies = [ "quote", "syn 2.0.77", ] + +[[package]] +name = "zvariant" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +dependencies = [ + "byteorder", + "enumflags2", + "libc", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/Cargo.toml b/Cargo.toml index 4cfbbbf8..cb925df0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,20 +21,20 @@ include = [ [dependencies] bytemuck = "1.12" -raw-window-handle = "0.5" +raw-window-handle = "0.6" thiserror = "1.0" ultraviolet = "0.9" -wgpu = "0.17" +wgpu = "0.19" [target.'cfg(target_arch = "wasm32")'.dependencies] -wgpu = { version = "0.17", features = ["webgl"] } +wgpu = { version = "0.19", features = ["webgl"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] pollster = "0.3" [dev-dependencies] pixels-mocks = { path = "internals/pixels-mocks" } -winit = "0.28" +winit = "0.29" [workspace] members = [ diff --git a/examples/conway/Cargo.toml b/examples/conway/Cargo.toml index 09fcebe2..2fb97320 100644 --- a/examples/conway/Cargo.toml +++ b/examples/conway/Cargo.toml @@ -18,5 +18,5 @@ clipline = "0.1.1" log = "0.4" pixels = { path = "../.." } randomize = "3" -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/conway/src/main.rs b/examples/conway/src/main.rs index a5cf02c9..395e7e8c 100644 --- a/examples/conway/src/main.rs +++ b/examples/conway/src/main.rs @@ -6,8 +6,9 @@ use log::{debug, error}; use pixels::{Error, Pixels, SurfaceTexture}; use winit::{ dpi::LogicalSize, - event::{Event, VirtualKeyCode}, - event_loop::{ControlFlow, EventLoop}, + event::{Event, WindowEvent}, + event_loop::EventLoop, + keyboard::KeyCode, window::WindowBuilder, }; use winit_input_helper::WinitInputHelper; @@ -17,7 +18,7 @@ const HEIGHT: u32 = 300; fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut input = WinitInputHelper::new(); let window = { @@ -42,13 +43,17 @@ fn main() -> Result<(), Error> { let mut draw_state: Option = None; - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // The one and only event that winit_input_helper doesn't have for us... - if let Event::RedrawRequested(_) = event { + if let Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } = event + { life.draw(pixels.frame_mut()); if let Err(err) = pixels.render() { log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -57,26 +62,26 @@ fn main() -> Result<(), Error> { // It returns `true` when it is time to update our game state and request a redraw. if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } - if input.key_pressed(VirtualKeyCode::P) { + if input.key_pressed(KeyCode::KeyP) { paused = !paused; } - if input.key_pressed_os(VirtualKeyCode::Space) { + if input.key_pressed_os(KeyCode::Space) { // Space is frame-step, so ensure we're paused paused = true; } - if input.key_pressed(VirtualKeyCode::R) { + if input.key_pressed(KeyCode::KeyR) { life.randomize(); } // Handle mouse. This is a bit involved since support some simple // line drawing (mostly because it makes nice looking patterns). let (mouse_cell, mouse_prev_cell) = input - .mouse() + .cursor() .map(|(mx, my)| { - let (dx, dy) = input.mouse_diff(); + let (dx, dy) = input.cursor_diff(); let prev_x = mx - dx; let prev_y = my - dy; @@ -125,16 +130,17 @@ fn main() -> Result<(), Error> { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } - if !paused || input.key_pressed_os(VirtualKeyCode::Space) { + if !paused || input.key_pressed_os(KeyCode::Space) { life.update(); } window.request_redraw(); } }); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/examples/custom-shader/Cargo.toml b/examples/custom-shader/Cargo.toml index 83c00c0d..554c2048 100644 --- a/examples/custom-shader/Cargo.toml +++ b/examples/custom-shader/Cargo.toml @@ -15,5 +15,5 @@ env_logger = "0.10" error-iter = "0.4" log = "0.4" pixels = { path = "../.." } -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/custom-shader/src/main.rs b/examples/custom-shader/src/main.rs index 52e26e15..7040bcaa 100644 --- a/examples/custom-shader/src/main.rs +++ b/examples/custom-shader/src/main.rs @@ -6,8 +6,9 @@ use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; use winit::dpi::LogicalSize; -use winit::event::{Event, VirtualKeyCode}; -use winit::event_loop::{ControlFlow, EventLoop}; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; use winit::window::WindowBuilder; use winit_input_helper::WinitInputHelper; @@ -27,7 +28,7 @@ struct World { fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); @@ -48,9 +49,13 @@ fn main() -> Result<(), Error> { let mut time = 0.0; let mut noise_renderer = NoiseRenderer::new(&pixels, window_size.width, window_size.height)?; - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // Draw the current frame - if let Event::RedrawRequested(_) = event { + if let Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } = event + { world.draw(pixels.frame_mut()); let render_result = pixels.render_with(|encoder, render_target, context| { @@ -67,7 +72,7 @@ fn main() -> Result<(), Error> { if let Err(err) = render_result { log_error("pixels.render_with", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -75,8 +80,8 @@ fn main() -> Result<(), Error> { // Handle input events if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } @@ -84,12 +89,12 @@ fn main() -> Result<(), Error> { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } if let Err(err) = noise_renderer.resize(&pixels, size.width, size.height) { log_error("noise_renderer.resize", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -99,6 +104,7 @@ fn main() -> Result<(), Error> { window.request_redraw(); } }); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/examples/custom-shader/src/renderers.rs b/examples/custom-shader/src/renderers.rs index 899d0fbd..ec720427 100644 --- a/examples/custom-shader/src/renderers.rs +++ b/examples/custom-shader/src/renderers.rs @@ -197,10 +197,12 @@ impl NoiseRenderer { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Clear(wgpu::Color::BLACK), - store: true, + store: wgpu::StoreOp::Store, }, })], depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, }); rpass.set_pipeline(&self.render_pipeline); rpass.set_bind_group(0, &self.bind_group, &[]); diff --git a/examples/imgui-winit/Cargo.toml b/examples/imgui-winit/Cargo.toml index 7080518d..f5660e99 100644 --- a/examples/imgui-winit/Cargo.toml +++ b/examples/imgui-winit/Cargo.toml @@ -13,9 +13,16 @@ default = ["optimize"] env_logger = "0.10" error-iter = "0.4" imgui = "0.11" -imgui-wgpu = "0.24" imgui-winit-support = "0.11" log = "0.4" -pixels = { path = "../.." } winit = "0.27" winit_input_helper = "0.13" + +# Until this gets updated support, this example is stuck on winit 0.27 and wgpu 0.17 +[dependencies.imgui-wgpu] +version = "0.24" + +# Frozen dep for this specific example +[dependencies.pixels] +git = "https://github.com/parasyte/pixels" +rev = "befb84a" diff --git a/examples/invaders/Cargo.toml b/examples/invaders/Cargo.toml index d199d554..26a1cab9 100644 --- a/examples/invaders/Cargo.toml +++ b/examples/invaders/Cargo.toml @@ -13,11 +13,11 @@ default = ["optimize"] byteorder = "1" env_logger = "0.10" error-iter = "0.4" -game-loop = { version = "0.10", features = ["winit"] } +game-loop = { version = "=1.1.0", features = ["winit"] } getrandom = "0.2" gilrs = "0.10" log = "0.4" pixels = { path = "../.." } simple-invaders = { path = "simple-invaders" } -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/invaders/src/main.rs b/examples/invaders/src/main.rs index 4843bd9e..bd8ab32f 100644 --- a/examples/invaders/src/main.rs +++ b/examples/invaders/src/main.rs @@ -7,16 +7,15 @@ use gilrs::{Button, GamepadId, Gilrs}; use log::{debug, error}; use pixels::{Error, Pixels, SurfaceTexture}; use simple_invaders::{Controls, Direction, World, FPS, HEIGHT, TIME_STEP, WIDTH}; +use std::sync::Arc; use std::{env, time::Duration}; -use winit::{ - dpi::LogicalSize, event::VirtualKeyCode, event_loop::EventLoop, window::WindowBuilder, -}; +use winit::{dpi::LogicalSize, event_loop::EventLoop, keyboard::KeyCode, window::WindowBuilder}; use winit_input_helper::WinitInputHelper; /// Uber-struct representing the entire game. struct Game { /// Software renderer. - pixels: Pixels, + pixels: Pixels<'static>, /// Invaders world. world: World, /// Player controls for world updates. @@ -32,7 +31,7 @@ struct Game { } impl Game { - fn new(pixels: Pixels, debug: bool) -> Self { + fn new(pixels: Pixels<'static>, debug: bool) -> Self { Self { pixels, world: World::new(generate_seed(), debug), @@ -59,11 +58,11 @@ impl Game { self.controls = { // Keyboard controls - let mut left = self.input.key_held(VirtualKeyCode::Left); - let mut right = self.input.key_held(VirtualKeyCode::Right); - let mut fire = self.input.key_pressed(VirtualKeyCode::Space); - let mut pause = self.input.key_pressed(VirtualKeyCode::Pause) - | self.input.key_pressed(VirtualKeyCode::P); + let mut left = self.input.key_held(KeyCode::ArrowLeft); + let mut right = self.input.key_held(KeyCode::ArrowRight); + let mut fire = self.input.key_pressed(KeyCode::Space); + let mut pause = + self.input.key_pressed(KeyCode::Pause) | self.input.key_pressed(KeyCode::KeyP); // GamePad controls if let Some(id) = self.gamepad { @@ -103,7 +102,7 @@ impl Game { fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); // Enable debug mode with `DEBUG=true` environment variable let debug = env::var("DEBUG") @@ -114,23 +113,25 @@ fn main() -> Result<(), Error> { let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); let scaled_size = LogicalSize::new(WIDTH as f64 * 3.0, HEIGHT as f64 * 3.0); - WindowBuilder::new() + let window = WindowBuilder::new() .with_title("pixel invaders") .with_inner_size(scaled_size) .with_min_inner_size(size) .build(&event_loop) - .unwrap() + .unwrap(); + Arc::new(window) }; let pixels = { let window_size = window.inner_size(); - let surface_texture = SurfaceTexture::new(window_size.width, window_size.height, &window); + let surface_texture = + SurfaceTexture::new(window_size.width, window_size.height, Arc::clone(&window)); Pixels::new(WIDTH as u32, HEIGHT as u32, surface_texture)? }; let game = Game::new(pixels, debug); - game_loop( + let res = game_loop( event_loop, window, game, @@ -164,15 +165,13 @@ fn main() -> Result<(), Error> { g.game.update_controls(); // Close events - if g.game.input.key_pressed(VirtualKeyCode::Escape) - || g.game.input.close_requested() - { + if g.game.input.key_pressed(KeyCode::Escape) || g.game.input.close_requested() { g.exit(); return; } // Reset game - if g.game.input.key_pressed(VirtualKeyCode::R) { + if g.game.input.key_pressed(KeyCode::KeyR) { g.game.reset_game(); } @@ -186,6 +185,7 @@ fn main() -> Result<(), Error> { } }, ); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/examples/minimal-egui/Cargo.toml b/examples/minimal-egui/Cargo.toml index b91a8b8c..717eaa03 100644 --- a/examples/minimal-egui/Cargo.toml +++ b/examples/minimal-egui/Cargo.toml @@ -10,12 +10,12 @@ optimize = ["log/release_max_level_warn"] default = ["optimize"] [dependencies] -egui = "0.23" -egui-wgpu = "0.23" -egui-winit = { version = "0.23", default-features = false, features = ["links"] } +egui = "0.26" +egui-wgpu = "0.26.0" +egui-winit = { version = "0.26", default-features = false, features = ["links"] } env_logger = "0.10" error-iter = "0.4" log = "0.4" pixels = { path = "../.." } -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/minimal-egui/src/gui.rs b/examples/minimal-egui/src/gui.rs index 45ee68d3..4abb0aed 100644 --- a/examples/minimal-egui/src/gui.rs +++ b/examples/minimal-egui/src/gui.rs @@ -1,5 +1,5 @@ -use egui::{ClippedPrimitive, Context, TexturesDelta}; -use egui_wgpu::renderer::{Renderer, ScreenDescriptor}; +use egui::{ClippedPrimitive, Context, TexturesDelta, ViewportId}; +use egui_wgpu::{Renderer, ScreenDescriptor}; use pixels::{wgpu, PixelsContext}; use winit::event_loop::EventLoopWindowTarget; use winit::window::Window; @@ -36,9 +36,13 @@ impl Framework { let max_texture_size = pixels.device().limits().max_texture_dimension_2d as usize; let egui_ctx = Context::default(); - let mut egui_state = egui_winit::State::new(event_loop); - egui_state.set_max_texture_side(max_texture_size); - egui_state.set_pixels_per_point(scale_factor); + let egui_state = egui_winit::State::new( + egui_ctx.clone(), + ViewportId::ROOT, + event_loop, + Some(scale_factor), + Some(max_texture_size), + ); let screen_descriptor = ScreenDescriptor { size_in_pixels: [width, height], pixels_per_point: scale_factor, @@ -59,8 +63,8 @@ impl Framework { } /// Handle input events from the window manager. - pub(crate) fn handle_event(&mut self, event: &winit::event::WindowEvent) { - let _ = self.egui_state.on_event(&self.egui_ctx, event); + pub(crate) fn handle_event(&mut self, window: &Window, event: &winit::event::WindowEvent) { + let _ = self.egui_state.on_window_event(window, event); } /// Resize egui. @@ -86,8 +90,10 @@ impl Framework { self.textures.append(output.textures_delta); self.egui_state - .handle_platform_output(window, &self.egui_ctx, output.platform_output); - self.paint_jobs = self.egui_ctx.tessellate(output.shapes); + .handle_platform_output(window, output.platform_output); + self.paint_jobs = self + .egui_ctx + .tessellate(output.shapes, self.screen_descriptor.pixels_per_point); } /// Render egui. @@ -119,10 +125,12 @@ impl Framework { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Load, - store: true, + store: wgpu::StoreOp::Store, }, })], depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, }); self.renderer diff --git a/examples/minimal-egui/src/main.rs b/examples/minimal-egui/src/main.rs index 232a3112..f0d86a0d 100644 --- a/examples/minimal-egui/src/main.rs +++ b/examples/minimal-egui/src/main.rs @@ -6,8 +6,9 @@ use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; use winit::dpi::LogicalSize; -use winit::event::{Event, VirtualKeyCode}; -use winit::event_loop::{ControlFlow, EventLoop}; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; use winit::window::WindowBuilder; use winit_input_helper::WinitInputHelper; @@ -27,7 +28,7 @@ struct World { fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); @@ -56,12 +57,12 @@ fn main() -> Result<(), Error> { }; let mut world = World::new(); - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // Handle input events if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } @@ -74,7 +75,7 @@ fn main() -> Result<(), Error> { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } framework.resize(size.width, size.height); @@ -86,12 +87,11 @@ fn main() -> Result<(), Error> { } match event { - Event::WindowEvent { event, .. } => { - // Update egui inputs - framework.handle_event(&event); - } // Draw the current frame - Event::RedrawRequested(_) => { + Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } => { // Draw the world world.draw(pixels.frame_mut()); @@ -112,12 +112,17 @@ fn main() -> Result<(), Error> { // Basic error handling if let Err(err) = render_result { log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); } } + Event::WindowEvent { event, .. } => { + // Update egui inputs + framework.handle_event(&window, &event); + } _ => (), } }); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/examples/minimal-fltk/Cargo.toml b/examples/minimal-fltk/Cargo.toml index b8b38537..dc8026dc 100644 --- a/examples/minimal-fltk/Cargo.toml +++ b/examples/minimal-fltk/Cargo.toml @@ -11,7 +11,7 @@ default = ["optimize"] [dependencies] error-iter = "0.4" -fltk = { version = "1", features = ["rwh05", "no-images", "no-pango"] } +fltk = { version = "1", features = ["rwh06", "no-images", "no-pango"] } env_logger = "0.10" log = "0.4" pixels = { path = "../.." } diff --git a/examples/minimal-fltk/src/main.rs b/examples/minimal-fltk/src/main.rs index fd7f1dbb..7b77ef30 100644 --- a/examples/minimal-fltk/src/main.rs +++ b/examples/minimal-fltk/src/main.rs @@ -32,14 +32,6 @@ fn main() -> Result<(), Error> { win.end(); win.show(); - let mut pixels = { - let pixel_width = win.pixel_w() as u32; - let pixel_height = win.pixel_h() as u32; - let surface_texture = SurfaceTexture::new(pixel_width, pixel_height, &win); - - Pixels::new(WIDTH, HEIGHT, surface_texture)? - }; - let mut world = World::new(); // Handle resize events @@ -53,6 +45,14 @@ fn main() -> Result<(), Error> { surface_resize.borrow_mut().replace((width, height)); }); + let mut pixels = { + let pixel_width = win.pixel_w() as u32; + let pixel_height = win.pixel_h() as u32; + let surface_texture = SurfaceTexture::new(pixel_width, pixel_height, &win); + + Pixels::new(WIDTH, HEIGHT, surface_texture)? + }; + while app.wait() { // Update internal state world.update(); diff --git a/examples/minimal-tao/Cargo.toml b/examples/minimal-tao/Cargo.toml index 0f48dfae..0171c8ed 100644 --- a/examples/minimal-tao/Cargo.toml +++ b/examples/minimal-tao/Cargo.toml @@ -14,4 +14,4 @@ env_logger = "0.10" error-iter = "0.4" log = "0.4" pixels = { path = "../.." } -tao = "0.20" +tao = "0.24" diff --git a/examples/minimal-tao/src/main.rs b/examples/minimal-tao/src/main.rs index fc70f609..68b34caa 100644 --- a/examples/minimal-tao/src/main.rs +++ b/examples/minimal-tao/src/main.rs @@ -4,11 +4,11 @@ use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; +use std::sync::Arc; use tao::dpi::LogicalSize; use tao::event::{Event, KeyEvent, WindowEvent}; use tao::event_loop::{ControlFlow, EventLoop}; use tao::keyboard::KeyCode; -use tao::menu::{MenuBar, MenuItem}; use tao::window::WindowBuilder; const WIDTH: u32 = 320; @@ -27,25 +27,20 @@ fn main() -> Result<(), Error> { env_logger::init(); let event_loop = EventLoop::new(); let window = { - let mut file_menu = MenuBar::new(); - file_menu.add_native_item(MenuItem::Quit); - - let mut menu = MenuBar::new(); - menu.add_submenu("File", true, file_menu); - let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() + let window = WindowBuilder::new() .with_title("Hello Pixels/Tao") - .with_menu(menu) .with_inner_size(size) .with_min_inner_size(size) .build(&event_loop) - .unwrap() + .unwrap(); + Arc::new(window) }; let mut pixels = { let window_size = window.inner_size(); - let surface_texture = SurfaceTexture::new(window_size.width, window_size.height, &window); + let surface_texture = + SurfaceTexture::new(window_size.width, window_size.height, Arc::clone(&window)); Pixels::new(WIDTH, HEIGHT, surface_texture)? }; let mut world = World::new(); diff --git a/examples/minimal-web/Cargo.toml b/examples/minimal-web/Cargo.toml index 4e20235c..aab615ce 100644 --- a/examples/minimal-web/Cargo.toml +++ b/examples/minimal-web/Cargo.toml @@ -13,8 +13,8 @@ default = ["optimize"] error-iter = "0.4" log = "0.4" pixels = { path = "../.." } -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1" diff --git a/examples/minimal-web/src/main.rs b/examples/minimal-web/src/main.rs index cb459566..38de8d2a 100644 --- a/examples/minimal-web/src/main.rs +++ b/examples/minimal-web/src/main.rs @@ -6,8 +6,9 @@ use log::error; use pixels::{Pixels, SurfaceTexture}; use std::rc::Rc; use winit::dpi::LogicalSize; -use winit::event::{Event, VirtualKeyCode}; -use winit::event_loop::{ControlFlow, EventLoop}; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; use winit::window::WindowBuilder; use winit_input_helper::WinitInputHelper; @@ -41,7 +42,7 @@ fn main() { } async fn run() { - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); WindowBuilder::new() @@ -108,13 +109,17 @@ async fn run() { }; let mut world = World::new(); - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // Draw the current frame - if let Event::RedrawRequested(_) = event { + if let Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } = event + { world.draw(pixels.frame_mut()); if let Err(err) = pixels.render() { log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -122,8 +127,8 @@ async fn run() { // Handle input events if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } @@ -131,7 +136,7 @@ async fn run() { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -141,6 +146,7 @@ async fn run() { window.request_redraw(); } }); + res.unwrap(); } fn log_error(method_name: &str, err: E) { diff --git a/examples/minimal-winit-android/Cargo.toml b/examples/minimal-winit-android/Cargo.toml index 87396415..d50e17d1 100644 --- a/examples/minimal-winit-android/Cargo.toml +++ b/examples/minimal-winit-android/Cargo.toml @@ -10,7 +10,7 @@ publish = false [dependencies] log = "0.4.19" pixels = { path = "../.." } -winit = { version = "0.28.6", features = ["android-native-activity"] } +winit = { version = "0.29", features = ["android-native-activity"] } [target.'cfg(not(target_os = "android"))'.dependencies] env_logger = "0.10.0" diff --git a/examples/minimal-winit-android/src/lib.rs b/examples/minimal-winit-android/src/lib.rs index 8284928e..6900841f 100644 --- a/examples/minimal-winit-android/src/lib.rs +++ b/examples/minimal-winit-android/src/lib.rs @@ -2,8 +2,9 @@ use winit::platform::android::activity::AndroidApp; use pixels::{Pixels, SurfaceTexture}; -use winit::event::Event; -use winit::event_loop::{ControlFlow, EventLoop, EventLoopBuilder}; +use std::sync::Arc; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::{ControlFlow, EventLoop}; use winit::window::Window; const WIDTH: u32 = 320; @@ -18,44 +19,53 @@ struct World { velocity_y: i16, } +struct Display<'win> { + window: Arc, + pixels: Pixels<'win>, +} + fn _main(event_loop: EventLoop<()>) { - let mut window: Option = None; - let mut pixels: Option = None; + let mut display: Option = None; let mut world = World::new(); - event_loop.run(move |event, event_loop, control_flow| { - *control_flow = ControlFlow::Wait; + let res = event_loop.run(|event, elwt| { + elwt.set_control_flow(ControlFlow::Wait); match event { Event::Resumed => { - let _window = Window::new(event_loop).unwrap(); - let _pixels = { - let window_size = _window.inner_size(); - let surface_texture = - SurfaceTexture::new(window_size.width, window_size.height, &_window); + let window = Arc::new(Window::new(elwt).unwrap()); + let pixels = { + let window_size = window.inner_size(); + let surface_texture = SurfaceTexture::new( + window_size.width, + window_size.height, + Arc::clone(&window), + ); Pixels::new(WIDTH, HEIGHT, surface_texture).unwrap() }; - _window.request_redraw(); - window = Some(_window); - pixels = Some(_pixels); + window.request_redraw(); + display = Some(Display { window, pixels }); } Event::Suspended => { - pixels = None; - window = None; + display = None; } - Event::RedrawRequested(_) => { - if let (Some(pixels), Some(window)) = (&mut pixels, &window) { - world.draw(pixels.frame_mut()); - pixels.render().unwrap(); - window.request_redraw(); + Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } => { + if let Some(display) = &mut display { + world.draw(display.pixels.frame_mut()); + display.pixels.render().unwrap(); + display.window.request_redraw(); } } _ => {} } - if window.is_some() { + if display.is_some() { world.update(); } }); + res.unwrap(); } impl World { @@ -124,7 +134,7 @@ fn main() { .filter_level(log::LevelFilter::Info) // Default Log Level .parse_default_env() .init(); - let event_loop = EventLoopBuilder::new().build(); + let event_loop = EventLoop::new().unwrap(); log::info!("Hello from desktop!"); _main(event_loop); } diff --git a/examples/minimal-winit/Cargo.toml b/examples/minimal-winit/Cargo.toml index 8aa5c1c9..608855da 100644 --- a/examples/minimal-winit/Cargo.toml +++ b/examples/minimal-winit/Cargo.toml @@ -14,5 +14,5 @@ env_logger = "0.10" error-iter = "0.4" log = "0.4" pixels = { path = "../.." } -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/minimal-winit/src/main.rs b/examples/minimal-winit/src/main.rs index 18549ef2..ac3d618c 100644 --- a/examples/minimal-winit/src/main.rs +++ b/examples/minimal-winit/src/main.rs @@ -5,8 +5,9 @@ use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; use winit::dpi::LogicalSize; -use winit::event::{Event, VirtualKeyCode}; -use winit::event_loop::{ControlFlow, EventLoop}; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; use winit::window::WindowBuilder; use winit_input_helper::WinitInputHelper; @@ -24,7 +25,7 @@ struct World { fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); @@ -43,13 +44,17 @@ fn main() -> Result<(), Error> { }; let mut world = World::new(); - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // Draw the current frame - if let Event::RedrawRequested(_) = event { + if let Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } = event + { world.draw(pixels.frame_mut()); if let Err(err) = pixels.render() { log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -57,8 +62,8 @@ fn main() -> Result<(), Error> { // Handle input events if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } @@ -66,7 +71,7 @@ fn main() -> Result<(), Error> { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -76,6 +81,7 @@ fn main() -> Result<(), Error> { window.request_redraw(); } }); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/examples/raqote-winit/Cargo.toml b/examples/raqote-winit/Cargo.toml index 8d872b0a..c55bbdd5 100644 --- a/examples/raqote-winit/Cargo.toml +++ b/examples/raqote-winit/Cargo.toml @@ -16,5 +16,5 @@ euclid = "0.22" log = "0.4" pixels = { path = "../.." } raqote = { version = "0.8", default-features = false } -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/raqote-winit/src/main.rs b/examples/raqote-winit/src/main.rs index f854e42e..5661bfdc 100644 --- a/examples/raqote-winit/src/main.rs +++ b/examples/raqote-winit/src/main.rs @@ -7,8 +7,9 @@ use log::error; use pixels::{Error, Pixels, SurfaceTexture}; use std::time::Instant; use winit::dpi::LogicalSize; -use winit::event::{Event, VirtualKeyCode}; -use winit::event_loop::{ControlFlow, EventLoop}; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; use winit::window::WindowBuilder; use winit_input_helper::WinitInputHelper; @@ -19,7 +20,7 @@ const HEIGHT: u32 = 400; fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); @@ -43,9 +44,13 @@ fn main() -> Result<(), Error> { let mut now = Instant::now(); - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // Draw the current frame - if let Event::RedrawRequested(_) = event { + if let Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } = event + { for (dst, &src) in pixels .frame_mut() .chunks_exact_mut(4) @@ -59,7 +64,7 @@ fn main() -> Result<(), Error> { if let Err(err) = pixels.render() { log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -67,8 +72,8 @@ fn main() -> Result<(), Error> { // Handle input events if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } @@ -76,7 +81,7 @@ fn main() -> Result<(), Error> { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -88,6 +93,7 @@ fn main() -> Result<(), Error> { now = Instant::now(); } }); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/examples/tiny-skia-winit/Cargo.toml b/examples/tiny-skia-winit/Cargo.toml index 06c17f1d..0bab21f0 100644 --- a/examples/tiny-skia-winit/Cargo.toml +++ b/examples/tiny-skia-winit/Cargo.toml @@ -15,5 +15,5 @@ error-iter = "0.4" log = "0.4" pixels = { path = "../.." } tiny-skia = "0.11" -winit = "0.28" -winit_input_helper = "0.14" +winit = "0.29" +winit_input_helper = "0.15" diff --git a/examples/tiny-skia-winit/src/main.rs b/examples/tiny-skia-winit/src/main.rs index 004fcf9a..62cf9ca3 100644 --- a/examples/tiny-skia-winit/src/main.rs +++ b/examples/tiny-skia-winit/src/main.rs @@ -7,8 +7,9 @@ use pixels::{Error, Pixels, SurfaceTexture}; use std::time::Instant; use tiny_skia::Pixmap; use winit::dpi::LogicalSize; -use winit::event::{Event, VirtualKeyCode}; -use winit::event_loop::{ControlFlow, EventLoop}; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; use winit::window::WindowBuilder; use winit_input_helper::WinitInputHelper; @@ -19,7 +20,7 @@ const HEIGHT: u32 = 500; fn main() -> Result<(), Error> { env_logger::init(); - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); @@ -41,13 +42,17 @@ fn main() -> Result<(), Error> { let mut drawing = Pixmap::new(WIDTH, HEIGHT).unwrap(); let now = Instant::now(); - event_loop.run(move |event, _, control_flow| { + let res = event_loop.run(|event, elwt| { // Draw the current frame - if let Event::RedrawRequested(_) = event { + if let Event::WindowEvent { + event: WindowEvent::RedrawRequested, + .. + } = event + { pixels.frame_mut().copy_from_slice(drawing.data()); if let Err(err) = pixels.render() { log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -55,8 +60,8 @@ fn main() -> Result<(), Error> { // Handle input events if input.update(&event) { // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.close_requested() { - *control_flow = ControlFlow::Exit; + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); return; } @@ -64,7 +69,7 @@ fn main() -> Result<(), Error> { if let Some(size) = input.window_resized() { if let Err(err) = pixels.resize_surface(size.width, size.height) { log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; + elwt.exit(); return; } } @@ -74,6 +79,7 @@ fn main() -> Result<(), Error> { window.request_redraw(); } }); + res.map_err(|e| Error::UserDefined(Box::new(e))) } fn log_error(method_name: &str, err: E) { diff --git a/internals/pixels-mocks/Cargo.toml b/internals/pixels-mocks/Cargo.toml index 208c7fe3..db0c5252 100644 --- a/internals/pixels-mocks/Cargo.toml +++ b/internals/pixels-mocks/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" publish = false [dependencies] -raw-window-handle = "0.5" +raw-window-handle = "0.6" diff --git a/internals/pixels-mocks/src/lib.rs b/internals/pixels-mocks/src/lib.rs index 6c17f12c..169893ac 100644 --- a/internals/pixels-mocks/src/lib.rs +++ b/internals/pixels-mocks/src/lib.rs @@ -1,57 +1,19 @@ #![deny(clippy::all)] -pub struct Rwh; +pub struct Window; -unsafe impl raw_window_handle::HasRawWindowHandle for Rwh { - fn raw_window_handle(&self) -> raw_window_handle::RawWindowHandle { - #[cfg(target_os = "macos")] - return raw_window_handle::RawWindowHandle::AppKit( - raw_window_handle::AppKitWindowHandle::empty(), - ); - #[cfg(any( - target_os = "linux", - target_os = "dragonfly", - target_os = "freebsd", - target_os = "netbsd", - target_os = "openbsd", - ))] - return raw_window_handle::RawWindowHandle::Wayland( - raw_window_handle::WaylandWindowHandle::empty(), - ); - #[cfg(target_os = "windows")] - return raw_window_handle::RawWindowHandle::Win32( - raw_window_handle::Win32WindowHandle::empty(), - ); - #[cfg(target_os = "ios")] - return raw_window_handle::RawWindowHandle::UiKit( - raw_window_handle::UiKitWindowHandle::empty(), - ); +impl raw_window_handle::HasWindowHandle for Window { + fn window_handle( + &self, + ) -> Result, raw_window_handle::HandleError> { + unimplemented!() } } -unsafe impl raw_window_handle::HasRawDisplayHandle for Rwh { - fn raw_display_handle(&self) -> raw_window_handle::RawDisplayHandle { - #[cfg(target_os = "macos")] - return raw_window_handle::RawDisplayHandle::AppKit( - raw_window_handle::AppKitDisplayHandle::empty(), - ); - #[cfg(any( - target_os = "linux", - target_os = "dragonfly", - target_os = "freebsd", - target_os = "netbsd", - target_os = "openbsd", - ))] - return raw_window_handle::RawDisplayHandle::Wayland( - raw_window_handle::WaylandDisplayHandle::empty(), - ); - #[cfg(target_os = "windows")] - return raw_window_handle::RawDisplayHandle::Windows( - raw_window_handle::WindowsDisplayHandle::empty(), - ); - #[cfg(target_os = "ios")] - return raw_window_handle::RawDisplayHandle::UiKit( - raw_window_handle::UiKitDisplayHandle::empty(), - ); +impl raw_window_handle::HasDisplayHandle for Window { + fn display_handle( + &self, + ) -> Result, raw_window_handle::HandleError> { + unimplemented!() } } diff --git a/src/builder.rs b/src/builder.rs index 2f1018d5..79779992 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -1,17 +1,16 @@ use crate::renderers::{ScalingMatrix, ScalingRenderer}; use crate::{Error, Pixels, PixelsContext, SurfaceSize, SurfaceTexture, TextureError}; -use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle}; /// A builder to help create customized pixel buffers. -pub struct PixelsBuilder<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> { - request_adapter_options: Option>, +pub struct PixelsBuilder<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> { + request_adapter_options: Option>, device_descriptor: Option>, backend: wgpu::Backends, width: u32, height: u32, _pixel_aspect_ratio: f64, present_mode: wgpu::PresentMode, - surface_texture: SurfaceTexture<'win, W>, + surface_texture: SurfaceTexture, texture_format: wgpu::TextureFormat, render_texture_format: Option, surface_texture_format: Option, @@ -19,9 +18,7 @@ pub struct PixelsBuilder<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplay blend_state: wgpu::BlendState, } -impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> - PixelsBuilder<'req, 'dev, 'win, W> -{ +impl<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> PixelsBuilder<'req, 'dev, 'win, W> { /// Create a builder that can be finalized into a [`Pixels`] pixel buffer. /// /// # Examples @@ -30,7 +27,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// use pixels::wgpu::{PowerPreference, RequestAdapterOptions}; /// /// # use pixels::PixelsBuilder; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(256, 240, &window); /// let mut pixels = PixelsBuilder::new(256, 240, surface_texture) /// .request_adapter_options(RequestAdapterOptions { @@ -46,7 +43,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// # Panics /// /// Panics when `width` or `height` are 0. - pub fn new(width: u32, height: u32, surface_texture: SurfaceTexture<'win, W>) -> Self { + pub fn new(width: u32, height: u32, surface_texture: SurfaceTexture) -> Self { assert!(width > 0); assert!(height > 0); @@ -70,7 +67,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// Add options for requesting a [`wgpu::Adapter`]. pub fn request_adapter_options( mut self, - request_adapter_options: wgpu::RequestAdapterOptions<'req>, + request_adapter_options: wgpu::RequestAdapterOptions<'req, 'win>, ) -> Self { self.request_adapter_options = Some(request_adapter_options); self @@ -193,7 +190,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// use pixels::wgpu::BlendState; /// /// # use pixels::PixelsBuilder; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// // Replace the old pixels with the new without mixing. /// let mut pixels = PixelsBuilder::new(320, 240, surface_texture) @@ -217,7 +214,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// use pixels::wgpu::Color; /// /// # use pixels::PixelsBuilder; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// // Set clear color to bright magenta. /// let mut pixels = PixelsBuilder::new(320, 240, surface_texture) @@ -243,14 +240,14 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// # Errors /// /// Returns an error when a [`wgpu::Adapter`] cannot be found. - async fn build_impl(self) -> Result { + async fn build_impl(self) -> Result, Error> { let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { backends: self.backend, ..Default::default() }); // TODO: Use `options.pixel_aspect_ratio` to stretch the scaled texture - let surface = unsafe { instance.create_surface(self.surface_texture.window) }?; + let surface = instance.create_surface(self.surface_texture.window)?; let compatible_surface = Some(&surface); let request_adapter_options = &self.request_adapter_options; let adapter = match wgpu::util::initialize_adapter_from_env(&instance, compatible_surface) { @@ -279,7 +276,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> let device_descriptor = self .device_descriptor .unwrap_or_else(|| wgpu::DeviceDescriptor { - limits: adapter.limits(), + required_limits: adapter.limits(), ..wgpu::DeviceDescriptor::default() }); @@ -359,7 +356,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// /// Returns an error when a [`wgpu::Adapter`] or [`wgpu::Device`] cannot be found. #[cfg(not(target_arch = "wasm32"))] - pub fn build(self) -> Result { + pub fn build(self) -> Result, Error> { pollster::block_on(self.build_impl()) } @@ -372,7 +369,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// /// # async fn test() -> Result<(), pixels::Error> { /// # use pixels::PixelsBuilder; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(256, 240, &window); /// let mut pixels = PixelsBuilder::new(256, 240, surface_texture) /// .enable_vsync(false) @@ -385,7 +382,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> /// # Errors /// /// Returns an error when a [`wgpu::Adapter`] or [`wgpu::Device`] cannot be found. - pub async fn build_async(self) -> Result { + pub async fn build_async(self) -> Result, Error> { self.build_impl().await } } @@ -534,6 +531,7 @@ const fn texture_format_size(texture_format: wgpu::TextureFormat) -> f32 { | Rgba8Sint | Bgra8Unorm | Bgra8UnormSrgb + | Rgb10a2Uint | Rgb10a2Unorm | Rg11b10Float | Depth32Float @@ -625,5 +623,11 @@ const fn texture_format_size(texture_format: wgpu::TextureFormat) -> f32 { // 12x12 blocks, 16 bytes per block Astc { block: B12x12, channel: _ } => 9.0, // 12.0 * 12.0 / 16.0 + + // 8-bit two-plane 4:2:0 YUV + // The first plane consists of 8-bit G components. + // The second plane consists of 16-bit BR components. + // The resolution of the second plane is halved both vertically and horizontally. + NV12 => 1.5, // (8.0 + 16.0 / 2.0 / 2.0) / 8.0 } } diff --git a/src/lib.rs b/src/lib.rs index 538ae9e7..e45dff28 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,7 +34,6 @@ pub use crate::builder::{check_texture_size, PixelsBuilder}; pub use crate::renderers::ScalingRenderer; pub use raw_window_handle; -use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle}; use thiserror::Error; pub use wgpu; @@ -43,8 +42,8 @@ mod renderers; /// A logical texture for a window surface. #[derive(Debug)] -pub struct SurfaceTexture<'win, W: HasRawWindowHandle + HasRawDisplayHandle> { - window: &'win W, +pub struct SurfaceTexture { + window: W, size: SurfaceSize, } @@ -60,14 +59,14 @@ struct SurfaceSize { /// A reference to this struct is given to the `render_function` closure when using /// [`Pixels::render_with`]. #[derive(Debug)] -pub struct PixelsContext { +pub struct PixelsContext<'win> { /// The `Device` allows creating GPU resources. pub device: wgpu::Device, /// The `Queue` provides access to the GPU command queue. pub queue: wgpu::Queue, - surface: wgpu::Surface, + surface: wgpu::Surface<'win>, /// This is the texture that your raw data is copied to by [`Pixels::render`] or /// [`Pixels::render_with`]. @@ -91,8 +90,8 @@ pub struct PixelsContext { /// /// See [`PixelsBuilder`] for building a customized pixel buffer. #[derive(Debug)] -pub struct Pixels { - context: PixelsContext, +pub struct Pixels<'win> { + context: PixelsContext<'win>, surface_size: SurfaceSize, present_mode: wgpu::PresentMode, render_texture_format: wgpu::TextureFormat, @@ -147,7 +146,7 @@ pub enum TextureError { TextureHeight(u32), } -impl<'win, W: HasRawWindowHandle + HasRawDisplayHandle> SurfaceTexture<'win, W> { +impl SurfaceTexture { /// Create a logical texture for a window surface. /// /// It is recommended (but not required) that the `width` and `height` are equivalent to the @@ -160,7 +159,7 @@ impl<'win, W: HasRawWindowHandle + HasRawDisplayHandle> SurfaceTexture<'win, W> /// use winit::event_loop::EventLoop; /// use winit::window::Window; /// - /// let event_loop = EventLoop::new(); + /// let event_loop = EventLoop::new().unwrap(); /// let window = Window::new(&event_loop).unwrap(); /// let size = window.inner_size(); /// @@ -171,7 +170,7 @@ impl<'win, W: HasRawWindowHandle + HasRawDisplayHandle> SurfaceTexture<'win, W> /// # Panics /// /// Panics when `width` or `height` are 0. - pub fn new(width: u32, height: u32, window: &'win W) -> Self { + pub fn new(width: u32, height: u32, window: W) -> Self { assert!(width > 0); assert!(height > 0); @@ -181,7 +180,7 @@ impl<'win, W: HasRawWindowHandle + HasRawDisplayHandle> SurfaceTexture<'win, W> } } -impl Pixels { +impl<'win> Pixels<'win> { /// Create a pixel buffer instance with default options. /// /// Any ratio differences between the pixel buffer texture size and surface texture size will @@ -197,11 +196,27 @@ impl Pixels { /// /// # Examples /// + /// Pass a borrowed window object to receive a `Pixels` object tied to the corresponding + /// lifetime: + /// /// ```no_run - /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; - /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); - /// let mut pixels = Pixels::new(320, 240, surface_texture)?; + /// # use pixels::{Pixels, SurfaceTexture}; + /// # let window = pixels_mocks::Window; + /// let surface_texture = SurfaceTexture::new(320, 240, &window); + /// let mut pixels: Pixels<'_> = Pixels::new(320, 240, surface_texture)?; + /// # Ok::<(), pixels::Error>(()) + /// ``` + /// + /// Pass an owned window object to receive a static `Pixels` object, not tied to any lifetime. + /// This includes objects wrapped in smart pointers like `Arc`, `Rc`, or `Box`: + /// + /// ```no_run + /// # use std::sync::Arc; + /// # use pixels::{Pixels, SurfaceTexture}; + /// # let window = pixels_mocks::Window; + /// let arc = Arc::new(window); + /// let surface_texture = SurfaceTexture::new(320, 240, arc.clone()); + /// let mut pixels: Pixels<'static> = Pixels::new(320, 240, surface_texture)?; /// # Ok::<(), pixels::Error>(()) /// ``` /// @@ -213,10 +228,10 @@ impl Pixels { /// /// Panics when `width` or `height` are 0. #[cfg(not(target_arch = "wasm32"))] - pub fn new( + pub fn new( width: u32, height: u32, - surface_texture: SurfaceTexture<'_, W>, + surface_texture: SurfaceTexture, ) -> Result { PixelsBuilder::new(width, height, surface_texture).build() } @@ -230,7 +245,7 @@ impl Pixels { /// ```no_run /// # async fn test() -> Result<(), pixels::Error> { /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new_async(320, 240, surface_texture).await?; /// # Ok::<(), pixels::Error>(()) @@ -244,10 +259,10 @@ impl Pixels { /// # Panics /// /// Panics when `width` or `height` are 0. - pub async fn new_async( + pub async fn new_async( width: u32, height: u32, - surface_texture: SurfaceTexture<'_, W>, + surface_texture: SurfaceTexture, ) -> Result { PixelsBuilder::new(width, height, surface_texture) .build_async() @@ -263,7 +278,7 @@ impl Pixels { /// use pixels::wgpu::Color; /// /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new(320, 240, surface_texture)?; /// @@ -282,7 +297,7 @@ impl Pixels { /// /// ```no_run /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new(320, 240, surface_texture)?; /// let adapter = pixels.adapter(); @@ -425,7 +440,7 @@ impl Pixels { /// /// ```no_run /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new(320, 240, surface_texture)?; /// @@ -470,7 +485,7 @@ impl Pixels { /// /// ```no_run /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new(320, 240, surface_texture)?; /// @@ -556,6 +571,7 @@ impl Pixels { width: self.surface_size.width, height: self.surface_size.height, present_mode: self.present_mode, + desired_maximum_frame_latency: 2, alpha_mode: self.alpha_mode, view_formats: vec![], }, @@ -590,7 +606,7 @@ impl Pixels { /// use winit::dpi::PhysicalPosition; /// /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new(320, 240, surface_texture)?; /// @@ -645,7 +661,7 @@ impl Pixels { /// /// ```no_run /// # use pixels::Pixels; - /// # let window = pixels_mocks::Rwh; + /// # let window = pixels_mocks::Window; /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); /// let mut pixels = Pixels::new(320, 240, surface_texture)?; /// diff --git a/src/renderers.rs b/src/renderers.rs index 7d3fce7f..00df39a1 100644 --- a/src/renderers.rs +++ b/src/renderers.rs @@ -184,10 +184,12 @@ impl ScalingRenderer { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Clear(self.clear_color), - store: true, + store: wgpu::StoreOp::Store, }, })], depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, }); rpass.set_pipeline(&self.render_pipeline); rpass.set_bind_group(0, &self.bind_group, &[]);