From d786f48095fba9500c9f57d422de642a16f857f0 Mon Sep 17 00:00:00 2001 From: clearlysid Date: Tue, 8 Oct 2024 22:56:23 +0530 Subject: [PATCH 01/19] feat: upgrade wgpu to 22.0 --- Cargo.lock | 255 ++++++++++++++++++++++++++++++++++++++++++++--- Cargo.toml | 2 +- src/renderers.rs | 6 ++ 3 files changed, 249 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3c759a4..18d986f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -153,6 +153,15 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading 0.8.8", +] + [[package]] name = "atk" version = "0.18.2" @@ -215,7 +224,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" +dependencies = [ + "bit-vec 0.7.0", ] [[package]] @@ -224,6 +242,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" + [[package]] name = "bitflags" version = "1.3.2" @@ -855,6 +879,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "d3d12" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdbd1f579714e3c809ebd822c81ef148b1ceaeb3d535352afc73fd0c4c6a0017" +dependencies = [ + "bitflags 2.9.2", + "libloading 0.8.8", + "winapi", +] + [[package]] name = "darling" version = "0.13.4" @@ -1199,6 +1234,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -1638,6 +1679,15 @@ dependencies = [ "gl_generator", ] +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + [[package]] name = "gobject-sys" version = "0.18.0" @@ -1694,6 +1744,19 @@ dependencies = [ "windows 0.52.0", ] +[[package]] +name = "gpu-allocator" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd4240fc91d3433d5e5b0fc5b67672d771850dc19bbee03c1381e19322803d7" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + [[package]] name = "gpu-descriptor" version = "0.2.4" @@ -1701,10 +1764,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.9.2", - "gpu-descriptor-types", + "gpu-descriptor-types 0.1.2", "hashbrown 0.14.5", ] +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.9.2", + "gpu-descriptor-types 0.2.0", + "hashbrown 0.15.5", +] + [[package]] name = "gpu-descriptor-types" version = "0.1.2" @@ -1714,6 +1788,15 @@ dependencies = [ "bitflags 2.9.2", ] +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.9.2", +] + [[package]] name = "gtk" version = "0.18.2" @@ -1788,6 +1871,9 @@ name = "hashbrown" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] [[package]] name = "hassle-rs" @@ -2457,6 +2543,21 @@ dependencies = [ "paste", ] +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.9.2", + "block", + "core-graphics-types 0.1.3", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + [[package]] name = "minimal-egui" version = "0.1.0" @@ -2590,7 +2691,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1ceaaa4eedaece7e4ec08c55c640ba03dbb73fb812a6570a59bcf1930d0f70e" dependencies = [ - "bit-set", + "bit-set 0.5.3", "bitflags 2.9.2", "codespan-reporting", "hexf-parse", @@ -2610,7 +2711,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ - "bit-set", + "bit-set 0.5.3", "bitflags 2.9.2", "codespan-reporting", "hexf-parse", @@ -2624,6 +2725,27 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "naga" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" +dependencies = [ + "arrayvec 0.7.6", + "bit-set 0.6.0", + "bitflags 2.9.2", + "cfg_aliases 0.1.1", + "codespan-reporting", + "hexf-parse", + "indexmap 2.10.0", + "log", + "rustc-hash 1.1.0", + "spirv 0.3.0+sdk-1.3.268.0", + "termcolor", + "thiserror", + "unicode-xid", +] + [[package]] name = "ndk" version = "0.7.0" @@ -3105,6 +3227,7 @@ dependencies = [ "thiserror", "ultraviolet", "wgpu 0.19.4", + "wgpu 22.1.0", "winit 0.29.15", ] @@ -4614,6 +4737,31 @@ dependencies = [ "wgpu-types 0.19.2", ] +[[package]] +name = "wgpu" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" +dependencies = [ + "arrayvec 0.7.6", + "cfg_aliases 0.1.1", + "document-features", + "js-sys", + "log", + "naga 22.1.0", + "parking_lot", + "profiling", + "raw-window-handle 0.6.2", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 22.1.0", + "wgpu-hal 22.0.0", + "wgpu-types 22.0.0", +] + [[package]] name = "wgpu-core" version = "0.17.1" @@ -4621,7 +4769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f8a44dd301a30ceeed3c27d8c0090433d3da04d7b2a4042738095a424d12ae7" dependencies = [ "arrayvec 0.7.6", - "bit-vec", + "bit-vec 0.6.3", "bitflags 2.9.2", "codespan-reporting", "log", @@ -4644,7 +4792,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ "arrayvec 0.7.6", - "bit-vec", + "bit-vec 0.6.3", "bitflags 2.9.2", "cfg_aliases 0.1.1", "codespan-reporting", @@ -4663,6 +4811,31 @@ dependencies = [ "wgpu-types 0.19.2", ] +[[package]] +name = "wgpu-core" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" +dependencies = [ + "arrayvec 0.7.6", + "bit-vec 0.7.0", + "bitflags 2.9.2", + "cfg_aliases 0.1.1", + "document-features", + "indexmap 2.10.0", + "log", + "naga 22.1.0", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle 0.6.2", + "rustc-hash 1.1.0", + "smallvec", + "thiserror", + "wgpu-hal 22.0.0", + "wgpu-types 22.0.0", +] + [[package]] name = "wgpu-hal" version = "0.17.2" @@ -4671,8 +4844,8 @@ checksum = "9a80bf0e3c77399bb52850cb0830af9bad073d5cfcb9dd8253bef8125c42db17" dependencies = [ "android_system_properties", "arrayvec 0.7.6", - "ash", - "bit-set", + "ash 0.37.3+1.3.251", + "bit-set 0.5.3", "bitflags 2.9.2", "block", "core-graphics-types 0.1.3", @@ -4680,7 +4853,7 @@ dependencies = [ "glow 0.12.3", "gpu-alloc", "gpu-allocator 0.22.0", - "gpu-descriptor", + "gpu-descriptor 0.2.4", "hassle-rs 0.10.0", "js-sys", "khronos-egl 4.1.0", @@ -4712,18 +4885,18 @@ checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" dependencies = [ "android_system_properties", "arrayvec 0.7.6", - "ash", - "bit-set", + "ash 0.37.3+1.3.251", + "bit-set 0.5.3", "bitflags 2.9.2", "block", "cfg_aliases 0.1.1", "core-graphics-types 0.1.3", "d3d12 0.19.0", "glow 0.13.1", - "glutin_wgl_sys", + "glutin_wgl_sys 0.5.0", "gpu-alloc", "gpu-allocator 0.25.0", - "gpu-descriptor", + "gpu-descriptor 0.2.4", "hassle-rs 0.11.0", "js-sys", "khronos-egl 6.0.0", @@ -4749,6 +4922,51 @@ dependencies = [ "winapi", ] +[[package]] +name = "wgpu-hal" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" +dependencies = [ + "android_system_properties", + "arrayvec 0.7.6", + "ash 0.38.0+1.3.281", + "bit-set 0.6.0", + "bitflags 2.9.2", + "block", + "cfg_aliases 0.1.1", + "core-graphics-types 0.1.3", + "d3d12 22.0.0", + "glow 0.13.1", + "glutin_wgl_sys 0.6.1", + "gpu-alloc", + "gpu-allocator 0.26.0", + "gpu-descriptor 0.3.2", + "hassle-rs 0.11.0", + "js-sys", + "khronos-egl 6.0.0", + "libc", + "libloading 0.8.8", + "log", + "metal 0.29.0", + "naga 22.1.0", + "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 1.1.0", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 22.0.0", + "winapi", +] + [[package]] name = "wgpu-types" version = "0.17.0" @@ -4771,6 +4989,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wgpu-types" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9d91f0e2c4b51434dfa6db77846f2793149d8e73f800fa2e41f52b8eac3c5d" +dependencies = [ + "bitflags 2.9.2", + "js-sys", + "web-sys", +] + [[package]] name = "wide" version = "0.7.33" diff --git a/Cargo.toml b/Cargo.toml index 4ca9190..5801975 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ bytemuck = "1.12" raw-window-handle = "0.6" thiserror = "1.0" ultraviolet = "0.9" -wgpu = "0.19" +wgpu = "22.0" [target.'cfg(target_arch = "wasm32")'.dependencies] wgpu = { version = "0.19", features = ["webgl"] } diff --git a/src/renderers.rs b/src/renderers.rs index 2ff6f26..658a146 100644 --- a/src/renderers.rs +++ b/src/renderers.rs @@ -179,12 +179,14 @@ impl ScalingRenderer { push_constant_ranges: &[], }); let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + cache: None, label: Some("pixels_scaling_renderer_pipeline"), layout: Some(&pipeline_layout), vertex: wgpu::VertexState { module: &module, entry_point: "vs_main", buffers: std::slice::from_ref(&vertex_buffer_layout), + compilation_options: wgpu::PipelineCompilationOptions::default(), }, primitive: wgpu::PrimitiveState::default(), depth_stencil: None, @@ -192,6 +194,7 @@ impl ScalingRenderer { fragment: Some(wgpu::FragmentState { module: &module, entry_point: "fs_main", + compilation_options: wgpu::PipelineCompilationOptions::default(), targets: &[Some(wgpu::ColorTargetState { format: render_texture_format, blend: Some(blend_state), @@ -207,6 +210,7 @@ impl ScalingRenderer { module: &module_fill, entry_point: "vs_main", buffers: &[vertex_buffer_layout], + compilation_options: wgpu::PipelineCompilationOptions::default(), }, primitive: wgpu::PrimitiveState::default(), depth_stencil: None, @@ -214,6 +218,7 @@ impl ScalingRenderer { fragment: Some(wgpu::FragmentState { module: &module_fill, entry_point: "fs_main", + compilation_options: wgpu::PipelineCompilationOptions::default(), targets: &[Some(wgpu::ColorTargetState { format: render_texture_format, blend: Some(blend_state), @@ -221,6 +226,7 @@ impl ScalingRenderer { })], }), multiview: None, + cache: None, }); // Create clipping rectangle From 9084290935f9548c2427d8f3de1de43427af9ba5 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 18 Jan 2026 23:23:02 +0000 Subject: [PATCH 02/19] Upgrade to wgpu 27 Signed-off-by: Nico Burns --- Cargo.lock | 255 ++------------------------------ Cargo.toml | 4 +- examples/imgui-winit/Cargo.toml | 2 +- src/builder.rs | 22 +-- src/lib.rs | 4 +- src/renderers.rs | 11 +- 6 files changed, 36 insertions(+), 262 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18d986f..3c759a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -153,15 +153,6 @@ dependencies = [ "libloading 0.7.4", ] -[[package]] -name = "ash" -version = "0.38.0+1.3.281" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading 0.8.8", -] - [[package]] name = "atk" version = "0.18.2" @@ -224,16 +215,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec 0.6.3", -] - -[[package]] -name = "bit-set" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" -dependencies = [ - "bit-vec 0.7.0", + "bit-vec", ] [[package]] @@ -242,12 +224,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bit-vec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" - [[package]] name = "bitflags" version = "1.3.2" @@ -879,17 +855,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "d3d12" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbd1f579714e3c809ebd822c81ef148b1ceaeb3d535352afc73fd0c4c6a0017" -dependencies = [ - "bitflags 2.9.2", - "libloading 0.8.8", - "winapi", -] - [[package]] name = "darling" version = "0.13.4" @@ -1234,12 +1199,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -1679,15 +1638,6 @@ dependencies = [ "gl_generator", ] -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - [[package]] name = "gobject-sys" version = "0.18.0" @@ -1744,19 +1694,6 @@ dependencies = [ "windows 0.52.0", ] -[[package]] -name = "gpu-allocator" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd4240fc91d3433d5e5b0fc5b67672d771850dc19bbee03c1381e19322803d7" -dependencies = [ - "log", - "presser", - "thiserror", - "winapi", - "windows 0.52.0", -] - [[package]] name = "gpu-descriptor" version = "0.2.4" @@ -1764,21 +1701,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.9.2", - "gpu-descriptor-types 0.1.2", + "gpu-descriptor-types", "hashbrown 0.14.5", ] -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.9.2", - "gpu-descriptor-types 0.2.0", - "hashbrown 0.15.5", -] - [[package]] name = "gpu-descriptor-types" version = "0.1.2" @@ -1788,15 +1714,6 @@ dependencies = [ "bitflags 2.9.2", ] -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.9.2", -] - [[package]] name = "gtk" version = "0.18.2" @@ -1871,9 +1788,6 @@ name = "hashbrown" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] [[package]] name = "hassle-rs" @@ -2543,21 +2457,6 @@ dependencies = [ "paste", ] -[[package]] -name = "metal" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" -dependencies = [ - "bitflags 2.9.2", - "block", - "core-graphics-types 0.1.3", - "foreign-types 0.5.0", - "log", - "objc", - "paste", -] - [[package]] name = "minimal-egui" version = "0.1.0" @@ -2691,7 +2590,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1ceaaa4eedaece7e4ec08c55c640ba03dbb73fb812a6570a59bcf1930d0f70e" dependencies = [ - "bit-set 0.5.3", + "bit-set", "bitflags 2.9.2", "codespan-reporting", "hexf-parse", @@ -2711,7 +2610,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ - "bit-set 0.5.3", + "bit-set", "bitflags 2.9.2", "codespan-reporting", "hexf-parse", @@ -2725,27 +2624,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "naga" -version = "22.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" -dependencies = [ - "arrayvec 0.7.6", - "bit-set 0.6.0", - "bitflags 2.9.2", - "cfg_aliases 0.1.1", - "codespan-reporting", - "hexf-parse", - "indexmap 2.10.0", - "log", - "rustc-hash 1.1.0", - "spirv 0.3.0+sdk-1.3.268.0", - "termcolor", - "thiserror", - "unicode-xid", -] - [[package]] name = "ndk" version = "0.7.0" @@ -3227,7 +3105,6 @@ dependencies = [ "thiserror", "ultraviolet", "wgpu 0.19.4", - "wgpu 22.1.0", "winit 0.29.15", ] @@ -4737,31 +4614,6 @@ dependencies = [ "wgpu-types 0.19.2", ] -[[package]] -name = "wgpu" -version = "22.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" -dependencies = [ - "arrayvec 0.7.6", - "cfg_aliases 0.1.1", - "document-features", - "js-sys", - "log", - "naga 22.1.0", - "parking_lot", - "profiling", - "raw-window-handle 0.6.2", - "smallvec", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core 22.1.0", - "wgpu-hal 22.0.0", - "wgpu-types 22.0.0", -] - [[package]] name = "wgpu-core" version = "0.17.1" @@ -4769,7 +4621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f8a44dd301a30ceeed3c27d8c0090433d3da04d7b2a4042738095a424d12ae7" dependencies = [ "arrayvec 0.7.6", - "bit-vec 0.6.3", + "bit-vec", "bitflags 2.9.2", "codespan-reporting", "log", @@ -4792,7 +4644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ "arrayvec 0.7.6", - "bit-vec 0.6.3", + "bit-vec", "bitflags 2.9.2", "cfg_aliases 0.1.1", "codespan-reporting", @@ -4811,31 +4663,6 @@ dependencies = [ "wgpu-types 0.19.2", ] -[[package]] -name = "wgpu-core" -version = "22.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" -dependencies = [ - "arrayvec 0.7.6", - "bit-vec 0.7.0", - "bitflags 2.9.2", - "cfg_aliases 0.1.1", - "document-features", - "indexmap 2.10.0", - "log", - "naga 22.1.0", - "once_cell", - "parking_lot", - "profiling", - "raw-window-handle 0.6.2", - "rustc-hash 1.1.0", - "smallvec", - "thiserror", - "wgpu-hal 22.0.0", - "wgpu-types 22.0.0", -] - [[package]] name = "wgpu-hal" version = "0.17.2" @@ -4844,8 +4671,8 @@ checksum = "9a80bf0e3c77399bb52850cb0830af9bad073d5cfcb9dd8253bef8125c42db17" dependencies = [ "android_system_properties", "arrayvec 0.7.6", - "ash 0.37.3+1.3.251", - "bit-set 0.5.3", + "ash", + "bit-set", "bitflags 2.9.2", "block", "core-graphics-types 0.1.3", @@ -4853,7 +4680,7 @@ dependencies = [ "glow 0.12.3", "gpu-alloc", "gpu-allocator 0.22.0", - "gpu-descriptor 0.2.4", + "gpu-descriptor", "hassle-rs 0.10.0", "js-sys", "khronos-egl 4.1.0", @@ -4885,18 +4712,18 @@ checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" dependencies = [ "android_system_properties", "arrayvec 0.7.6", - "ash 0.37.3+1.3.251", - "bit-set 0.5.3", + "ash", + "bit-set", "bitflags 2.9.2", "block", "cfg_aliases 0.1.1", "core-graphics-types 0.1.3", "d3d12 0.19.0", "glow 0.13.1", - "glutin_wgl_sys 0.5.0", + "glutin_wgl_sys", "gpu-alloc", "gpu-allocator 0.25.0", - "gpu-descriptor 0.2.4", + "gpu-descriptor", "hassle-rs 0.11.0", "js-sys", "khronos-egl 6.0.0", @@ -4922,51 +4749,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "wgpu-hal" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" -dependencies = [ - "android_system_properties", - "arrayvec 0.7.6", - "ash 0.38.0+1.3.281", - "bit-set 0.6.0", - "bitflags 2.9.2", - "block", - "cfg_aliases 0.1.1", - "core-graphics-types 0.1.3", - "d3d12 22.0.0", - "glow 0.13.1", - "glutin_wgl_sys 0.6.1", - "gpu-alloc", - "gpu-allocator 0.26.0", - "gpu-descriptor 0.3.2", - "hassle-rs 0.11.0", - "js-sys", - "khronos-egl 6.0.0", - "libc", - "libloading 0.8.8", - "log", - "metal 0.29.0", - "naga 22.1.0", - "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 1.1.0", - "smallvec", - "thiserror", - "wasm-bindgen", - "web-sys", - "wgpu-types 22.0.0", - "winapi", -] - [[package]] name = "wgpu-types" version = "0.17.0" @@ -4989,17 +4771,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wgpu-types" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9d91f0e2c4b51434dfa6db77846f2793149d8e73f800fa2e41f52b8eac3c5d" -dependencies = [ - "bitflags 2.9.2", - "js-sys", - "web-sys", -] - [[package]] name = "wide" version = "0.7.33" diff --git a/Cargo.toml b/Cargo.toml index 5801975..e22494b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,10 +24,10 @@ bytemuck = "1.12" raw-window-handle = "0.6" thiserror = "1.0" ultraviolet = "0.9" -wgpu = "22.0" +wgpu = "27.0" [target.'cfg(target_arch = "wasm32")'.dependencies] -wgpu = { version = "0.19", features = ["webgl"] } +wgpu = { version = "27.0", features = ["webgl"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] pollster = "0.3" diff --git a/examples/imgui-winit/Cargo.toml b/examples/imgui-winit/Cargo.toml index 629d228..62902d9 100644 --- a/examples/imgui-winit/Cargo.toml +++ b/examples/imgui-winit/Cargo.toml @@ -10,7 +10,7 @@ optimize = ["log/release_max_level_warn"] default = ["optimize"] [dependencies] -imgui = "0.11" +imgui = "0.12" imgui-wgpu = "0.24" imgui-winit-support = "0.11" diff --git a/src/builder.rs b/src/builder.rs index 998830b..8e7347f 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -50,7 +50,7 @@ impl<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> PixelsBuilder<'req, 'dev, ' Self { request_adapter_options: None, device_descriptor: None, - backend: wgpu::util::backend_bits_from_env().unwrap_or_else(wgpu::Backends::all), + backend: wgpu::Backends::from_env().unwrap_or_else(wgpu::Backends::all), width, height, _pixel_aspect_ratio: 1.0, @@ -246,7 +246,7 @@ impl<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> PixelsBuilder<'req, 'dev, ' /// /// Returns an error when a [`wgpu::Adapter`] cannot be found. async fn build_impl(self) -> Result, Error> { - let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { + let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { backends: self.backend, ..Default::default() }); @@ -256,15 +256,14 @@ impl<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> PixelsBuilder<'req, 'dev, ' 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) { - Some(adapter) => Some(adapter), - None => { + Ok(adapter) => Ok(adapter), + Err(_) => { instance .request_adapter(&request_adapter_options.as_ref().map_or_else( || wgpu::RequestAdapterOptions { compatible_surface, force_fallback_adapter: false, - power_preference: - wgpu::util::power_preference_from_env().unwrap_or_default(), + power_preference: wgpu::PowerPreference::from_env().unwrap_or_default(), }, |rao| wgpu::RequestAdapterOptions { compatible_surface: rao.compatible_surface.or(compatible_surface), @@ -276,7 +275,7 @@ impl<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> PixelsBuilder<'req, 'dev, ' } }; - let adapter = adapter.ok_or(Error::AdapterNotFound)?; + let adapter = adapter.map_err(|_| Error::AdapterNotFound)?; let device_descriptor = self .device_descriptor @@ -285,7 +284,7 @@ impl<'req, 'dev, 'win, W: wgpu::WindowHandle + 'win> PixelsBuilder<'req, 'dev, ' ..wgpu::DeviceDescriptor::default() }); - let (device, queue) = adapter.request_device(&device_descriptor, None).await?; + let (device, queue) = adapter.request_device(&device_descriptor).await?; let surface_capabilities = surface.get_capabilities(&adapter); let present_mode = if surface_capabilities @@ -551,13 +550,14 @@ const fn texture_format_size(texture_format: wgpu::TextureFormat) -> f32 { | Bgra8UnormSrgb | Rgb10a2Uint | Rgb10a2Unorm - | Rg11b10Float + | Rg11b10Ufloat | Depth32Float | Depth24Plus | Depth24PlusStencil8 => 4.0, // 32.0 / 8.0 // 64-bit formats, 8 bits per component - Rg32Uint + R64Uint + | Rg32Uint | Rg32Sint | Rg32Float | Rgba16Uint @@ -647,5 +647,7 @@ const fn texture_format_size(texture_format: wgpu::TextureFormat) -> f32 { // 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 + + P010 => 3.0 // Double NV12? } } diff --git a/src/lib.rs b/src/lib.rs index 8b3b9ae..65884d6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -566,14 +566,14 @@ impl<'win> Pixels<'win> { let bytes_per_row = (self.context.texture_extent.width as f32 * self.context.texture_format_size) as u32; self.context.queue.write_texture( - wgpu::ImageCopyTexture { + wgpu::TexelCopyTextureInfo { texture: &self.context.texture, mip_level: 0, origin: wgpu::Origin3d { x: 0, y: 0, z: 0 }, aspect: wgpu::TextureAspect::All, }, &self.pixels, - wgpu::ImageDataLayout { + wgpu::TexelCopyBufferLayout { offset: 0, bytes_per_row: Some(bytes_per_row), rows_per_image: Some(self.context.texture_extent.height), diff --git a/src/renderers.rs b/src/renderers.rs index 658a146..672e76e 100644 --- a/src/renderers.rs +++ b/src/renderers.rs @@ -184,7 +184,7 @@ impl ScalingRenderer { layout: Some(&pipeline_layout), vertex: wgpu::VertexState { module: &module, - entry_point: "vs_main", + entry_point: Some("vs_main"), buffers: std::slice::from_ref(&vertex_buffer_layout), compilation_options: wgpu::PipelineCompilationOptions::default(), }, @@ -193,7 +193,7 @@ impl ScalingRenderer { multisample: wgpu::MultisampleState::default(), fragment: Some(wgpu::FragmentState { module: &module, - entry_point: "fs_main", + entry_point: Some("fs_main"), compilation_options: wgpu::PipelineCompilationOptions::default(), targets: &[Some(wgpu::ColorTargetState { format: render_texture_format, @@ -208,8 +208,8 @@ impl ScalingRenderer { layout: Some(&pipeline_layout), vertex: wgpu::VertexState { module: &module_fill, - entry_point: "vs_main", - buffers: &[vertex_buffer_layout], + entry_point: Some("vs_main"), + buffers: std::slice::from_ref(&vertex_buffer_layout), compilation_options: wgpu::PipelineCompilationOptions::default(), }, primitive: wgpu::PrimitiveState::default(), @@ -217,7 +217,7 @@ impl ScalingRenderer { multisample: wgpu::MultisampleState::default(), fragment: Some(wgpu::FragmentState { module: &module_fill, - entry_point: "fs_main", + entry_point: Some("fs_main"), compilation_options: wgpu::PipelineCompilationOptions::default(), targets: &[Some(wgpu::ColorTargetState { format: render_texture_format, @@ -258,6 +258,7 @@ impl ScalingRenderer { load: wgpu::LoadOp::Clear(self.clear_color), store: wgpu::StoreOp::Store, }, + depth_slice: None, })], depth_stencil_attachment: None, timestamp_writes: None, From 0798893d7a7bc4ded97a998a1f3b05aec79a7222 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 18 Jan 2026 23:24:33 +0000 Subject: [PATCH 03/19] Bump MSRV to 1.88 Signed-off-by: Nico Burns --- .github/workflows/ci.yml | 4 ++-- Cargo.toml | 2 +- MSRV.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c10ba44..bd77dbd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: rust: - stable - beta - - 1.82.0 + - 1.88.0 steps: - name: Checkout sources uses: actions/checkout@v3 @@ -87,7 +87,7 @@ jobs: rust: - stable - beta - - 1.82.0 + - 1.88.0 steps: - name: Checkout sources uses: actions/checkout@v3 diff --git a/Cargo.toml b/Cargo.toml index e22494b..0058793 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ description = "A tiny library providing a GPU-powered pixel frame buffer." version = "0.15.0" authors = ["Jay Oster "] edition = "2021" -rust-version = "1.74.0" +rust-version = "1.88.0" repository = "https://github.com/parasyte/pixels" readme = "README.md" keywords = ["pixels", "2D", "GPU", "framebuffer"] diff --git a/MSRV.md b/MSRV.md index abbf47a..d583bd3 100644 --- a/MSRV.md +++ b/MSRV.md @@ -2,7 +2,7 @@ | `pixels` version | `rustc` version | |------------------|-----------------| -| (unreleased) | `1.82.0` | +| (unreleased) | `1.88.0` | | `0.15.0` | `1.81.0` | | `0.14.0` | `1.76.0` | | `0.13.0` | `1.65.0` | From 55c887b9b1878b02b78ca740d541319aa35bb06e Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 18 Jan 2026 23:26:49 +0000 Subject: [PATCH 04/19] Upgrade ultraviolet to 0.10 Signed-off-by: Nico Burns --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3c759a4..a22f99c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ab_glyph" @@ -4033,9 +4033,9 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "ultraviolet" -version = "0.9.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a28554d13eb5daba527cc1b91b6c341372a0ae45ed277ffb2c6fbc04f319d7e" +checksum = "ea519dad475ee0446b8172793c3c327e4fc81dafdaf05aaac510e630000b6296" dependencies = [ "wide", ] diff --git a/Cargo.toml b/Cargo.toml index 0058793..fdb2551 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ include = [ bytemuck = "1.12" raw-window-handle = "0.6" thiserror = "1.0" -ultraviolet = "0.9" +ultraviolet = "0.10" wgpu = "27.0" [target.'cfg(target_arch = "wasm32")'.dependencies] From f3892ea1721d59d9891088cffd6a1fb1a199b23e Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 00:05:12 +0000 Subject: [PATCH 05/19] Update imgui example Signed-off-by: Nico Burns --- Cargo.lock | 1615 +++++++++++++----------------- examples/imgui-winit/Cargo.toml | 18 +- examples/imgui-winit/src/gui.rs | 7 +- examples/imgui-winit/src/main.rs | 171 ++-- 4 files changed, 826 insertions(+), 985 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a22f99c..61ef22d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,15 +18,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli 0.31.1", -] - [[package]] name = "adler2" version = "2.0.1" @@ -78,8 +69,29 @@ dependencies = [ "ndk 0.8.0", "ndk-context", "ndk-sys 0.5.0+25.2.9519653", - "num_enum 0.7.4", - "thiserror", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.9.2", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk 0.9.0", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 1.0.69", ] [[package]] @@ -126,12 +138,6 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "arrayvec" version = "0.7.6" @@ -153,6 +159,15 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading 0.8.8", +] + [[package]] name = "atk" version = "0.18.2" @@ -188,21 +203,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base64" version = "0.22.1" @@ -215,7 +215,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -224,6 +233,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -322,7 +337,7 @@ dependencies = [ "glib", "libc", "once_cell", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -338,30 +353,30 @@ dependencies = [ [[package]] name = "calloop" -version = "0.10.6" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.2", "log", - "nix 0.25.1", - "slotmap", - "thiserror", - "vec_map", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", ] [[package]] name = "calloop" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.9.2", "log", "polling", "rustix 0.38.44", "slab", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -373,7 +388,19 @@ dependencies = [ "calloop 0.12.4", "rustix 0.38.44", "wayland-backend", - "wayland-client 0.31.11", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", ] [[package]] @@ -466,38 +493,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fd5de2a10e31b3ec3e8d75e7ccf8281ab3ee55de68f7ab6ffa9e21be8d82f22" -[[package]] -name = "cocoa" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" -dependencies = [ - "bitflags 1.3.2", - "block", - "cocoa-foundation 0.1.2", - "core-foundation 0.9.4", - "core-graphics 0.22.3", - "foreign-types 0.3.2", - "libc", - "objc", -] - -[[package]] -name = "cocoa" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" -dependencies = [ - "bitflags 1.3.2", - "block", - "cocoa-foundation 0.1.2", - "core-foundation 0.9.4", - "core-graphics 0.23.2", - "foreign-types 0.5.0", - "libc", - "objc", -] - [[package]] name = "cocoa" version = "0.26.1" @@ -506,24 +501,10 @@ checksum = "ad36507aeb7e16159dfe68db81ccc27571c3ccd4b76fb2fb72fc59e7a4b1b64c" dependencies = [ "bitflags 2.9.2", "block", - "cocoa-foundation 0.2.1", + "cocoa-foundation", "core-foundation 0.10.1", "core-graphics 0.24.0", - "foreign-types 0.5.0", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" -dependencies = [ - "bitflags 1.3.2", - "block", - "core-foundation 0.9.4", - "core-graphics-types 0.1.3", + "foreign-types", "libc", "objc", ] @@ -551,6 +532,17 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + [[package]] name = "com" version = "0.6.0" @@ -560,12 +552,6 @@ 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" @@ -669,19 +655,6 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types 0.1.3", - "foreign-types 0.3.2", - "libc", -] - [[package]] name = "core-graphics" version = "0.23.2" @@ -691,7 +664,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", "core-graphics-types 0.1.3", - "foreign-types 0.5.0", + "foreign-types", "libc", ] @@ -704,7 +677,7 @@ dependencies = [ "bitflags 2.9.2", "core-foundation 0.10.1", "core-graphics-types 0.2.0", - "foreign-types 0.5.0", + "foreign-types", "libc", ] @@ -730,18 +703,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-text" -version = "20.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5" -dependencies = [ - "core-foundation 0.9.4", - "core-graphics 0.23.2", - "foreign-types 0.5.0", - "libc", -] - [[package]] name = "crc32fast" version = "1.5.0" @@ -786,33 +747,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "crossfont" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb5a3822b594afc99b503cc1859b94686d3c3efdd60507a28587dab80ee1071" -dependencies = [ - "cocoa 0.25.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "core-graphics 0.23.2", - "core-text", - "dwrote", - "foreign-types 0.5.0", - "freetype-rs", - "libc", - "log", - "objc", - "once_cell", - "pkg-config", - "servo-fontconfig", - "winapi", -] - -[[package]] -name = "cty" -version = "0.2.2" +name = "crunchy" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "cursor-icon" @@ -833,17 +771,6 @@ dependencies = [ "winit_input_helper 0.15.3", ] -[[package]] -name = "d3d12" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" -dependencies = [ - "bitflags 2.9.2", - "libloading 0.8.8", - "winapi", -] - [[package]] name = "d3d12" version = "0.19.0" @@ -855,41 +782,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", -] - -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core", - "quote", - "syn 1.0.109", -] - [[package]] name = "devserver_lib" version = "0.4.2" @@ -966,20 +858,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -[[package]] -name = "dwrote" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe1f192fcce01590bd8d839aca53ce0d11d803bf291b2a6c4ad925a8f0024be" -dependencies = [ - "lazy_static", - "libc", - "serde", - "serde_derive", - "winapi", - "wio", -] - [[package]] name = "ecolor" version = "0.26.2" @@ -1012,7 +890,7 @@ dependencies = [ "egui", "epaint", "log", - "thiserror", + "thiserror 1.0.69", "type-map", "web-time 0.2.4", "wgpu 0.19.4", @@ -1117,16 +995,6 @@ dependencies = [ "num-traits", ] -[[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" @@ -1154,7 +1022,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset 0.9.1", + "memoffset", "rustc_version", ] @@ -1200,13 +1068,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "foreign-types" -version = "0.3.2" +name = "foldhash" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared 0.1.1", -] +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "foreign-types" @@ -1215,7 +1086,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared 0.3.1", + "foreign-types-shared", ] [[package]] @@ -1229,12 +1100,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -1250,28 +1115,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "freetype-rs" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb" -dependencies = [ - "bitflags 1.3.2", - "freetype-sys", - "libc", -] - -[[package]] -name = "freetype-sys" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" -dependencies = [ - "cmake", - "libc", - "pkg-config", -] - [[package]] name = "futures-channel" version = "0.3.31" @@ -1490,7 +1333,7 @@ dependencies = [ "libc", "libudev-sys", "log", - "nix 0.29.0", + "nix", "uuid", "vec_map", "wasm-bindgen", @@ -1509,12 +1352,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "gio" version = "0.18.4" @@ -1531,7 +1368,7 @@ dependencies = [ "once_cell", "pin-project-lite", "smallvec", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1578,7 +1415,7 @@ dependencies = [ "memchr", "once_cell", "smallvec", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1607,9 +1444,9 @@ dependencies = [ [[package]] name = "glow" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" dependencies = [ "js-sys", "slotmap", @@ -1619,9 +1456,9 @@ dependencies = [ [[package]] name = "glow" -version = "0.13.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" dependencies = [ "js-sys", "slotmap", @@ -1639,10 +1476,19 @@ dependencies = [ ] [[package]] -name = "gobject-sys" -version = "0.18.0" +name = "glutin_wgl_sys" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", @@ -1670,28 +1516,27 @@ dependencies = [ [[package]] name = "gpu-allocator" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" dependencies = [ - "backtrace", "log", - "thiserror", + "presser", + "thiserror 1.0.69", "winapi", - "windows 0.44.0", + "windows 0.52.0", ] [[package]] name = "gpu-allocator" -version = "0.25.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" dependencies = [ "log", "presser", - "thiserror", - "winapi", - "windows 0.52.0", + "thiserror 1.0.69", + "windows 0.58.0", ] [[package]] @@ -1701,10 +1546,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.9.2", - "gpu-descriptor-types", + "gpu-descriptor-types 0.1.2", "hashbrown 0.14.5", ] +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.9.2", + "gpu-descriptor-types 0.2.0", + "hashbrown 0.15.5", +] + [[package]] name = "gpu-descriptor-types" version = "0.1.2" @@ -1714,6 +1570,15 @@ dependencies = [ "bitflags 2.9.2", ] +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.9.2", +] + [[package]] name = "gtk" version = "0.18.2" @@ -1766,6 +1631,18 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1788,20 +1665,17 @@ name = "hashbrown" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] [[package]] -name = "hassle-rs" -version = "0.10.0" +name = "hashbrown" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ - "bitflags 1.3.2", - "com-rs", - "libc", - "libloading 0.7.4", - "thiserror", - "widestring", - "winapi", + "foldhash 0.2.0", ] [[package]] @@ -1814,7 +1688,7 @@ dependencies = [ "com", "libc", "libloading 0.8.8", - "thiserror", + "thiserror 1.0.69", "widestring", "winapi", ] @@ -1964,12 +1838,6 @@ dependencies = [ "rayon", ] -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" version = "1.0.3" @@ -1993,9 +1861,9 @@ dependencies = [ [[package]] name = "imgui" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122d677d0efcd64ca15f12907beaf46b26bbd2cdc855ee5b227f29cf50f75bb5" +checksum = "8addafa5cecf0515812226e806913814e02ce38d10215778082af5174abe5669" dependencies = [ "bitflags 1.3.2", "cfg-if", @@ -2006,9 +1874,9 @@ dependencies = [ [[package]] name = "imgui-sys" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d785272a57cb8058a53a1e6f376f48e2ec4f40fbc6a9bb197dabf7b6b59c03bf" +checksum = "ead193f9f4b60398e8b8f4ab1483e2321640d87aeebdaa3e5f44c55633ccd804" dependencies = [ "cc", "cfg-if", @@ -2018,15 +1886,14 @@ dependencies = [ [[package]] name = "imgui-wgpu" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c7cf3740fd216da2721676c0e5264821169211f557ac6baa99c644a3869b324" +version = "0.25.0" +source = "git+https://github.com/Yatekii/imgui-wgpu-rs?rev=3db5c5a#3db5c5ad6a63f46428d836e34b1f4557ded0b6b4" dependencies = [ "bytemuck", "imgui", "log", "smallvec", - "wgpu 0.17.2", + "wgpu 27.0.1", ] [[package]] @@ -2039,19 +1906,19 @@ dependencies = [ "imgui-wgpu", "imgui-winit-support", "log", - "pixels 0.14.0", - "winit 0.27.5", - "winit_input_helper 0.13.0", + "pixels 0.15.0", + "winit 0.30.12", + "winit_input_helper 0.17.0", ] [[package]] name = "imgui-winit-support" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edae4bfce64634fa013aec131f5d5f1c80df8aa0bddc0e0a9845ad57036b6987" +checksum = "ff7fcccfa9efab56c94274c0fec9939bb14149342b49e6a425883a5b7dda6a3f" dependencies = [ "imgui", - "winit 0.27.5", + "winit 0.30.12", ] [[package]] @@ -2095,18 +1962,6 @@ dependencies = [ "libc", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "invaders" version = "0.1.0" @@ -2162,7 +2017,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -2204,17 +2059,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "khronos-egl" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" -dependencies = [ - "libc", - "libloading 0.7.4", - "pkg-config", -] - [[package]] name = "khronos-egl" version = "6.0.0" @@ -2362,7 +2206,7 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8af69edc087272df438b3ee436c4bb6d7c04aa8af665cfd398feae627dbd8570" dependencies = [ - "arrayvec 0.7.6", + "arrayvec", "euclid", "num-traits", ] @@ -2391,15 +2235,6 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.9.7" @@ -2409,15 +2244,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -2429,14 +2255,14 @@ dependencies = [ [[package]] name = "metal" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "623b5e6cefd76e58f774bd3cc0c6f5c7615c58c03a97815245a25c3c9bdee318" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ "bitflags 2.9.2", "block", "core-graphics-types 0.1.3", - "foreign-types 0.5.0", + "foreign-types", "log", "objc", "paste", @@ -2444,14 +2270,14 @@ dependencies = [ [[package]] name = "metal" -version = "0.27.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ "bitflags 2.9.2", "block", - "core-graphics-types 0.1.3", - "foreign-types 0.5.0", + "core-graphics-types 0.2.0", + "foreign-types", "log", "objc", "paste", @@ -2552,18 +2378,6 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - [[package]] name = "muda" version = "0.15.3" @@ -2580,62 +2394,54 @@ dependencies = [ "objc2-foundation", "once_cell", "png", - "thiserror", + "thiserror 1.0.69", "windows-sys 0.59.0", ] [[package]] name = "naga" -version = "0.13.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ceaaa4eedaece7e4ec08c55c640ba03dbb73fb812a6570a59bcf1930d0f70e" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ - "bit-set", + "bit-set 0.5.3", "bitflags 2.9.2", - "codespan-reporting", + "codespan-reporting 0.11.1", "hexf-parse", - "indexmap 1.9.3", + "indexmap 2.10.0", "log", "num-traits", "rustc-hash 1.1.0", - "spirv 0.2.0+1.5.4", + "spirv", "termcolor", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] [[package]] name = "naga" -version = "0.19.2" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ - "bit-set", + "arrayvec", + "bit-set 0.8.0", "bitflags 2.9.2", - "codespan-reporting", + "cfg-if", + "cfg_aliases 0.2.1", + "codespan-reporting 0.12.0", + "half", + "hashbrown 0.16.1", "hexf-parse", "indexmap 2.10.0", + "libm", "log", "num-traits", + "once_cell", "rustc-hash 1.1.0", - "spirv 0.3.0+sdk-1.3.268.0", - "termcolor", - "thiserror", - "unicode-xid", -] - -[[package]] -name = "ndk" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" -dependencies = [ - "bitflags 1.3.2", - "jni-sys", - "ndk-sys 0.4.1+23.1.7779620", - "num_enum 0.5.11", - "raw-window-handle 0.5.2", - "thiserror", + "spirv", + "thiserror 2.0.18", + "unicode-ident", ] [[package]] @@ -2648,9 +2454,9 @@ dependencies = [ "jni-sys", "log", "ndk-sys 0.5.0+25.2.9519653", - "num_enum 0.7.4", + "num_enum", "raw-window-handle 0.6.2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2663,9 +2469,9 @@ dependencies = [ "jni-sys", "log", "ndk-sys 0.6.0+11769913", - "num_enum 0.7.4", + "num_enum", "raw-window-handle 0.6.2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2674,44 +2480,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-glue" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" -dependencies = [ - "libc", - "log", - "ndk 0.7.0", - "ndk-context", - "ndk-macro", - "ndk-sys 0.4.1+23.1.7779620", - "once_cell", - "parking_lot", -] - -[[package]] -name = "ndk-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" -dependencies = [ - "darling", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ndk-sys" -version = "0.4.1+23.1.7779620" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" version = "0.5.0+25.2.9519653" @@ -2730,31 +2498,6 @@ dependencies = [ "jni-sys", ] -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - [[package]] name = "nix" version = "0.29.0" @@ -2783,37 +2526,16 @@ dependencies = [ "libm", ] -[[package]] -name = "num_enum" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -dependencies = [ - "num_enum_derive 0.5.11", -] - [[package]] name = "num_enum" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ - "num_enum_derive 0.7.4", + "num_enum_derive", "rustversion", ] -[[package]] -name = "num_enum_derive" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "num_enum_derive" version = "0.7.4" @@ -2878,6 +2600,30 @@ dependencies = [ "objc2-quartz-core", ] +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.9.2", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + [[package]] name = "objc2-core-data" version = "0.2.2" @@ -2902,6 +2648,18 @@ dependencies = [ "objc2-metal", ] +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation", +] + [[package]] name = "objc2-encode" version = "3.0.0" @@ -2922,10 +2680,23 @@ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.9.2", "block2 0.5.1", + "dispatch", "libc", "objc2 0.5.2", ] +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation", +] + [[package]] name = "objc2-metal" version = "0.2.2" @@ -2952,23 +2723,69 @@ dependencies = [ ] [[package]] -name = "objc_exception" -version = "0.1.2" +name = "objc2-symbols" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "cc", + "objc2 0.5.2", + "objc2-foundation", ] [[package]] -name = "object" -version = "0.36.7" +name = "objc2-ui-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "memchr", -] - + "bitflags 2.9.2", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.9.2", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -2984,6 +2801,15 @@ dependencies = [ "libredox", ] +[[package]] +name = "ordered-float" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" +dependencies = [ + "num-traits", +] + [[package]] name = "owned_ttf_parser" version = "0.25.1" @@ -3068,6 +2894,26 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -3080,20 +2926,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pixels" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fe695c41cbcc552b6ad7511479226911e804e6569204ea0bafbe7c5fdddfc11" -dependencies = [ - "bytemuck", - "pollster", - "raw-window-handle 0.5.2", - "thiserror", - "ultraviolet", - "wgpu 0.17.2", -] - [[package]] name = "pixels" version = "0.15.0" @@ -3102,9 +2934,9 @@ dependencies = [ "pixels-mocks", "pollster", "raw-window-handle 0.6.2", - "thiserror", - "ultraviolet", - "wgpu 0.19.4", + "thiserror 1.0.69", + "ultraviolet 0.10.0", + "wgpu 27.0.1", "winit 0.29.15", ] @@ -3117,8 +2949,8 @@ dependencies = [ "bytemuck", "pollster", "raw-window-handle 0.6.2", - "thiserror", - "ultraviolet", + "thiserror 1.0.69", + "ultraviolet 0.9.2", "wgpu 0.19.4", ] @@ -3168,6 +3000,21 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "portable-atomic" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "potential_utf" version = "0.1.2" @@ -3304,15 +3151,6 @@ dependencies = [ "winit_input_helper 0.15.3", ] -[[package]] -name = "raw-window-handle" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" -dependencies = [ - "cty", -] - [[package]] name = "raw-window-handle" version = "0.5.2" @@ -3354,6 +3192,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_syscall" version = "0.5.17" @@ -3470,15 +3317,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" -[[package]] -name = "safe_arch" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" -dependencies = [ - "bytemuck", -] - [[package]] name = "safe_arch" version = "0.7.4" @@ -3511,27 +3349,28 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.4.3" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" +checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" dependencies = [ - "crossfont", + "ab_glyph", "log", - "smithay-client-toolkit 0.16.1", - "tiny-skia 0.7.0", + "memmap2", + "smithay-client-toolkit 0.18.1", + "tiny-skia", ] [[package]] name = "sctk-adwaita" -version = "0.8.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.7", - "smithay-client-toolkit 0.18.1", - "tiny-skia 0.11.4", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", ] [[package]] @@ -3581,27 +3420,6 @@ dependencies = [ "serde", ] -[[package]] -name = "servo-fontconfig" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e3e22fe5fd73d04ebf0daa049d3efe3eae55369ce38ab16d07ddd9ac5c217c" -dependencies = [ - "libc", - "servo-fontconfig-sys", -] - -[[package]] -name = "servo-fontconfig-sys" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36b879db9892dfa40f95da1c38a835d41634b825fbd8c4c418093d53c24b388" -dependencies = [ - "expat-sys", - "freetype-sys", - "pkg-config", -] - [[package]] name = "shlex" version = "1.3.0" @@ -3648,45 +3466,51 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smithay-client-toolkit" -version = "0.16.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "bitflags 1.3.2", - "calloop 0.10.6", - "dlib", - "lazy_static", + "bitflags 2.9.2", + "calloop 0.12.4", + "calloop-wayland-source 0.2.0", + "cursor-icon", + "libc", "log", - "memmap2 0.5.10", - "nix 0.24.3", - "pkg-config", - "wayland-client 0.29.5", - "wayland-cursor 0.29.5", - "wayland-protocols 0.29.5", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols 0.31.2", + "wayland-protocols-wlr 0.2.0", + "wayland-scanner", + "xkeysym", ] [[package]] name = "smithay-client-toolkit" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ "bitflags 2.9.2", - "calloop 0.12.4", - "calloop-wayland-source", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", "cursor-icon", "libc", "log", - "memmap2 0.9.7", + "memmap2", "rustix 0.38.44", - "thiserror", + "thiserror 1.0.69", "wayland-backend", - "wayland-client 0.31.11", + "wayland-client", "wayland-csd-frame", - "wayland-cursor 0.31.11", - "wayland-protocols 0.31.2", - "wayland-protocols-wlr", - "wayland-scanner 0.31.7", + "wayland-cursor", + "wayland-protocols 0.32.9", + "wayland-protocols-wlr 0.3.9", + "wayland-scanner", "xkeysym", ] @@ -3699,16 +3523,6 @@ dependencies = [ "serde", ] -[[package]] -name = "spirv" -version = "0.2.0+1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" -dependencies = [ - "bitflags 1.3.2", - "num-traits", -] - [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" @@ -3736,12 +3550,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "sw-composite" version = "0.7.16" @@ -3801,7 +3609,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3731d04d4ac210cd5f344087733943b9bfb1a32654387dad4d1c70de21aee2c9" dependencies = [ "bitflags 2.9.2", - "cocoa 0.26.1", + "cocoa", "core-foundation 0.10.1", "core-graphics 0.24.0", "crossbeam-channel", @@ -3877,7 +3685,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", ] [[package]] @@ -3892,18 +3709,14 @@ dependencies = [ ] [[package]] -name = "tiny-skia" -version = "0.7.0" +name = "thiserror-impl" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642680569bb895b16e4b9d181c60be1ed136fa0c9c7f11d004daf053ba89bf82" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "bytemuck", - "cfg-if", - "png", - "safe_arch 0.5.2", - "tiny-skia-path 0.7.0", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -3913,22 +3726,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", - "arrayvec 0.7.6", + "arrayvec", "bytemuck", "cfg-if", "log", "png", - "tiny-skia-path 0.11.4", -] - -[[package]] -name = "tiny-skia-path" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c114d32f0c2ee43d585367cb013dfaba967ab9f62b90d9af0d696e955e70fa6c" -dependencies = [ - "arrayref", - "bytemuck", + "tiny-skia-path", ] [[package]] @@ -3950,7 +3753,7 @@ dependencies = [ "error-iter", "log", "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-skia 0.11.4", + "tiny-skia", "winit 0.29.15", "winit_input_helper 0.15.3", ] @@ -4010,6 +3813,22 @@ dependencies = [ "winnow", ] +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" + [[package]] name = "ttf-parser" version = "0.25.1" @@ -4031,6 +3850,15 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" +[[package]] +name = "ultraviolet" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a28554d13eb5daba527cc1b91b6c341372a0ae45ed277ffb2c6fbc04f319d7e" +dependencies = [ + "wide", +] + [[package]] name = "ultraviolet" version = "0.10.0" @@ -4126,7 +3954,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6481311b98508f4bc2d0abbfa5d42172e7a54b4b24d8f15e28b0dc650be0c59f" dependencies = [ "anyhow", - "gimli 0.26.2", + "gimli", "id-arena", "leb128", "log", @@ -4347,23 +4175,7 @@ dependencies = [ "rustix 1.0.8", "scoped-tls", "smallvec", - "wayland-sys 0.31.7", -] - -[[package]] -name = "wayland-client" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" -dependencies = [ - "bitflags 1.3.2", - "downcast-rs", - "libc", - "nix 0.24.3", - "scoped-tls", - "wayland-commons", - "wayland-scanner 0.29.5", - "wayland-sys 0.29.5", + "wayland-sys", ] [[package]] @@ -4375,19 +4187,7 @@ dependencies = [ "bitflags 2.9.2", "rustix 1.0.8", "wayland-backend", - "wayland-scanner 0.31.7", -] - -[[package]] -name = "wayland-commons" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" -dependencies = [ - "nix 0.24.3", - "once_cell", - "smallvec", - "wayland-sys 0.29.5", + "wayland-scanner", ] [[package]] @@ -4401,17 +4201,6 @@ dependencies = [ "wayland-backend", ] -[[package]] -name = "wayland-cursor" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" -dependencies = [ - "nix 0.24.3", - "wayland-client 0.29.5", - "xcursor", -] - [[package]] name = "wayland-cursor" version = "0.31.11" @@ -4419,32 +4208,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" dependencies = [ "rustix 1.0.8", - "wayland-client 0.31.11", + "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.29.5" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 1.3.2", - "wayland-client 0.29.5", - "wayland-commons", - "wayland-scanner 0.29.5", + "bitflags 2.9.2", + "wayland-backend", + "wayland-client", + "wayland-scanner", ] [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ "bitflags 2.9.2", "wayland-backend", - "wayland-client 0.31.11", - "wayland-scanner 0.31.7", + "wayland-client", + "wayland-scanner", ] [[package]] @@ -4455,9 +4244,22 @@ checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" dependencies = [ "bitflags 2.9.2", "wayland-backend", - "wayland-client 0.31.11", + "wayland-client", "wayland-protocols 0.31.2", - "wayland-scanner 0.31.7", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +dependencies = [ + "bitflags 2.9.2", + "wayland-backend", + "wayland-client", + "wayland-protocols 0.32.9", + "wayland-scanner", ] [[package]] @@ -4468,20 +4270,22 @@ checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ "bitflags 2.9.2", "wayland-backend", - "wayland-client 0.31.11", + "wayland-client", "wayland-protocols 0.31.2", - "wayland-scanner 0.31.7", + "wayland-scanner", ] [[package]] -name = "wayland-scanner" -version = "0.29.5" +name = "wayland-protocols-wlr" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" dependencies = [ - "proc-macro2", - "quote", - "xml-rs", + "bitflags 2.9.2", + "wayland-backend", + "wayland-client", + "wayland-protocols 0.32.9", + "wayland-scanner", ] [[package]] @@ -4495,17 +4299,6 @@ dependencies = [ "quote", ] -[[package]] -name = "wayland-sys" -version = "0.29.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" -dependencies = [ - "dlib", - "lazy_static", - "pkg-config", -] - [[package]] name = "wayland-sys" version = "0.31.7" @@ -4520,9 +4313,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -4567,41 +4360,46 @@ dependencies = [ [[package]] name = "wgpu" -version = "0.17.2" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752e44d3998ef35f71830dd1ad3da513e628e2e4d4aedb0ab580f850827a0b41" +checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" dependencies = [ - "arrayvec 0.7.6", + "arrayvec", "cfg-if", + "cfg_aliases 0.1.1", "js-sys", "log", - "naga 0.13.0", + "naga 0.19.2", "parking_lot", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "smallvec", "static_assertions", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core 0.17.1", - "wgpu-hal 0.17.2", - "wgpu-types 0.17.0", + "wgpu-core 0.19.4", + "wgpu-hal 0.19.5", + "wgpu-types 0.19.2", ] [[package]] name = "wgpu" -version = "0.19.4" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ - "arrayvec 0.7.6", + "arrayvec", + "bitflags 2.9.2", "cfg-if", - "cfg_aliases 0.1.1", + "cfg_aliases 0.2.1", + "document-features", + "hashbrown 0.16.1", "js-sys", "log", - "naga 0.19.2", + "naga 27.0.3", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle 0.6.2", "smallvec", @@ -4609,151 +4407,205 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core 0.19.4", - "wgpu-hal 0.19.5", - "wgpu-types 0.19.2", + "wgpu-core 27.0.3", + "wgpu-hal 27.0.4", + "wgpu-types 27.0.1", ] [[package]] name = "wgpu-core" -version = "0.17.1" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f8a44dd301a30ceeed3c27d8c0090433d3da04d7b2a4042738095a424d12ae7" +checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ - "arrayvec 0.7.6", - "bit-vec", + "arrayvec", + "bit-vec 0.6.3", "bitflags 2.9.2", - "codespan-reporting", + "cfg_aliases 0.1.1", + "codespan-reporting 0.11.1", + "indexmap 2.10.0", "log", - "naga 0.13.0", + "naga 0.19.2", + "once_cell", "parking_lot", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "rustc-hash 1.1.0", "smallvec", - "thiserror", + "thiserror 1.0.69", "web-sys", - "wgpu-hal 0.17.2", - "wgpu-types 0.17.0", + "wgpu-hal 0.19.5", + "wgpu-types 0.19.2", ] [[package]] name = "wgpu-core" -version = "0.19.4" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ - "arrayvec 0.7.6", - "bit-vec", + "arrayvec", + "bit-set 0.8.0", + "bit-vec 0.8.0", "bitflags 2.9.2", - "cfg_aliases 0.1.1", - "codespan-reporting", + "bytemuck", + "cfg_aliases 0.2.1", + "document-features", + "hashbrown 0.16.1", "indexmap 2.10.0", "log", - "naga 0.19.2", + "naga 27.0.3", "once_cell", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle 0.6.2", "rustc-hash 1.1.0", "smallvec", - "thiserror", - "web-sys", - "wgpu-hal 0.19.5", - "wgpu-types 0.19.2", + "thiserror 2.0.18", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-wasm", + "wgpu-core-deps-windows-linux-android", + "wgpu-hal 27.0.4", + "wgpu-types 27.0.1", +] + +[[package]] +name = "wgpu-core-deps-apple" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal 27.0.4", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal 27.0.4", +] + +[[package]] +name = "wgpu-core-deps-wasm" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b1027dcf3b027a877e44819df7ceb0e2e98578830f8cd34cd6c3c7c2a7a50b7" +dependencies = [ + "wgpu-hal 27.0.4", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal 27.0.4", ] [[package]] name = "wgpu-hal" -version = "0.17.2" +version = "0.19.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a80bf0e3c77399bb52850cb0830af9bad073d5cfcb9dd8253bef8125c42db17" +checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" dependencies = [ "android_system_properties", - "arrayvec 0.7.6", - "ash", - "bit-set", + "arrayvec", + "ash 0.37.3+1.3.251", + "bit-set 0.5.3", "bitflags 2.9.2", "block", + "cfg_aliases 0.1.1", "core-graphics-types 0.1.3", - "d3d12 0.7.0", - "glow 0.12.3", + "d3d12", + "glow 0.13.1", + "glutin_wgl_sys 0.5.0", "gpu-alloc", - "gpu-allocator 0.22.0", - "gpu-descriptor", - "hassle-rs 0.10.0", + "gpu-allocator 0.25.0", + "gpu-descriptor 0.2.4", + "hassle-rs", "js-sys", - "khronos-egl 4.1.0", + "khronos-egl", "libc", "libloading 0.8.8", "log", - "metal 0.26.0", - "naga 0.13.0", + "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.5.2", + "raw-window-handle 0.6.2", "renderdoc-sys", "rustc-hash 1.1.0", "smallvec", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "web-sys", - "wgpu-types 0.17.0", + "wgpu-types 0.19.2", "winapi", ] [[package]] name = "wgpu-hal" -version = "0.19.5" +version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", - "arrayvec 0.7.6", - "ash", - "bit-set", + "arrayvec", + "ash 0.38.0+1.3.281", + "bit-set 0.8.0", "bitflags 2.9.2", "block", - "cfg_aliases 0.1.1", - "core-graphics-types 0.1.3", - "d3d12 0.19.0", - "glow 0.13.1", - "glutin_wgl_sys", + "bytemuck", + "cfg-if", + "cfg_aliases 0.2.1", + "core-graphics-types 0.2.0", + "glow 0.16.0", + "glutin_wgl_sys 0.6.1", "gpu-alloc", - "gpu-allocator 0.25.0", - "gpu-descriptor", - "hassle-rs 0.11.0", + "gpu-allocator 0.27.0", + "gpu-descriptor 0.3.2", + "hashbrown 0.16.1", "js-sys", - "khronos-egl 6.0.0", + "khronos-egl", "libc", "libloading 0.8.8", "log", - "metal 0.27.0", - "naga 0.19.2", - "ndk-sys 0.5.0+25.2.9519653", + "metal 0.32.0", + "naga 27.0.3", + "ndk-sys 0.6.0+11769913", "objc", "once_cell", + "ordered-float", "parking_lot", + "portable-atomic", + "portable-atomic-util", "profiling", "range-alloc", "raw-window-handle 0.6.2", "renderdoc-sys", - "rustc-hash 1.1.0", "smallvec", - "thiserror", + "thiserror 2.0.18", "wasm-bindgen", "web-sys", - "wgpu-types 0.19.2", - "winapi", + "wgpu-types 27.0.1", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] name = "wgpu-types" -version = "0.17.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee64d7398d0c2f9ca48922c902ef69c42d000c759f3db41e355f4a570b052b67" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ "bitflags 2.9.2", "js-sys", @@ -4762,12 +4614,15 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.19.2" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ "bitflags 2.9.2", + "bytemuck", "js-sys", + "log", + "thiserror 2.0.18", "web-sys", ] @@ -4778,7 +4633,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" dependencies = [ "bytemuck", - "safe_arch 0.7.4", + "safe_arch", ] [[package]] @@ -4818,15 +4673,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows" version = "0.52.0" @@ -4916,19 +4762,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -4947,6 +4780,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.59.0" @@ -5061,12 +4903,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -5091,12 +4927,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -5133,12 +4963,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -5163,12 +4987,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -5217,12 +5035,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -5247,39 +5059,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" -[[package]] -name = "winit" -version = "0.27.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" -dependencies = [ - "bitflags 1.3.2", - "cocoa 0.24.1", - "core-foundation 0.9.4", - "core-graphics 0.22.3", - "dispatch", - "instant", - "libc", - "log", - "mio", - "ndk 0.7.0", - "ndk-glue", - "objc", - "once_cell", - "parking_lot", - "percent-encoding", - "raw-window-handle 0.4.3", - "raw-window-handle 0.5.2", - "sctk-adwaita 0.4.3", - "smithay-client-toolkit 0.16.1", - "wasm-bindgen", - "wayland-client 0.29.5", - "wayland-protocols 0.29.5", - "web-sys", - "windows-sys 0.36.1", - "x11-dl", -] - [[package]] name = "winit" version = "0.29.15" @@ -5287,7 +5066,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" dependencies = [ "ahash", - "android-activity", + "android-activity 0.5.2", "atomic-waker", "bitflags 2.9.2", "bytemuck", @@ -5300,7 +5079,7 @@ dependencies = [ "js-sys", "libc", "log", - "memmap2 0.9.7", + "memmap2", "ndk 0.8.0", "ndk-sys 0.5.0+25.2.9519653", "objc2 0.4.1", @@ -5317,9 +5096,9 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "wayland-backend", - "wayland-client 0.31.11", + "wayland-client", "wayland-protocols 0.31.2", - "wayland-protocols-plasma", + "wayland-protocols-plasma 0.2.0", "web-sys", "web-time 0.2.4", "windows-sys 0.48.0", @@ -5329,12 +5108,55 @@ dependencies = [ ] [[package]] -name = "winit_input_helper" -version = "0.13.0" +name = "winit" +version = "0.30.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de23d6018b4ff6e9a6bd069109b3c891a44acc97a212e744598c6971a9ee0384" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ - "winit 0.27.5", + "ahash", + "android-activity 0.6.0", + "atomic-waker", + "bitflags 2.9.2", + "block2 0.5.1", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk 0.9.0", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle 0.6.2", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita 0.10.1", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols 0.32.9", + "wayland-protocols-plasma 0.3.9", + "web-sys", + "web-time 1.1.0", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -5348,21 +5170,22 @@ dependencies = [ ] [[package]] -name = "winnow" -version = "0.5.40" +name = "winit_input_helper" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "8e3dcabe3fca8a9a6286b9883057feaf3aeed0a159ea27e0611e49458afb7f75" dependencies = [ - "memchr", + "web-time 1.1.0", + "winit 0.30.12", ] [[package]] -name = "wio" -version = "0.2.2" +name = "winnow" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ - "winapi", + "memchr", ] [[package]] diff --git a/examples/imgui-winit/Cargo.toml b/examples/imgui-winit/Cargo.toml index 62902d9..af45185 100644 --- a/examples/imgui-winit/Cargo.toml +++ b/examples/imgui-winit/Cargo.toml @@ -10,21 +10,13 @@ optimize = ["log/release_max_level_warn"] default = ["optimize"] [dependencies] +pixels = { path = "../.." } imgui = "0.12" -imgui-wgpu = "0.24" -imgui-winit-support = "0.11" +imgui-wgpu = { git = "https://github.com/Yatekii/imgui-wgpu-rs", rev = "3db5c5a" } +imgui-winit-support = "0.13" +winit = "0.30" +winit_input_helper = "0.17" env_logger.workspace = true error-iter.workspace = true log.workspace = true - -# Until this gets updated support, this example is stuck on winit 0.27 and wgpu 0.17 -[dependencies.winit] -version = "0.27" - -[dependencies.winit_input_helper] -version = "0.13" - -# Frozen dep for this specific example -[dependencies.pixels] -version = "0.14" diff --git a/examples/imgui-winit/src/gui.rs b/examples/imgui-winit/src/gui.rs index e90e507..132cdd9 100644 --- a/examples/imgui-winit/src/gui.rs +++ b/examples/imgui-winit/src/gui.rs @@ -19,7 +19,7 @@ impl Gui { imgui.set_ini_filename(None); // Initialize winit platform support - let mut platform = imgui_winit_support::WinitPlatform::init(&mut imgui); + let mut platform = imgui_winit_support::WinitPlatform::new(&mut imgui); platform.attach_window( imgui.io_mut(), window, @@ -113,10 +113,13 @@ impl Gui { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Load, - store: true, + store: wgpu::StoreOp::Store, }, + depth_slice: None, })], depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, }); self.renderer.render( diff --git a/examples/imgui-winit/src/main.rs b/examples/imgui-winit/src/main.rs index bff66c5..c9afb48 100644 --- a/examples/imgui-winit/src/main.rs +++ b/examples/imgui-winit/src/main.rs @@ -1,14 +1,17 @@ #![deny(clippy::all)] #![forbid(unsafe_code)] +use std::sync::Arc; + use crate::gui::Gui; 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::window::WindowBuilder; +use winit::event::{Event, WindowEvent}; +use winit::event_loop::EventLoop; +use winit::keyboard::KeyCode; +use winit::window::WindowAttributes; use winit_input_helper::WinitInputHelper; mod gui; @@ -32,23 +35,29 @@ 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); - WindowBuilder::new() - .with_title("Hello Pixels + Dear ImGui") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + WindowAttributes::new() + .with_title("Hello Pixels + Dear ImGui") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let mut scale_factor = window.scale_factor(); 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, window.clone()); Pixels::new(WIDTH, HEIGHT, surface_texture)? }; let mut world = World::new(WIDTH, HEIGHT); @@ -56,74 +65,88 @@ fn main() -> Result<(), Error> { // Set up Dear ImGui let mut gui = Gui::new(&window, &pixels); - event_loop.run(move |event, _, control_flow| { - // Draw the current frame - if let Event::RedrawRequested(_) = event { - // Draw the world - world.draw(pixels.frame_mut()); - - // Prepare Dear ImGui - gui.prepare(&window).expect("gui.prepare() failed"); - - // Render everything together - let render_result = pixels.render_with(|encoder, render_target, context| { - // Render the world texture - context.scaling_renderer.render(encoder, render_target); - - // Render Dear ImGui - gui.render(&window, encoder, render_target, context)?; - - Ok(()) - }); - - // Basic error handling - if let Err(err) = render_result { - log_error("pixels.render", err); - *control_flow = ControlFlow::Exit; - return; - } - } - - // Handle input events - gui.handle_event(&window, &event); - if input.update(&event) { - // Close events - if input.key_pressed(VirtualKeyCode::Escape) || input.quit() { - *control_flow = ControlFlow::Exit; - return; - } - - // Update the scale factor - if let Some(factor) = input.scale_factor() { - scale_factor = factor; - } - - // Resize the window - if let Some(size) = input.window_resized() { - if size.width > 0 && size.height > 0 { - // Resize the surface texture - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - *control_flow = ControlFlow::Exit; - return; + #[allow(deprecated)] + event_loop + .run(move |event, event_loop| { + // Handle input events + gui.handle_event(&window, &event); + + match event { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); + } + Event::WindowEvent { event, .. } => { + // Draw the current frame + if event == WindowEvent::RedrawRequested { + // Draw the world + world.draw(pixels.frame_mut()); + + // Prepare Dear ImGui + gui.prepare(&window).expect("gui.prepare() failed"); + + // Render everything together + let render_result = + pixels.render_with(|encoder, render_target, context| { + // Render the world texture + context.scaling_renderer.render(encoder, render_target); + + // Render Dear ImGui + gui.render(&window, encoder, render_target, context)?; + + Ok(()) + }); + + // Basic error handling + if let Err(err) = render_result { + log_error("pixels.render", err); + return event_loop.exit(); + } } - // Resize the world - let LogicalSize { width, height } = size.to_logical(scale_factor); - world.resize(width, height); - if let Err(err) = pixels.resize_buffer(width, height) { - log_error("pixels.resize_buffer", err); - *control_flow = ControlFlow::Exit; - return; + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + return event_loop.exit(); + } + + // Update the scale factor + if let Some(factor) = input.scale_factor() { + scale_factor = factor; + } + + // Resize the window + if let Some(size) = input.window_resized() { + if size.width > 0 && size.height > 0 { + // Resize the surface texture + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + return event_loop.exit(); + } + + // Resize the world + let LogicalSize { width, height } = size.to_logical(scale_factor); + world.resize(width, height); + if let Err(err) = pixels.resize_buffer(width, height) { + log_error("pixels.resize_buffer", err); + return event_loop.exit(); + } + } + } + + // Update internal state and request a redraw + world.update(); + window.request_redraw(); } } - } + _ => {} + }; + }) + .unwrap(); - // Update internal state and request a redraw - world.update(); - window.request_redraw(); - } - }); + Ok(()) } fn log_error(method_name: &str, err: E) { From bf817af7cee247b0626e4da50ea515a1cbcc3c97 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 00:20:20 +0000 Subject: [PATCH 06/19] Fix minimal-egui example Signed-off-by: Nico Burns --- Cargo.lock | 358 +++++++++++++++++------------- examples/minimal-egui/Cargo.toml | 13 +- examples/minimal-egui/src/gui.rs | 51 +++-- examples/minimal-egui/src/main.rs | 172 +++++++------- 4 files changed, 331 insertions(+), 263 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61ef22d..b851134 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -59,7 +59,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" dependencies = [ "android-properties", - "bitflags 2.9.2", + "bitflags 2.10.0", "cc", "cesu8", "jni", @@ -80,7 +80,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.9.2", + "bitflags 2.10.0", "cc", "cesu8", "jni", @@ -247,11 +247,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.2" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -296,18 +296,18 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -332,7 +332,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "cairo-sys-rs", "glib", "libc", @@ -357,7 +357,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "log", "polling", "rustix 0.38.44", @@ -371,7 +371,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "log", "polling", "rustix 0.38.44", @@ -499,7 +499,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad36507aeb7e16159dfe68db81ccc27571c3ccd4b76fb2fb72fc59e7a4b1b64c" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block", "cocoa-foundation", "core-foundation 0.10.1", @@ -515,7 +515,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block", "core-foundation 0.10.1", "core-graphics-types 0.2.0", @@ -674,7 +674,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types", @@ -698,7 +698,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "core-foundation 0.10.1", "libc", ] @@ -777,7 +777,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "libloading 0.8.8", "winapi", ] @@ -860,54 +860,66 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "ecolor" -version = "0.26.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03cfe80b1890e1a8cdbffc6044d6872e814aaf6011835a2a5e2db0e5c5c4ef4e" +checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e" dependencies = [ "bytemuck", + "emath", ] [[package]] name = "egui" -version = "0.26.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180f595432a5b615fc6b74afef3955249b86cfea72607b40740a4cd60d5297d0" +checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3" dependencies = [ "ahash", + "bitflags 2.10.0", + "emath", "epaint", "log", "nohash-hasher", + "profiling", + "smallvec", + "unicode-segmentation", ] [[package]] name = "egui-wgpu" -version = "0.26.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f2d75e1e70228e7126f828bac05f9fe0e7ea88e9660c8cebe609bb114c61d4" +checksum = "5e4d209971c84b2352a06174abdba701af1e552ce56b144d96f2bd50a3c91236" dependencies = [ + "ahash", "bytemuck", "document-features", "egui", "epaint", "log", - "thiserror 1.0.69", + "profiling", + "thiserror 2.0.18", "type-map", - "web-time 0.2.4", - "wgpu 0.19.4", + "web-time 1.1.0", + "wgpu 27.0.1", ] [[package]] name = "egui-winit" -version = "0.26.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4d44f8d89f70d4480545eb2346b76ea88c3022e9f4706cebc799dbe8b004a2" +checksum = "ec6687e5bb551702f4ad10ac428bab12acf9d53047ebb1082d4a0ed8c6251a29" dependencies = [ "egui", "log", - "raw-window-handle 0.6.2", - "web-time 0.2.4", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "profiling", + "raw-window-handle", + "web-time 1.1.0", "webbrowser", - "winit 0.29.15", + "winit 0.30.12", ] [[package]] @@ -918,9 +930,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "emath" -version = "0.26.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6916301ecf80448f786cdf3eb51d9dbdd831538732229d49119e2d4312eaaf09" +checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32" dependencies = [ "bytemuck", ] @@ -950,20 +962,28 @@ dependencies = [ [[package]] name = "epaint" -version = "0.26.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77b9fdf617dd7f58b0c8e6e9e4a1281f730cde0831d40547da446b2bb76a47af" +checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62" dependencies = [ "ab_glyph", "ahash", "bytemuck", "ecolor", "emath", + "epaint_default_fonts", "log", "nohash-hasher", "parking_lot", + "profiling", ] +[[package]] +name = "epaint_default_fonts" +version = "0.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fbe202b6578d3d56428fa185cdf114a05e49da05f477b3c7f0fbb221f1862" + [[package]] name = "equivalent" version = "1.0.2" @@ -1042,12 +1062,12 @@ version = "1.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04bc56dba2b1eddc0e1890b30eb65315484edcdae5044c3ee0e4dbd12c5e3694" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "crossbeam-channel", "fltk-sys", "once_cell", "paste", - "raw-window-handle 0.6.2", + "raw-window-handle", "ttf-parser", ] @@ -1401,7 +1421,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "futures-channel", "futures-core", "futures-executor", @@ -1501,7 +1521,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "gpu-alloc-types", ] @@ -1511,7 +1531,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", ] [[package]] @@ -1545,7 +1565,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "gpu-descriptor-types 0.1.2", "hashbrown 0.14.5", ] @@ -1556,7 +1576,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "gpu-descriptor-types 0.2.0", "hashbrown 0.15.5", ] @@ -1567,7 +1587,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", ] [[package]] @@ -1576,7 +1596,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", ] [[package]] @@ -1684,7 +1704,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "com", "libc", "libloading 0.8.8", @@ -1717,15 +1737,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "humantime" version = "2.2.0" @@ -2054,7 +2065,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "serde", "unicode-segmentation", ] @@ -2126,7 +2137,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "libc", "redox_syscall 0.5.17", ] @@ -2186,19 +2197,18 @@ checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lyon_geom" @@ -2259,7 +2269,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block", "core-graphics-types 0.1.3", "foreign-types", @@ -2274,7 +2284,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -2293,9 +2303,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "pixels 0.15.0", + "winit 0.30.12", + "winit_input_helper 0.17.0", ] [[package]] @@ -2391,7 +2401,7 @@ dependencies = [ "libxdo", "objc2 0.5.2", "objc2-app-kit", - "objc2-foundation", + "objc2-foundation 0.2.2", "once_cell", "png", "thiserror 1.0.69", @@ -2405,7 +2415,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ "bit-set 0.5.3", - "bitflags 2.9.2", + "bitflags 2.10.0", "codespan-reporting 0.11.1", "hexf-parse", "indexmap 2.10.0", @@ -2426,7 +2436,7 @@ checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set 0.8.0", - "bitflags 2.9.2", + "bitflags 2.10.0", "cfg-if", "cfg_aliases 0.2.1", "codespan-reporting 0.12.0", @@ -2450,12 +2460,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "jni-sys", "log", "ndk-sys 0.5.0+25.2.9519653", "num_enum", - "raw-window-handle 0.6.2", + "raw-window-handle", "thiserror 1.0.69", ] @@ -2465,12 +2475,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "jni-sys", "log", "ndk-sys 0.6.0+11769913", "num_enum", - "raw-window-handle 0.6.2", + "raw-window-handle", "thiserror 1.0.69", ] @@ -2504,7 +2514,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -2584,19 +2594,28 @@ dependencies = [ "objc2-encode 4.1.0", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode 4.1.0", +] + [[package]] name = "objc2-app-kit" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "libc", "objc2 0.5.2", "objc2-core-data", "objc2-core-image", - "objc2-foundation", + "objc2-foundation 0.2.2", "objc2-quartz-core", ] @@ -2606,11 +2625,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2621,7 +2640,7 @@ checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ "block2 0.5.1", "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2630,10 +2649,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2644,7 +2663,7 @@ checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ "block2 0.5.1", "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", "objc2-metal", ] @@ -2657,7 +2676,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.2", "objc2-contacts", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2678,13 +2697,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "dispatch", "libc", "objc2 0.5.2", ] +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", +] + [[package]] name = "objc2-link-presentation" version = "0.2.2" @@ -2694,7 +2723,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.2", "objc2-app-kit", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2703,10 +2732,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2715,10 +2744,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", "objc2-metal", ] @@ -2729,7 +2758,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2738,14 +2767,14 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit", "objc2-core-data", "objc2-core-image", "objc2-core-location", - "objc2-foundation", + "objc2-foundation 0.2.2", "objc2-link-presentation", "objc2-quartz-core", "objc2-symbols", @@ -2761,7 +2790,7 @@ checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ "block2 0.5.1", "objc2 0.5.2", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2770,11 +2799,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2846,9 +2875,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -2856,15 +2885,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall 0.5.17", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2933,7 +2962,7 @@ dependencies = [ "bytemuck", "pixels-mocks", "pollster", - "raw-window-handle 0.6.2", + "raw-window-handle", "thiserror 1.0.69", "ultraviolet 0.10.0", "wgpu 27.0.1", @@ -2948,7 +2977,7 @@ checksum = "518d43cd70c5381d4c7bd4bf47ee344beee99b58b0587adcb198cc713ff0dfb5" dependencies = [ "bytemuck", "pollster", - "raw-window-handle 0.6.2", + "raw-window-handle", "thiserror 1.0.69", "ultraviolet 0.9.2", "wgpu 0.19.4", @@ -2958,7 +2987,7 @@ dependencies = [ name = "pixels-mocks" version = "0.1.0" dependencies = [ - "raw-window-handle 0.6.2", + "raw-window-handle", ] [[package]] @@ -3151,12 +3180,6 @@ dependencies = [ "winit_input_helper 0.15.3", ] -[[package]] -name = "raw-window-handle" -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" @@ -3207,7 +3230,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", ] [[package]] @@ -3285,7 +3308,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3298,7 +3321,7 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.9.4", @@ -3381,18 +3404,28 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -3470,7 +3503,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "calloop 0.12.4", "calloop-wayland-source 0.2.0", "cursor-icon", @@ -3495,7 +3528,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "calloop 0.13.0", "calloop-wayland-source 0.3.0", "cursor-icon", @@ -3529,7 +3562,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", ] [[package]] @@ -3608,7 +3641,7 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3731d04d4ac210cd5f344087733943b9bfb1a32654387dad4d1c70de21aee2c9" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "cocoa", "core-foundation 0.10.1", "core-graphics 0.24.0", @@ -3629,7 +3662,7 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "raw-window-handle 0.6.2", + "raw-window-handle", "scopeguard", "tao-macros", "unicode-segmentation", @@ -4157,7 +4190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5309c1090e3e84dad0d382f42064e9933fdaedb87e468cc239f0eabea73ddcb6" dependencies = [ "ahash", - "bitflags 2.9.2", + "bitflags 2.10.0", "hashbrown 0.14.5", "indexmap 2.10.0", "semver", @@ -4184,7 +4217,7 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "rustix 1.0.8", "wayland-backend", "wayland-scanner", @@ -4196,7 +4229,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "cursor-icon", "wayland-backend", ] @@ -4218,7 +4251,7 @@ version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4230,7 +4263,7 @@ version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4242,7 +4275,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-protocols 0.31.2", @@ -4255,7 +4288,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-protocols 0.32.9", @@ -4268,7 +4301,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-protocols 0.31.2", @@ -4281,7 +4314,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-protocols 0.32.9", @@ -4343,17 +4376,16 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.15" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" +checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" dependencies = [ - "core-foundation 0.9.4", - "home", + "core-foundation 0.10.1", "jni", "log", "ndk-context", - "objc", - "raw-window-handle 0.5.2", + "objc2 0.6.3", + "objc2-foundation 0.3.2", "url", "web-sys", ] @@ -4372,7 +4404,7 @@ dependencies = [ "naga 0.19.2", "parking_lot", "profiling", - "raw-window-handle 0.6.2", + "raw-window-handle", "smallvec", "static_assertions", "wasm-bindgen", @@ -4390,7 +4422,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "bitflags 2.9.2", + "bitflags 2.10.0", "cfg-if", "cfg_aliases 0.2.1", "document-features", @@ -4401,7 +4433,7 @@ dependencies = [ "parking_lot", "portable-atomic", "profiling", - "raw-window-handle 0.6.2", + "raw-window-handle", "smallvec", "static_assertions", "wasm-bindgen", @@ -4420,7 +4452,7 @@ checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ "arrayvec", "bit-vec 0.6.3", - "bitflags 2.9.2", + "bitflags 2.10.0", "cfg_aliases 0.1.1", "codespan-reporting 0.11.1", "indexmap 2.10.0", @@ -4429,7 +4461,7 @@ dependencies = [ "once_cell", "parking_lot", "profiling", - "raw-window-handle 0.6.2", + "raw-window-handle", "rustc-hash 1.1.0", "smallvec", "thiserror 1.0.69", @@ -4447,7 +4479,7 @@ dependencies = [ "arrayvec", "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.2", + "bitflags 2.10.0", "bytemuck", "cfg_aliases 0.2.1", "document-features", @@ -4459,7 +4491,7 @@ dependencies = [ "parking_lot", "portable-atomic", "profiling", - "raw-window-handle 0.6.2", + "raw-window-handle", "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.18", @@ -4517,7 +4549,7 @@ dependencies = [ "arrayvec", "ash 0.37.3+1.3.251", "bit-set 0.5.3", - "bitflags 2.9.2", + "bitflags 2.10.0", "block", "cfg_aliases 0.1.1", "core-graphics-types 0.1.3", @@ -4541,7 +4573,7 @@ dependencies = [ "parking_lot", "profiling", "range-alloc", - "raw-window-handle 0.6.2", + "raw-window-handle", "renderdoc-sys", "rustc-hash 1.1.0", "smallvec", @@ -4562,7 +4594,7 @@ dependencies = [ "arrayvec", "ash 0.38.0+1.3.281", "bit-set 0.8.0", - "bitflags 2.9.2", + "bitflags 2.10.0", "block", "bytemuck", "cfg-if", @@ -4590,7 +4622,7 @@ dependencies = [ "portable-atomic-util", "profiling", "range-alloc", - "raw-window-handle 0.6.2", + "raw-window-handle", "renderdoc-sys", "smallvec", "thiserror 2.0.18", @@ -4607,7 +4639,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "js-sys", "web-sys", ] @@ -4618,7 +4650,7 @@ version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "bytemuck", "js-sys", "log", @@ -4743,6 +4775,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-result" version = "0.2.0" @@ -4859,7 +4897,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -4876,7 +4914,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -5068,7 +5106,7 @@ dependencies = [ "ahash", "android-activity 0.5.2", "atomic-waker", - "bitflags 2.9.2", + "bitflags 2.10.0", "bytemuck", "calloop 0.12.4", "cfg_aliases 0.1.1", @@ -5086,7 +5124,7 @@ dependencies = [ "once_cell", "orbclient", "percent-encoding", - "raw-window-handle 0.6.2", + "raw-window-handle", "redox_syscall 0.3.5", "rustix 0.38.44", "sctk-adwaita 0.8.3", @@ -5116,7 +5154,7 @@ dependencies = [ "ahash", "android-activity 0.6.0", "atomic-waker", - "bitflags 2.9.2", + "bitflags 2.10.0", "block2 0.5.1", "bytemuck", "calloop 0.13.0", @@ -5132,12 +5170,12 @@ dependencies = [ "ndk 0.9.0", "objc2 0.5.2", "objc2-app-kit", - "objc2-foundation", + "objc2-foundation 0.2.2", "objc2-ui-kit", "orbclient", "percent-encoding", "pin-project", - "raw-window-handle 0.6.2", + "raw-window-handle", "redox_syscall 0.4.1", "rustix 0.38.44", "sctk-adwaita 0.10.1", @@ -5194,7 +5232,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", ] [[package]] @@ -5257,7 +5295,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.10.0", "dlib", "log", "once_cell", diff --git a/examples/minimal-egui/Cargo.toml b/examples/minimal-egui/Cargo.toml index 0e3ebee..55e550a 100644 --- a/examples/minimal-egui/Cargo.toml +++ b/examples/minimal-egui/Cargo.toml @@ -10,13 +10,14 @@ optimize = ["log/release_max_level_warn"] default = ["optimize"] [dependencies] -egui = "0.26" -egui-wgpu = "0.26.0" -egui-winit = { version = "0.26", default-features = false, features = ["links"] } +pixels = { path = "../.." } +egui = "0.33" +egui-wgpu = "0.33.0" +egui-winit = { version = "0.33", default-features = false, features = ["links"] } +winit = "0.30" +winit_input_helper = "0.17" env_logger.workspace = true error-iter.workspace = true log.workspace = true -pixels.workspace = true -winit.workspace = true -winit_input_helper.workspace = true + diff --git a/examples/minimal-egui/src/gui.rs b/examples/minimal-egui/src/gui.rs index 4abb0ae..d324585 100644 --- a/examples/minimal-egui/src/gui.rs +++ b/examples/minimal-egui/src/gui.rs @@ -1,8 +1,7 @@ use egui::{ClippedPrimitive, Context, TexturesDelta, ViewportId}; -use egui_wgpu::{Renderer, ScreenDescriptor}; +use egui_wgpu::{Renderer, RendererOptions, ScreenDescriptor}; use pixels::{wgpu, PixelsContext}; -use winit::event_loop::EventLoopWindowTarget; -use winit::window::Window; +use winit::{event_loop::ActiveEventLoop, window::Window}; /// Manages all state required for rendering egui over `Pixels`. pub(crate) struct Framework { @@ -26,8 +25,8 @@ struct Gui { impl Framework { /// Create egui. - pub(crate) fn new( - event_loop: &EventLoopWindowTarget, + pub(crate) fn new( + event_loop: &ActiveEventLoop, width: u32, height: u32, scale_factor: f32, @@ -41,13 +40,18 @@ impl Framework { ViewportId::ROOT, event_loop, Some(scale_factor), + None, Some(max_texture_size), ); let screen_descriptor = ScreenDescriptor { size_in_pixels: [width, height], pixels_per_point: scale_factor, }; - let renderer = Renderer::new(pixels.device(), pixels.render_texture_format(), None, 1); + let renderer = Renderer::new( + pixels.device(), + pixels.render_texture_format(), + RendererOptions::default(), + ); let textures = TexturesDelta::default(); let gui = Gui::new(); @@ -118,20 +122,23 @@ impl Framework { // Render egui with WGPU { - let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: Some("egui"), - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: render_target, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Load, - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - timestamp_writes: None, - occlusion_query_set: None, - }); + let mut rpass = encoder + .begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("egui"), + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: render_target, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Load, + store: wgpu::StoreOp::Store, + }, + depth_slice: None, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }) + .forget_lifetime(); self.renderer .render(&mut rpass, &self.paint_jobs, &self.screen_descriptor); @@ -154,11 +161,11 @@ impl Gui { /// Create the UI using egui. fn ui(&mut self, ctx: &Context) { egui::TopBottomPanel::top("menubar_container").show(ctx, |ui| { - egui::menu::bar(ui, |ui| { + egui::MenuBar::new().ui(ui, |ui| { ui.menu_button("File", |ui| { if ui.button("About...").clicked() { self.window_open = true; - ui.close_menu(); + ui.close(); } }) }); diff --git a/examples/minimal-egui/src/main.rs b/examples/minimal-egui/src/main.rs index f0d86a0..3047cd6 100644 --- a/examples/minimal-egui/src/main.rs +++ b/examples/minimal-egui/src/main.rs @@ -1,6 +1,8 @@ #![deny(clippy::all)] #![forbid(unsafe_code)] +use std::sync::Arc; + use crate::gui::Framework; use error_iter::ErrorIter as _; use log::error; @@ -9,7 +11,7 @@ use winit::dpi::LogicalSize; use winit::event::{Event, WindowEvent}; use winit::event_loop::EventLoop; use winit::keyboard::KeyCode; -use winit::window::WindowBuilder; +use winit::window::WindowAttributes; use winit_input_helper::WinitInputHelper; mod gui; @@ -32,94 +34,114 @@ fn main() -> Result<(), Error> { let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() - .with_title("Hello Pixels + egui") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + Arc::new( + #[allow(deprecated)] + event_loop + .create_window( + WindowAttributes::new() + .with_title("Hello Pixels + egui") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; - let (mut pixels, mut framework) = { + let mut pixels = { let window_size = window.inner_size(); - let scale_factor = window.scale_factor() as f32; let surface_texture = SurfaceTexture::new(window_size.width, window_size.height, &window); - let pixels = Pixels::new(WIDTH, HEIGHT, surface_texture)?; - let framework = Framework::new( - &event_loop, - window_size.width, - window_size.height, - scale_factor, - &pixels, - ); - - (pixels, framework) + Pixels::new(WIDTH, HEIGHT, surface_texture)? }; let mut world = World::new(); + let mut framework: Option = None; - let res = event_loop.run(|event, elwt| { - // Handle input events - if input.update(&event) { - // Close events - if input.key_pressed(KeyCode::Escape) || input.close_requested() { - elwt.exit(); - return; + #[allow(deprecated)] + let res = event_loop.run(|event, event_loop| { + match event { + Event::Resumed => { + let window_size = window.inner_size(); + let scale_factor = (window.scale_factor()) as f32; + framework = Some(Framework::new( + event_loop, + window_size.width, + window_size.height, + scale_factor, + &pixels, + )); + window.request_redraw(); } - - // Update the scale factor - if let Some(scale_factor) = input.scale_factor() { - framework.scale_factor(scale_factor); + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); } - - // Resize the window - if let Some(size) = input.window_resized() { - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - elwt.exit(); + Event::WindowEvent { event, .. } => { + let Some(framework) = &mut framework else { return; + }; + + // Handle input events + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + event_loop.exit(); + return; + } + + // Update the scale factor + if let Some(scale_factor) = input.scale_factor() { + framework.scale_factor(scale_factor); + } + + // Resize the window + if let Some(size) = input.window_resized() { + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + event_loop.exit(); + return; + } + framework.resize(size.width, size.height); + } + + // Update internal state and request a redraw + world.update(); + window.request_redraw(); } - framework.resize(size.width, size.height); - } - // Update internal state and request a redraw - world.update(); - window.request_redraw(); - } - - match event { - // Draw the current frame - Event::WindowEvent { - event: WindowEvent::RedrawRequested, - .. - } => { - // Draw the world - world.draw(pixels.frame_mut()); - - // Prepare egui - framework.prepare(&window); - - // Render everything together - let render_result = pixels.render_with(|encoder, render_target, context| { - // Render the world texture - context.scaling_renderer.render(encoder, render_target); - - // Render egui - framework.render(encoder, render_target, context); - - Ok(()) - }); - - // Basic error handling - if let Err(err) = render_result { - log_error("pixels.render", err); - elwt.exit(); + match event { + // Draw the current frame + WindowEvent::RedrawRequested => { + // Draw the world + world.draw(pixels.frame_mut()); + + // Prepare egui + framework.prepare(&window); + + // Render everything together + let render_result = + pixels.render_with(|encoder, render_target, context| { + // Render the world texture + context.scaling_renderer.render(encoder, render_target); + + // Render egui + framework.render(encoder, render_target, context); + + Ok(()) + }); + + // Basic error handling + if let Err(err) = render_result { + log_error("pixels.render", err); + event_loop.exit(); + } + } + event => { + // Update egui inputs + framework.handle_event(&window, &event); + } } } - Event::WindowEvent { event, .. } => { - // Update egui inputs - framework.handle_event(&window, &event); - } - _ => (), + _ => {} } }); res.map_err(|e| Error::UserDefined(Box::new(e))) From 2ea17c17aa8330ab142df42934f8c316fa9252e4 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 00:23:27 +0000 Subject: [PATCH 07/19] Fix custom shaders example --- examples/custom-shader/src/renderers.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/custom-shader/src/renderers.rs b/examples/custom-shader/src/renderers.rs index ec72042..7465f18 100644 --- a/examples/custom-shader/src/renderers.rs +++ b/examples/custom-shader/src/renderers.rs @@ -126,15 +126,16 @@ impl NoiseRenderer { layout: Some(&pipeline_layout), vertex: wgpu::VertexState { module: &module, - entry_point: "vs_main", + entry_point: Some("vs_main"), buffers: &[vertex_buffer_layout], + compilation_options: wgpu::PipelineCompilationOptions::default(), }, primitive: wgpu::PrimitiveState::default(), depth_stencil: None, multisample: wgpu::MultisampleState::default(), fragment: Some(wgpu::FragmentState { module: &module, - entry_point: "fs_main", + entry_point: Some("fs_main"), targets: &[Some(wgpu::ColorTargetState { format: pixels.render_texture_format(), blend: Some(wgpu::BlendState { @@ -143,8 +144,10 @@ impl NoiseRenderer { }), write_mask: wgpu::ColorWrites::ALL, })], + compilation_options: wgpu::PipelineCompilationOptions::default(), }), multiview: None, + cache: None, }); Ok(Self { @@ -199,6 +202,7 @@ impl NoiseRenderer { load: wgpu::LoadOp::Clear(wgpu::Color::BLACK), store: wgpu::StoreOp::Store, }, + depth_slice: None, })], depth_stencil_attachment: None, timestamp_writes: None, From 8136c857e0b317a45ea6ddc740e98a3e5a2d4073 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:25:21 +0000 Subject: [PATCH 08/19] Fix conway example Signed-off-by: Nico Burns --- Cargo.lock | 527 +++++----------------------------- Cargo.toml | 8 +- examples/conway/src/main.rs | 211 +++++++------- examples/invaders/Cargo.toml | 2 +- examples/invaders/src/main.rs | 15 +- 5 files changed, 201 insertions(+), 562 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b851134..4d466ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,12 +46,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - [[package]] name = "android-activity" version = "0.5.2" @@ -150,22 +144,13 @@ 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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" -dependencies = [ - "libloading 0.7.4", -] - [[package]] name = "ash" version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.8.8", + "libloading", ] [[package]] @@ -209,30 +194,15 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec 0.6.3", -] - [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec 0.8.0", + "bit-vec", ] -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bit-vec" version = "0.8.0" @@ -522,16 +492,6 @@ dependencies = [ "objc", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "codespan-reporting" version = "0.12.0" @@ -543,37 +503,6 @@ dependencies = [ "unicode-width", ] -[[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_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" @@ -623,10 +552,10 @@ dependencies = [ "error-iter", "getrandom 0.2.16", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pixels", "randomize", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -766,20 +695,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winit 0.29.15", - "winit_input_helper 0.15.3", -] - -[[package]] -name = "d3d12" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" -dependencies = [ - "bitflags 2.10.0", - "libloading 0.8.8", - "winapi", + "pixels", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -811,7 +729,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.8", + "libloading", ] [[package]] @@ -901,7 +819,7 @@ dependencies = [ "thiserror 2.0.18", "type-map", "web-time 1.1.0", - "wgpu 27.0.1", + "wgpu", ] [[package]] @@ -1200,13 +1118,13 @@ dependencies = [ [[package]] name = "game-loop" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a06ba31889b085d08926f154e554ba0b87d6f6f5d11624ea3445e76df0d0028" +checksum = "c020a1b6923f4c24ecfc54968e13515522fe7b21b892f6a08daae53fb76d222a" dependencies = [ "wasm-bindgen", "web-sys", - "winit 0.29.15", + "winit 0.30.12", ] [[package]] @@ -1358,7 +1276,7 @@ dependencies = [ "vec_map", "wasm-bindgen", "web-sys", - "windows 0.58.0", + "windows", ] [[package]] @@ -1462,18 +1380,6 @@ dependencies = [ "system-deps", ] -[[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 = "glow" version = "0.16.0" @@ -1486,15 +1392,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "glutin_wgl_sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" -dependencies = [ - "gl_generator", -] - [[package]] name = "glutin_wgl_sys" version = "0.6.1" @@ -1534,19 +1431,6 @@ dependencies = [ "bitflags 2.10.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 1.0.69", - "winapi", - "windows 0.52.0", -] - [[package]] name = "gpu-allocator" version = "0.27.0" @@ -1556,18 +1440,7 @@ dependencies = [ "log", "presser", "thiserror 1.0.69", - "windows 0.58.0", -] - -[[package]] -name = "gpu-descriptor" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" -dependencies = [ - "bitflags 2.10.0", - "gpu-descriptor-types 0.1.2", - "hashbrown 0.14.5", + "windows", ] [[package]] @@ -1577,19 +1450,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ "bitflags 2.10.0", - "gpu-descriptor-types 0.2.0", + "gpu-descriptor-types", "hashbrown 0.15.5", ] -[[package]] -name = "gpu-descriptor-types" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" -dependencies = [ - "bitflags 2.10.0", -] - [[package]] name = "gpu-descriptor-types" version = "0.2.0" @@ -1676,7 +1540,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", - "allocator-api2", "serde", ] @@ -1698,21 +1561,6 @@ dependencies = [ "foldhash 0.2.0", ] -[[package]] -name = "hassle-rs" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" -dependencies = [ - "bitflags 2.10.0", - "com", - "libc", - "libloading 0.8.8", - "thiserror 1.0.69", - "widestring", - "winapi", -] - [[package]] name = "heck" version = "0.4.1" @@ -1904,7 +1752,7 @@ dependencies = [ "imgui", "log", "smallvec", - "wgpu 27.0.1", + "wgpu", ] [[package]] @@ -1917,9 +1765,9 @@ dependencies = [ "imgui-wgpu", "imgui-winit-support", "log", - "pixels 0.15.0", + "pixels", "winit 0.30.12", - "winit_input_helper 0.17.0", + "winit_input_helper", ] [[package]] @@ -1984,10 +1832,10 @@ dependencies = [ "getrandom 0.2.16", "gilrs", "log", - "pixels 0.15.0", + "pixels", "simple-invaders", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -2077,7 +1925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.8", + "libloading", "pkg-config", ] @@ -2105,16 +1953,6 @@ version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - [[package]] name = "libloading" version = "0.8.8" @@ -2263,21 +2101,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "metal" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" -dependencies = [ - "bitflags 2.10.0", - "block", - "core-graphics-types 0.1.3", - "foreign-types", - "log", - "objc", - "paste", -] - [[package]] name = "metal" version = "0.32.0" @@ -2303,9 +2126,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels 0.15.0", + "pixels", "winit 0.30.12", - "winit_input_helper 0.17.0", + "winit_input_helper", ] [[package]] @@ -2316,7 +2139,7 @@ dependencies = [ "error-iter", "fltk", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pixels", ] [[package]] @@ -2327,7 +2150,7 @@ dependencies = [ "error-iter", "log", "muda", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pixels", "tao", ] @@ -2340,13 +2163,13 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pixels", "pollster", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -2356,9 +2179,9 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "pixels", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -2368,8 +2191,8 @@ dependencies = [ "android_logger", "env_logger", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winit 0.29.15", + "pixels", + "winit 0.30.12", ] [[package]] @@ -2408,26 +2231,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "naga" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" -dependencies = [ - "bit-set 0.5.3", - "bitflags 2.10.0", - "codespan-reporting 0.11.1", - "hexf-parse", - "indexmap 2.10.0", - "log", - "num-traits", - "rustc-hash 1.1.0", - "spirv", - "termcolor", - "thiserror 1.0.69", - "unicode-xid", -] - [[package]] name = "naga" version = "27.0.3" @@ -2435,11 +2238,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", - "bit-set 0.8.0", + "bit-set", "bitflags 2.10.0", "cfg-if", "cfg_aliases 0.2.1", - "codespan-reporting 0.12.0", + "codespan-reporting", "half", "hashbrown 0.16.1", "hexf-parse", @@ -2565,7 +2368,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", ] [[package]] @@ -2806,15 +2608,6 @@ dependencies = [ "objc2-foundation 0.2.2", ] -[[package]] -name = "objc_exception" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" -dependencies = [ - "cc", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -2964,25 +2757,11 @@ dependencies = [ "pollster", "raw-window-handle", "thiserror 1.0.69", - "ultraviolet 0.10.0", - "wgpu 27.0.1", + "ultraviolet", + "wgpu", "winit 0.29.15", ] -[[package]] -name = "pixels" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518d43cd70c5381d4c7bd4bf47ee344beee99b58b0587adcb198cc713ff0dfb5" -dependencies = [ - "bytemuck", - "pollster", - "raw-window-handle", - "thiserror 1.0.69", - "ultraviolet 0.9.2", - "wgpu 0.19.4", -] - [[package]] name = "pixels-mocks" version = "0.1.0" @@ -3174,10 +2953,10 @@ dependencies = [ "error-iter", "euclid", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pixels", "raqote", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -3596,7 +3375,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", - "quote", "unicode-ident", ] @@ -3667,8 +3445,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows 0.58.0", - "windows-core 0.58.0", + "windows", + "windows-core", "windows-version", "x11-dl", ] @@ -3785,10 +3563,10 @@ dependencies = [ "env_logger", "error-iter", "log", - "pixels 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pixels", "tiny-skia", - "winit 0.29.15", - "winit_input_helper 0.15.3", + "winit 0.30.12", + "winit_input_helper", ] [[package]] @@ -3883,15 +3661,6 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" -[[package]] -name = "ultraviolet" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a28554d13eb5daba527cc1b91b6c341372a0ae45ed277ffb2c6fbc04f319d7e" -dependencies = [ - "wide", -] - [[package]] name = "ultraviolet" version = "0.10.0" @@ -3919,12 +3688,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "url" version = "2.5.4" @@ -4390,31 +4153,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wgpu" -version = "0.19.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" -dependencies = [ - "arrayvec", - "cfg-if", - "cfg_aliases 0.1.1", - "js-sys", - "log", - "naga 0.19.2", - "parking_lot", - "profiling", - "raw-window-handle", - "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]] name = "wgpu" version = "27.0.1" @@ -4429,7 +4167,7 @@ dependencies = [ "hashbrown 0.16.1", "js-sys", "log", - "naga 27.0.3", + "naga", "parking_lot", "portable-atomic", "profiling", @@ -4439,35 +4177,9 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core 27.0.3", - "wgpu-hal 27.0.4", - "wgpu-types 27.0.1", -] - -[[package]] -name = "wgpu-core" -version = "0.19.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" -dependencies = [ - "arrayvec", - "bit-vec 0.6.3", - "bitflags 2.10.0", - "cfg_aliases 0.1.1", - "codespan-reporting 0.11.1", - "indexmap 2.10.0", - "log", - "naga 0.19.2", - "once_cell", - "parking_lot", - "profiling", - "raw-window-handle", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 1.0.69", - "web-sys", - "wgpu-hal 0.19.5", - "wgpu-types 0.19.2", + "wgpu-core", + "wgpu-hal", + "wgpu-types", ] [[package]] @@ -4477,8 +4189,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", - "bit-set 0.8.0", - "bit-vec 0.8.0", + "bit-set", + "bit-vec", "bitflags 2.10.0", "bytemuck", "cfg_aliases 0.2.1", @@ -4486,7 +4198,7 @@ dependencies = [ "hashbrown 0.16.1", "indexmap 2.10.0", "log", - "naga 27.0.3", + "naga", "once_cell", "parking_lot", "portable-atomic", @@ -4499,8 +4211,8 @@ dependencies = [ "wgpu-core-deps-emscripten", "wgpu-core-deps-wasm", "wgpu-core-deps-windows-linux-android", - "wgpu-hal 27.0.4", - "wgpu-types 27.0.1", + "wgpu-hal", + "wgpu-types", ] [[package]] @@ -4509,7 +4221,7 @@ version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" dependencies = [ - "wgpu-hal 27.0.4", + "wgpu-hal", ] [[package]] @@ -4518,7 +4230,7 @@ version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" dependencies = [ - "wgpu-hal 27.0.4", + "wgpu-hal", ] [[package]] @@ -4527,7 +4239,7 @@ version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b1027dcf3b027a877e44819df7ceb0e2e98578830f8cd34cd6c3c7c2a7a50b7" dependencies = [ - "wgpu-hal 27.0.4", + "wgpu-hal", ] [[package]] @@ -4536,52 +4248,7 @@ version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" dependencies = [ - "wgpu-hal 27.0.4", -] - -[[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", - "ash 0.37.3+1.3.251", - "bit-set 0.5.3", - "bitflags 2.10.0", - "block", - "cfg_aliases 0.1.1", - "core-graphics-types 0.1.3", - "d3d12", - "glow 0.13.1", - "glutin_wgl_sys 0.5.0", - "gpu-alloc", - "gpu-allocator 0.25.0", - "gpu-descriptor 0.2.4", - "hassle-rs", - "js-sys", - "khronos-egl", - "libc", - "libloading 0.8.8", - "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", - "renderdoc-sys", - "rustc-hash 1.1.0", - "smallvec", - "thiserror 1.0.69", - "wasm-bindgen", - "web-sys", - "wgpu-types 0.19.2", - "winapi", + "wgpu-hal", ] [[package]] @@ -4592,27 +4259,27 @@ checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", "arrayvec", - "ash 0.38.0+1.3.281", - "bit-set 0.8.0", + "ash", + "bit-set", "bitflags 2.10.0", "block", "bytemuck", "cfg-if", "cfg_aliases 0.2.1", "core-graphics-types 0.2.0", - "glow 0.16.0", - "glutin_wgl_sys 0.6.1", + "glow", + "glutin_wgl_sys", "gpu-alloc", - "gpu-allocator 0.27.0", - "gpu-descriptor 0.3.2", + "gpu-allocator", + "gpu-descriptor", "hashbrown 0.16.1", "js-sys", "khronos-egl", "libc", - "libloading 0.8.8", + "libloading", "log", - "metal 0.32.0", - "naga 27.0.3", + "metal", + "naga", "ndk-sys 0.6.0+11769913", "objc", "once_cell", @@ -4628,20 +4295,9 @@ dependencies = [ "thiserror 2.0.18", "wasm-bindgen", "web-sys", - "wgpu-types 27.0.1", - "windows 0.58.0", - "windows-core 0.58.0", -] - -[[package]] -name = "wgpu-types" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" -dependencies = [ - "bitflags 2.10.0", - "js-sys", - "web-sys", + "wgpu-types", + "windows", + "windows-core", ] [[package]] @@ -4668,12 +4324,6 @@ dependencies = [ "safe_arch", ] -[[package]] -name = "widestring" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" - [[package]] name = "winapi" version = "0.3.9" @@ -4705,32 +4355,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "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-core", "windows-targets 0.52.6", ] @@ -5197,16 +4828,6 @@ dependencies = [ "xkbcommon-dl", ] -[[package]] -name = "winit_input_helper" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8c438d722f4ce69f261e0206072b51a8ac80af1ad6bf7e3dc5c25b5d8483a3" -dependencies = [ - "web-time 1.1.0", - "winit 0.29.15", -] - [[package]] name = "winit_input_helper" version = "0.17.0" @@ -5271,7 +4892,7 @@ dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.8", + "libloading", "once_cell", "rustix 0.38.44", "x11rb-protocol", diff --git a/Cargo.toml b/Cargo.toml index fdb2551..f08d21d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,13 +48,13 @@ members = [ env_logger = "0.10" error-iter = "0.4" log = "0.4" -winit = "0.29" -winit_input_helper = "0.15" +winit = "0.30" +winit_input_helper = "0.17" # Note that `pixels` is pinned to a published version to allow users to copy working code from the # examples into their own projects. The example packages that use this workspace version will not be # able to build against the local working copy while developing by default. # # Temporarily change the dependency to use a path specification while testing in development. -pixels = "0.15" -# pixels = { path = "." } +# pixels = "0.15" +pixels = { path = "." } diff --git a/examples/conway/src/main.rs b/examples/conway/src/main.rs index 395e7e8..c929be5 100644 --- a/examples/conway/src/main.rs +++ b/examples/conway/src/main.rs @@ -1,15 +1,17 @@ #![deny(clippy::all)] #![forbid(unsafe_code)] +use std::sync::Arc; + use error_iter::ErrorIter as _; use log::{debug, error}; use pixels::{Error, Pixels, SurfaceTexture}; use winit::{ dpi::LogicalSize, - event::{Event, WindowEvent}, + event::{Event, MouseButton, WindowEvent}, event_loop::EventLoop, keyboard::KeyCode, - window::WindowBuilder, + window::Window, }; use winit_input_helper::WinitInputHelper; @@ -24,12 +26,17 @@ 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() - .with_title("Conway's Game of Life") - .with_inner_size(scaled_size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("Conway's Game of Life") + .with_inner_size(scaled_size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let mut pixels = { @@ -43,101 +50,109 @@ fn main() -> Result<(), Error> { let mut draw_state: Option = None; + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { - // The one and only event that winit_input_helper doesn't have for us... - if let Event::WindowEvent { - event: WindowEvent::RedrawRequested, - .. - } = event - { - life.draw(pixels.frame_mut()); - if let Err(err) = pixels.render() { - log_error("pixels.render", err); - elwt.exit(); - return; - } - } - - // For everything else, for let winit_input_helper collect events to build its state. - // 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(KeyCode::Escape) || input.close_requested() { - elwt.exit(); - return; - } - if input.key_pressed(KeyCode::KeyP) { - paused = !paused; - } - if input.key_pressed_os(KeyCode::Space) { - // Space is frame-step, so ensure we're paused - paused = true; + match event { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); } - 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 - .cursor() - .map(|(mx, my)| { - let (dx, dy) = input.cursor_diff(); - let prev_x = mx - dx; - let prev_y = my - dy; - - let (mx_i, my_i) = pixels - .window_pos_to_pixel((mx, my)) - .unwrap_or_else(|pos| pixels.clamp_pixel_pos(pos)); - - let (px_i, py_i) = pixels - .window_pos_to_pixel((prev_x, prev_y)) - .unwrap_or_else(|pos| pixels.clamp_pixel_pos(pos)); - - ( - (mx_i as isize, my_i as isize), - (px_i as isize, py_i as isize), - ) - }) - .unwrap_or_default(); - - if input.mouse_pressed(0) { - debug!("Mouse click at {mouse_cell:?}"); - draw_state = Some(life.toggle(mouse_cell.0, mouse_cell.1)); - } else if let Some(draw_alive) = draw_state { - let release = input.mouse_released(0); - let held = input.mouse_held(0); - debug!("Draw at {mouse_prev_cell:?} => {mouse_cell:?}"); - debug!("Mouse held {held:?}, release {release:?}"); - // If they either released (finishing the drawing) or are still - // in the middle of drawing, keep going. - if release || held { - debug!("Draw line of {draw_alive:?}"); - life.set_line( - mouse_prev_cell.0, - mouse_prev_cell.1, - mouse_cell.0, - mouse_cell.1, - draw_alive, - ); - } - // If they let go or are otherwise not clicking anymore, stop drawing. - if release || !held { - debug!("Draw end"); - draw_state = None; + Event::WindowEvent { event, .. } => { + // The one and only event that winit_input_helper doesn't have for us... + if event == WindowEvent::RedrawRequested { + life.draw(pixels.frame_mut()); + if let Err(err) = pixels.render() { + log_error("pixels.render", err); + elwt.exit(); + return; + } } - } - // Resize the window - if let Some(size) = input.window_resized() { - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - elwt.exit(); - return; + + // For everything else, for let winit_input_helper collect events to build its state. + // It returns `true` when it is time to update our game state and request a redraw. + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); + return; + } + if input.key_pressed(KeyCode::KeyP) { + paused = !paused; + } + if input.key_pressed_os(KeyCode::Space) { + // Space is frame-step, so ensure we're paused + paused = true; + } + 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 + .cursor() + .map(|(mx, my)| { + let (dx, dy) = input.cursor_diff(); + let prev_x = mx - dx; + let prev_y = my - dy; + + let (mx_i, my_i) = pixels + .window_pos_to_pixel((mx, my)) + .unwrap_or_else(|pos| pixels.clamp_pixel_pos(pos)); + + let (px_i, py_i) = pixels + .window_pos_to_pixel((prev_x, prev_y)) + .unwrap_or_else(|pos| pixels.clamp_pixel_pos(pos)); + + ( + (mx_i as isize, my_i as isize), + (px_i as isize, py_i as isize), + ) + }) + .unwrap_or_default(); + + if input.mouse_pressed(MouseButton::Left) { + debug!("Mouse click at {mouse_cell:?}"); + draw_state = Some(life.toggle(mouse_cell.0, mouse_cell.1)); + } else if let Some(draw_alive) = draw_state { + let release = input.mouse_released(MouseButton::Left); + let held = input.mouse_held(MouseButton::Left); + debug!("Draw at {mouse_prev_cell:?} => {mouse_cell:?}"); + debug!("Mouse held {held:?}, release {release:?}"); + // If they either released (finishing the drawing) or are still + // in the middle of drawing, keep going. + if release || held { + debug!("Draw line of {draw_alive:?}"); + life.set_line( + mouse_prev_cell.0, + mouse_prev_cell.1, + mouse_cell.0, + mouse_cell.1, + draw_alive, + ); + } + // If they let go or are otherwise not clicking anymore, stop drawing. + if release || !held { + debug!("Draw end"); + draw_state = None; + } + } + // Resize the window + if let Some(size) = input.window_resized() { + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + elwt.exit(); + return; + } + } + if !paused || input.key_pressed_os(KeyCode::Space) { + life.update(); + } + window.request_redraw(); } } - if !paused || input.key_pressed_os(KeyCode::Space) { - life.update(); - } - window.request_redraw(); + _ => {} } }); res.map_err(|e| Error::UserDefined(Box::new(e))) diff --git a/examples/invaders/Cargo.toml b/examples/invaders/Cargo.toml index 89d2152..e320d48 100644 --- a/examples/invaders/Cargo.toml +++ b/examples/invaders/Cargo.toml @@ -11,7 +11,7 @@ default = ["optimize"] [dependencies] byteorder = "1" -game-loop = { version = "=1.1.0", features = ["winit"] } +game-loop = { version = "=1.3.0", features = ["winit"] } getrandom = "0.2" gilrs = "0.10" pixels = { path = "../.." } diff --git a/examples/invaders/src/main.rs b/examples/invaders/src/main.rs index 658ca78..2d24b73 100644 --- a/examples/invaders/src/main.rs +++ b/examples/invaders/src/main.rs @@ -9,7 +9,7 @@ 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_loop::EventLoop, keyboard::KeyCode, window::WindowBuilder}; +use winit::{dpi::LogicalSize, event_loop::EventLoop, keyboard::KeyCode, window::WindowAttributes}; use winit_input_helper::WinitInputHelper; /// Uber-struct representing the entire game. @@ -113,11 +113,14 @@ 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); - let window = WindowBuilder::new() - .with_title("pixel invaders") - .with_inner_size(scaled_size) - .with_min_inner_size(size) - .build(&event_loop) + #[allow(deprecated)] + let window = event_loop + .create_window( + WindowAttributes::new() + .with_title("pixel invaders") + .with_inner_size(scaled_size) + .with_min_inner_size(size), + ) .unwrap(); Arc::new(window) }; From efd0f1b92fe594dcb1ff19f4a0098ef76977cfbe Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:27:52 +0000 Subject: [PATCH 09/19] Fix custom shader example Signed-off-by: Nico Burns --- examples/custom-shader/src/main.rs | 129 +++++++++++++++++------------ 1 file changed, 74 insertions(+), 55 deletions(-) diff --git a/examples/custom-shader/src/main.rs b/examples/custom-shader/src/main.rs index 7040bca..2a607d9 100644 --- a/examples/custom-shader/src/main.rs +++ b/examples/custom-shader/src/main.rs @@ -1,6 +1,8 @@ #![deny(clippy::all)] #![forbid(unsafe_code)] +use std::sync::Arc; + use crate::renderers::NoiseRenderer; use error_iter::ErrorIter as _; use log::error; @@ -9,7 +11,7 @@ use winit::dpi::LogicalSize; use winit::event::{Event, WindowEvent}; use winit::event_loop::EventLoop; use winit::keyboard::KeyCode; -use winit::window::WindowBuilder; +use winit::window::Window; use winit_input_helper::WinitInputHelper; mod renderers; @@ -32,12 +34,17 @@ fn main() -> Result<(), Error> { let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() - .with_title("Custom Shader") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("Custom Shader") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let window_size = window.inner_size(); @@ -49,59 +56,71 @@ fn main() -> Result<(), Error> { let mut time = 0.0; let mut noise_renderer = NoiseRenderer::new(&pixels, window_size.width, window_size.height)?; + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { - // Draw the current frame - if let Event::WindowEvent { - event: WindowEvent::RedrawRequested, - .. - } = event - { - world.draw(pixels.frame_mut()); - - let render_result = pixels.render_with(|encoder, render_target, context| { - let noise_texture = noise_renderer.texture_view(); - context.scaling_renderer.render(encoder, noise_texture); - - noise_renderer.update(&context.queue, time); - time += 0.01; - - noise_renderer.render(encoder, render_target, context.scaling_renderer.clip_rect()); - - Ok(()) - }); - - if let Err(err) = render_result { - log_error("pixels.render_with", err); - elwt.exit(); - return; - } - } - - // Handle input events - if input.update(&event) { - // Close events - if input.key_pressed(KeyCode::Escape) || input.close_requested() { - elwt.exit(); - return; + match event { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); } - - // Resize the window - if let Some(size) = input.window_resized() { - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - elwt.exit(); - return; + Event::WindowEvent { event, .. } => { + // Draw the current frame + if event == WindowEvent::RedrawRequested { + world.draw(pixels.frame_mut()); + + let render_result = pixels.render_with(|encoder, render_target, context| { + let noise_texture = noise_renderer.texture_view(); + context.scaling_renderer.render(encoder, noise_texture); + + noise_renderer.update(&context.queue, time); + time += 0.01; + + noise_renderer.render( + encoder, + render_target, + context.scaling_renderer.clip_rect(), + ); + + Ok(()) + }); + + if let Err(err) = render_result { + log_error("pixels.render_with", err); + elwt.exit(); + return; + } } - if let Err(err) = noise_renderer.resize(&pixels, size.width, size.height) { - log_error("noise_renderer.resize", err); - elwt.exit(); - return; + + // Handle input events + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); + return; + } + + // Resize the window + if let Some(size) = input.window_resized() { + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + elwt.exit(); + return; + } + if let Err(err) = noise_renderer.resize(&pixels, size.width, size.height) { + log_error("noise_renderer.resize", err); + elwt.exit(); + return; + } + } + + // Update internal state and request a redraw + world.update(); + window.request_redraw(); } } - - // Update internal state and request a redraw - world.update(); - window.request_redraw(); + _ => {} } }); res.map_err(|e| Error::UserDefined(Box::new(e))) From e56f8b76b6804ddc2ccf249316cd6446bcfe79aa Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:31:11 +0000 Subject: [PATCH 10/19] Fix raqote example Signed-off-by: Nico Burns --- examples/raqote-winit/src/main.rs | 108 +++++++++++++++++------------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/examples/raqote-winit/src/main.rs b/examples/raqote-winit/src/main.rs index 5661bfd..4b185ea 100644 --- a/examples/raqote-winit/src/main.rs +++ b/examples/raqote-winit/src/main.rs @@ -5,12 +5,13 @@ use crate::shapes::Shapes; use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; +use std::sync::Arc; use std::time::Instant; use winit::dpi::LogicalSize; use winit::event::{Event, WindowEvent}; use winit::event_loop::EventLoop; use winit::keyboard::KeyCode; -use winit::window::WindowBuilder; +use winit::window::Window; use winit_input_helper::WinitInputHelper; mod shapes; @@ -24,12 +25,17 @@ fn main() -> Result<(), Error> { let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() - .with_title("Hello Raqote") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("Hello Raqote") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let (mut pixels, mut shapes) = { @@ -44,53 +50,61 @@ fn main() -> Result<(), Error> { let mut now = Instant::now(); + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { - // Draw the current frame - if let Event::WindowEvent { - event: WindowEvent::RedrawRequested, - .. - } = event - { - for (dst, &src) in pixels - .frame_mut() - .chunks_exact_mut(4) - .zip(shapes.frame().iter()) - { - dst[0] = (src >> 16) as u8; - dst[1] = (src >> 8) as u8; - dst[2] = src as u8; - dst[3] = (src >> 24) as u8; + match event { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); } + Event::WindowEvent { event, .. } => { + // Draw the current frame + if event == WindowEvent::RedrawRequested { + for (dst, &src) in pixels + .frame_mut() + .chunks_exact_mut(4) + .zip(shapes.frame().iter()) + { + dst[0] = (src >> 16) as u8; + dst[1] = (src >> 8) as u8; + dst[2] = src as u8; + dst[3] = (src >> 24) as u8; + } - if let Err(err) = pixels.render() { - log_error("pixels.render", err); - elwt.exit(); - return; - } - } + if let Err(err) = pixels.render() { + log_error("pixels.render", err); + elwt.exit(); + return; + } + } - // Handle input events - if input.update(&event) { - // Close events - if input.key_pressed(KeyCode::Escape) || input.close_requested() { - elwt.exit(); - return; - } + // Handle input events + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); + return; + } - // Resize the window - if let Some(size) = input.window_resized() { - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - elwt.exit(); - return; - } - } + // Resize the window + if let Some(size) = input.window_resized() { + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + elwt.exit(); + return; + } + } - // Update internal state and request a redraw - shapes.draw(now.elapsed().as_secs_f32()); - window.request_redraw(); + // Update internal state and request a redraw + shapes.draw(now.elapsed().as_secs_f32()); + window.request_redraw(); - now = Instant::now(); + now = Instant::now(); + } + } + _ => {} } }); res.map_err(|e| Error::UserDefined(Box::new(e))) From d79d44924b42925ec56644b3beba626952705918 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:33:46 +0000 Subject: [PATCH 11/19] Fix tiny-skia example Signed-off-by: Nico Burns --- examples/tiny-skia-winit/src/main.rs | 86 ++++++++++++++++------------ 1 file changed, 50 insertions(+), 36 deletions(-) diff --git a/examples/tiny-skia-winit/src/main.rs b/examples/tiny-skia-winit/src/main.rs index 62cf9ca..eb6a52c 100644 --- a/examples/tiny-skia-winit/src/main.rs +++ b/examples/tiny-skia-winit/src/main.rs @@ -4,13 +4,14 @@ use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; +use std::sync::Arc; use std::time::Instant; use tiny_skia::Pixmap; use winit::dpi::LogicalSize; use winit::event::{Event, WindowEvent}; use winit::event_loop::EventLoop; use winit::keyboard::KeyCode; -use winit::window::WindowBuilder; +use winit::window::Window; use winit_input_helper::WinitInputHelper; mod shape; @@ -24,12 +25,17 @@ fn main() -> Result<(), Error> { let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() - .with_title("Hello tiny-skia") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("Hello tiny-skia") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let mut pixels = { @@ -42,41 +48,49 @@ fn main() -> Result<(), Error> { let mut drawing = Pixmap::new(WIDTH, HEIGHT).unwrap(); let now = Instant::now(); + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { - // Draw the current frame - 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); - elwt.exit(); - return; + match event { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); } - } + Event::WindowEvent { event, .. } => { + // Draw the current frame + if event == WindowEvent::RedrawRequested { + pixels.frame_mut().copy_from_slice(drawing.data()); + if let Err(err) = pixels.render() { + log_error("pixels.render", err); + elwt.exit(); + return; + } + } - // Handle input events - if input.update(&event) { - // Close events - if input.key_pressed(KeyCode::Escape) || input.close_requested() { - elwt.exit(); - return; - } + // Handle input events + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); + return; + } - // Resize the window - if let Some(size) = input.window_resized() { - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - elwt.exit(); - return; + // Resize the window + if let Some(size) = input.window_resized() { + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + elwt.exit(); + return; + } + } + + // Update internal state and request a redraw + shape::draw(&mut drawing, now.elapsed().as_secs_f32()); + window.request_redraw(); } } - - // Update internal state and request a redraw - shape::draw(&mut drawing, now.elapsed().as_secs_f32()); - window.request_redraw(); + _ => {} } }); res.map_err(|e| Error::UserDefined(Box::new(e))) From 869bc0618d3a24fb899d3bbd9f6b9e9f153cb1c3 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:38:31 +0000 Subject: [PATCH 12/19] Fix minimal-winit example Signed-off-by: Nico Burns --- examples/minimal-winit/src/main.rs | 89 +++++++++++++++++------------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/examples/minimal-winit/src/main.rs b/examples/minimal-winit/src/main.rs index ac3d618..d8910d1 100644 --- a/examples/minimal-winit/src/main.rs +++ b/examples/minimal-winit/src/main.rs @@ -1,6 +1,8 @@ #![deny(clippy::all)] #![forbid(unsafe_code)] +use std::sync::Arc; + use error_iter::ErrorIter as _; use log::error; use pixels::{Error, Pixels, SurfaceTexture}; @@ -8,7 +10,7 @@ use winit::dpi::LogicalSize; use winit::event::{Event, WindowEvent}; use winit::event_loop::EventLoop; use winit::keyboard::KeyCode; -use winit::window::WindowBuilder; +use winit::window::Window; use winit_input_helper::WinitInputHelper; const WIDTH: u32 = 320; @@ -29,12 +31,17 @@ fn main() -> Result<(), Error> { let mut input = WinitInputHelper::new(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() - .with_title("Hello Pixels") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .unwrap() + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("Hello Pixels") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let mut pixels = { @@ -44,41 +51,49 @@ fn main() -> Result<(), Error> { }; let mut world = World::new(); + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { - // Draw the current frame - if let Event::WindowEvent { - event: WindowEvent::RedrawRequested, - .. - } = event - { - world.draw(pixels.frame_mut()); - if let Err(err) = pixels.render() { - log_error("pixels.render", err); - elwt.exit(); - return; - } - } - - // Handle input events - if input.update(&event) { - // Close events - if input.key_pressed(KeyCode::Escape) || input.close_requested() { - elwt.exit(); - return; + match event { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); } + Event::WindowEvent { event, .. } => { + // Draw the current frame + if event == WindowEvent::RedrawRequested { + world.draw(pixels.frame_mut()); + if let Err(err) = pixels.render() { + log_error("pixels.render", err); + elwt.exit(); + return; + } + } - // Resize the window - if let Some(size) = input.window_resized() { - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - elwt.exit(); - return; + // Handle input events + if input.process_window_event(&event) { + // Close events + if input.key_pressed(KeyCode::Escape) || input.close_requested() { + elwt.exit(); + return; + } + + // Resize the window + if let Some(size) = input.window_resized() { + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + elwt.exit(); + return; + } + } + + // Update internal state and request a redraw + world.update(); + window.request_redraw(); } } - - // Update internal state and request a redraw - world.update(); - window.request_redraw(); + _ => {} } }); res.map_err(|e| Error::UserDefined(Box::new(e))) From 8f7a6ab2b87ed61330eccbcd37628876a60a23ff Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:47:52 +0000 Subject: [PATCH 13/19] Fix minimal-web example Signed-off-by: Nico Burns --- examples/minimal-web/src/main.rs | 78 ++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/examples/minimal-web/src/main.rs b/examples/minimal-web/src/main.rs index 98ae352..69c3ff7 100644 --- a/examples/minimal-web/src/main.rs +++ b/examples/minimal-web/src/main.rs @@ -5,11 +5,12 @@ use error_iter::ErrorIter as _; use log::error; use pixels::{PixelsBuilder, SurfaceTexture}; use std::rc::Rc; +use std::sync::Arc; use winit::dpi::LogicalSize; use winit::event::{Event, WindowEvent}; use winit::event_loop::EventLoop; use winit::keyboard::KeyCode; -use winit::window::WindowBuilder; +use winit::window::Window; use winit_input_helper::WinitInputHelper; const WIDTH: u32 = 320; @@ -55,12 +56,17 @@ async fn run() { let event_loop = EventLoop::new().unwrap(); let window = { let size = LogicalSize::new(WIDTH as f64, HEIGHT as f64); - WindowBuilder::new() - .with_title("Hello Pixels + Web") - .with_inner_size(size) - .with_min_inner_size(size) - .build(&event_loop) - .expect("WindowBuilder error") + #[allow(deprecated)] + Arc::new( + event_loop + .create_window( + Window::default_attributes() + .with_title("Hello Pixels + Web") + .with_inner_size(size) + .with_min_inner_size(size), + ) + .unwrap(), + ) }; let window = Rc::new(window); @@ -123,44 +129,48 @@ async fn run() { }; let mut world = World::new(); + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { match event { - Event::WindowEvent { - event: WindowEvent::RedrawRequested, - .. - } => { + Event::Resumed => {} + Event::NewEvents(_) => input.step(), + Event::AboutToWait => input.end_step(), + Event::DeviceEvent { event, .. } => { + input.process_device_event(&event); + } + Event::WindowEvent { event, .. } => { // Draw the current frame - world.draw(pixels.frame_mut()); - if let Err(err) = pixels.render() { - log_error("pixels.render", err); - elwt.exit(); - return; + if event == WindowEvent::RedrawRequested { + world.draw(pixels.frame_mut()); + if let Err(err) = pixels.render() { + log_error("pixels.render", err); + elwt.exit(); + return; + } + + // Update internal state and request a redraw + world.update(); + window.request_redraw(); } - // Update internal state and request a redraw - world.update(); - window.request_redraw(); - } + if let WindowEvent::Resized(size) = event { + // Resize the window + if let Err(err) = pixels.resize_surface(size.width, size.height) { + log_error("pixels.resize_surface", err); + elwt.exit(); + return; + } + } - Event::WindowEvent { - event: WindowEvent::Resized(size), - .. - } => { - // Resize the window - if let Err(err) = pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); + // Handle input events + if input.process_window_event(&event) + && (input.key_pressed(KeyCode::Escape) || input.close_requested()) + { elwt.exit(); - return; } } - _ => (), } - - // Handle input events - if input.update(&event) && (input.key_pressed(KeyCode::Escape) || input.close_requested()) { - elwt.exit(); - } }); res.unwrap(); } From eaa35013e4ccd0968f620442605812ecec17fc65 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:53:36 +0000 Subject: [PATCH 14/19] Fix minimal-winit-android example Signed-off-by: Nico Burns --- examples/minimal-winit-android/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/minimal-winit-android/src/lib.rs b/examples/minimal-winit-android/src/lib.rs index da2e501..eb7c58b 100644 --- a/examples/minimal-winit-android/src/lib.rs +++ b/examples/minimal-winit-android/src/lib.rs @@ -31,11 +31,12 @@ pub fn _main(event_loop: EventLoop<()>) { let mut display = None; let mut world = World::new(); + #[allow(deprecated)] let res = event_loop.run(|event, elwt| { elwt.set_control_flow(ControlFlow::Wait); match event { Event::Resumed => { - let window = Arc::new(Window::new(elwt).unwrap()); + let window = Arc::new(elwt.create_window(Window::default_attributes()).unwrap()); let pixels = { let window_size = window.inner_size(); let surface_texture = SurfaceTexture::new( From a515a24353762c64ec06a1567320b693be2fe306 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:53:43 +0000 Subject: [PATCH 15/19] Fix invaders example Signed-off-by: Nico Burns --- examples/invaders/src/main.rs | 59 ++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/examples/invaders/src/main.rs b/examples/invaders/src/main.rs index 2d24b73..b8b3676 100644 --- a/examples/invaders/src/main.rs +++ b/examples/invaders/src/main.rs @@ -9,7 +9,10 @@ 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_loop::EventLoop, keyboard::KeyCode, window::WindowAttributes}; +use winit::{ + dpi::LogicalSize, event::Event, event_loop::EventLoop, keyboard::KeyCode, + window::WindowAttributes, +}; use winit_input_helper::WinitInputHelper; /// Uber-struct representing the entire game. @@ -165,29 +168,43 @@ fn main() -> Result<(), Error> { } }, |g, event| { - // Let winit_input_helper collect events to build its state. - if g.game.input.update(event) { - // Update controls - g.game.update_controls(); - - // Close events - if g.game.input.key_pressed(KeyCode::Escape) || g.game.input.close_requested() { - g.exit(); - return; + match event { + Event::Resumed => {} + Event::NewEvents(_) => g.game.input.step(), + Event::AboutToWait => g.game.input.end_step(), + Event::DeviceEvent { event, .. } => { + g.game.input.process_device_event(event); } - - // Reset game - if g.game.input.key_pressed(KeyCode::KeyR) { - g.game.reset_game(); - } - - // Resize the window - if let Some(size) = g.game.input.window_resized() { - if let Err(err) = g.game.pixels.resize_surface(size.width, size.height) { - log_error("pixels.resize_surface", err); - g.exit(); + Event::WindowEvent { event, .. } => { + // Let winit_input_helper collect events to build its state. + if g.game.input.process_window_event(event) { + // Update controls + g.game.update_controls(); + + // Close events + if g.game.input.key_pressed(KeyCode::Escape) + || g.game.input.close_requested() + { + g.exit(); + return; + } + + // Reset game + if g.game.input.key_pressed(KeyCode::KeyR) { + g.game.reset_game(); + } + + // Resize the window + if let Some(size) = g.game.input.window_resized() { + if let Err(err) = g.game.pixels.resize_surface(size.width, size.height) + { + log_error("pixels.resize_surface", err); + g.exit(); + } + } } } + _ => {} } }, ); From 87dc442a0752145ae76353e580cbf9c419b5295c Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:54:37 +0000 Subject: [PATCH 16/19] Fix documentation of P010 format Signed-off-by: Nico Burns --- src/builder.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/builder.rs b/src/builder.rs index 8e7347f..6dcc4a3 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -648,6 +648,10 @@ const fn texture_format_size(texture_format: wgpu::TextureFormat) -> f32 { // 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 - P010 => 3.0 // Double NV12? + // 16-bit two-plane 4:2:0 YUV + // The first plane consists of 16-bit G components. + // The second plane consists of 32-bit BR components. + // The resolution of the second plane is halved both vertically and horizontally. + P010 => 3.0, // (16.0 + 32.0 / 2.0 / 2.0) / 8.0 } } From 313aeee09500fdc45c41fc677baee20564b2a4e5 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 17:58:07 +0000 Subject: [PATCH 17/19] Update pixels-ci-rust-version Signed-off-by: Nico Burns --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd77dbd..ed8f175 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -174,7 +174,7 @@ jobs: strategy: matrix: rust: - - 1.74.0 + - 1.88.0 steps: - name: Checkout sources uses: actions/checkout@v3 From f9dcae87357fc0ab801cb7f984e1adf1ca6ae259 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 20:29:59 +0000 Subject: [PATCH 18/19] Fix clippy lints on android Signed-off-by: Nico Burns --- examples/minimal-winit-android/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/minimal-winit-android/src/lib.rs b/examples/minimal-winit-android/src/lib.rs index eb7c58b..d0c8262 100644 --- a/examples/minimal-winit-android/src/lib.rs +++ b/examples/minimal-winit-android/src/lib.rs @@ -127,11 +127,11 @@ impl World { #[no_mangle] fn android_main(app: AndroidApp) { use android_logger::Config; - use winit::event_loop::EventLoopBuilder; + use winit::event_loop::EventLoop; use winit::platform::android::EventLoopBuilderExtAndroid; android_logger::init_once(Config::default().with_max_level(log::LevelFilter::Info)); - let event_loop = EventLoopBuilder::new() + let event_loop = EventLoop::builder() .with_android_app(app) .build() .unwrap(); From a9a8115ce96be5e60e625ff16b61f41515c65da5 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 19 Jan 2026 21:42:05 +0000 Subject: [PATCH 19/19] cargo fmt Signed-off-by: Nico Burns --- examples/minimal-winit-android/src/lib.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/minimal-winit-android/src/lib.rs b/examples/minimal-winit-android/src/lib.rs index d0c8262..5a09d4b 100644 --- a/examples/minimal-winit-android/src/lib.rs +++ b/examples/minimal-winit-android/src/lib.rs @@ -131,10 +131,7 @@ fn android_main(app: AndroidApp) { use winit::platform::android::EventLoopBuilderExtAndroid; android_logger::init_once(Config::default().with_max_level(log::LevelFilter::Info)); - let event_loop = EventLoop::builder() - .with_android_app(app) - .build() - .unwrap(); + let event_loop = EventLoop::builder().with_android_app(app).build().unwrap(); log::info!("Hello from android!"); _main(event_loop); }