From 43288fc71f67696ac91da5a574012b1f011d66e1 Mon Sep 17 00:00:00 2001 From: Simon Gellis Date: Sun, 3 Aug 2025 14:11:33 -0400 Subject: [PATCH] Update egui/wgpu one major version --- Cargo.lock | 158 ++++++++++++++++++++++++++++++-------------- Cargo.toml | 12 ++-- src/app.rs | 44 ++++++------ src/graphics.rs | 8 +-- src/window/utils.rs | 42 +++++------- 5 files changed, 162 insertions(+), 102 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 08cdf3a..6b2db86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -187,12 +187,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227" dependencies = [ "clipboard-win", + "image", "log", "objc2 0.6.1", "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-core-graphics", "objc2-foundation 0.3.1", "parking_lot", "percent-encoding", + "windows-sys 0.59.0", "x11rb", ] @@ -630,12 +634,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -950,9 +948,9 @@ dependencies = [ [[package]] name = "ecolor" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d72e9c39f6e11a2e922d04a34ec5e7ef522ea3f5a1acfca7a19d16ad5fe50f5" +checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" dependencies = [ "bytemuck", "emath", @@ -961,12 +959,13 @@ dependencies = [ [[package]] name = "egui" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252d52224d35be1535d7fd1d6139ce071fb42c9097773e79f7665604f5596b5e" +checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" dependencies = [ "accesskit", "ahash", + "bitflags 2.9.1", "emath", "epaint", "log", @@ -977,17 +976,18 @@ dependencies = [ [[package]] name = "egui-toast" -version = "0.15.0" -source = "git+https://github.com/urholaukkarinen/egui-toast.git?rev=d0bcf97#d0bcf97cffbf9e580f609ccae27e8cd635047c53" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366a31eb8c905835c85a36baff26d7a003a9fd6631a04b1f15f42d9cb20d11ad" dependencies = [ "egui", ] [[package]] name = "egui-wgpu" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c1e821d2d8921ef6ce98b258c7e24d9d6aab2ca1f9cdf374eca997e7f67f59" +checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" dependencies = [ "ahash", "bytemuck", @@ -1005,12 +1005,13 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e84c2919cd9f3a38a91e8f84ac6a245c19251fd95226ed9fae61d5ea564fce3" +checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" dependencies = [ "ahash", "arboard", + "bytemuck", "egui", "log", "profiling", @@ -1023,9 +1024,9 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7a8198c088b1007108cb2d403bc99a5e370999b200db4f14559610d7330126" +checksum = "624659a2e972a46f4d5f646557906c55f1cd5a0836eddbe610fdf1afba1b4226" dependencies = [ "ahash", "egui", @@ -1044,9 +1045,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "emath" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4fe73c1207b864ee40aa0b0c038d6092af1030744678c60188a05c28553515d" +checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" dependencies = [ "bytemuck", "serde", @@ -1113,9 +1114,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5666f8d25236293c966fbb3635eac18b04ad1914e3bab55bc7d44b9980cafcac" +checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" dependencies = [ "ab_glyph", "ahash", @@ -1132,9 +1133,9 @@ dependencies = [ [[package]] name = "epaint_default_fonts" -version = "0.30.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66f6ddac3e6ac6fd4c3d48bb8b1943472f8da0f43a4303bcd8a18aa594401c80" +checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" [[package]] name = "equivalent" @@ -1426,9 +1427,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "glow" -version = "0.14.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" dependencies = [ "js-sys", "slotmap", @@ -1656,6 +1657,7 @@ dependencies = [ "byteorder-lite", "num-traits", "png", + "tiff", ] [[package]] @@ -1771,6 +1773,12 @@ dependencies = [ "libc", ] +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" + [[package]] name = "js-sys" version = "0.3.77" @@ -1976,9 +1984,9 @@ dependencies = [ [[package]] name = "metal" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ "bitflags 2.9.1", "block", @@ -2036,22 +2044,23 @@ dependencies = [ [[package]] name = "naga" -version = "23.1.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "364f94bc34f61332abebe8cad6f6cd82a5b65cff22c828d05d0968911462ca4f" +checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" dependencies = [ "arrayvec", "bit-set", "bitflags 2.9.1", - "cfg_aliases 0.1.1", + "cfg_aliases", "codespan-reporting", "hexf-parse", "indexmap", "log", "rustc-hash 1.1.0", "spirv", + "strum", "termcolor", - "thiserror 1.0.69", + "thiserror 2.0.12", "unicode-xid", ] @@ -2116,7 +2125,7 @@ checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ "bitflags 2.9.1", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", ] @@ -2128,7 +2137,7 @@ checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ "bitflags 2.9.1", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases", "libc", "memoffset", ] @@ -2564,6 +2573,15 @@ dependencies = [ "libredox", ] +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -3330,6 +3348,28 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "syn" version = "2.0.104" @@ -3437,6 +3477,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -3975,13 +4026,20 @@ dependencies = [ ] [[package]] -name = "wgpu" -version = "23.0.1" +name = "weezl" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f70000db37c469ea9d67defdc13024ddf9a5f1b89cb2941b812ad7cde1735a" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + +[[package]] +name = "wgpu" +version = "24.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" dependencies = [ "arrayvec", - "cfg_aliases 0.1.1", + "bitflags 2.9.1", + "cfg_aliases", "document-features", "js-sys", "log", @@ -4001,14 +4059,14 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "23.0.1" +version = "24.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d63c3c478de8e7e01786479919c8769f62a22eec16788d8c2ac77ce2c132778a" +checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" dependencies = [ "arrayvec", "bit-vec", "bitflags 2.9.1", - "cfg_aliases 0.1.1", + "cfg_aliases", "document-features", "indexmap", "log", @@ -4019,16 +4077,16 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.12", "wgpu-hal", "wgpu-types", ] [[package]] name = "wgpu-hal" -version = "23.0.1" +version = "24.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89364b8a0b211adc7b16aeaf1bd5ad4a919c1154b44c9ce27838213ba05fd821" +checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" dependencies = [ "android_system_properties", "arrayvec", @@ -4037,7 +4095,7 @@ dependencies = [ "bitflags 2.9.1", "block", "bytemuck", - "cfg_aliases 0.1.1", + "cfg_aliases", "core-graphics-types", "glow", "glutin_wgl_sys", @@ -4054,6 +4112,7 @@ dependencies = [ "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", + "ordered-float", "parking_lot", "profiling", "range-alloc", @@ -4061,7 +4120,7 @@ dependencies = [ "renderdoc-sys", "rustc-hash 1.1.0", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.12", "wasm-bindgen", "web-sys", "wgpu-types", @@ -4071,12 +4130,13 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "610f6ff27778148c31093f3b03abc4840f9636d58d597ca2f5977433acfe0068" +checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" dependencies = [ "bitflags 2.9.1", "js-sys", + "log", "web-sys", ] @@ -4674,7 +4734,7 @@ dependencies = [ "block2 0.5.1", "bytemuck", "calloop", - "cfg_aliases 0.2.1", + "cfg_aliases", "concurrent-queue", "core-foundation 0.9.4", "core-graphics", diff --git a/Cargo.toml b/Cargo.toml index b5875df..5e256e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,11 +16,11 @@ bytemuck = { version = "1", features = ["derive"] } clap = { version = "4", features = ["derive"] } cpal = { git = "https://github.com/sidit77/cpal.git", rev = "66ed6be" } directories = "6" -egui = { version = "0.30", features = ["serde"] } -egui_extras = { version = "0.30", features = ["image"] } -egui-toast = { git = "https://github.com/urholaukkarinen/egui-toast.git", rev = "d0bcf97" } -egui-winit = "0.30" -egui-wgpu = { version = "0.30", features = ["winit"] } +egui = { version = "0.31", features = ["serde"] } +egui_extras = { version = "0.31", features = ["image"] } +egui-toast = "0.17" +egui-winit = "0.31" +egui-wgpu = { version = "0.31", features = ["winit"] } fixed = { version = "1.28", features = ["num-traits"] } gilrs = { version = "0.11", features = ["serde-serialize"] } hex = "0.4" @@ -39,7 +39,7 @@ thread-priority = "1" tokio = { version = "1", features = ["io-util", "macros", "net", "rt", "sync", "time"] } tracing = { version = "0.1", features = ["release_max_level_info"] } tracing-subscriber = { version = "0.3", features = ["env-filter"] } -wgpu = "23" +wgpu = "24" winit = { version = "0.30", features = ["serde"] } [target.'cfg(windows)'.dependencies] diff --git a/src/app.rs b/src/app.rs index 40957da..1dfb008 100644 --- a/src/app.rs +++ b/src/app.rs @@ -298,10 +298,10 @@ impl ApplicationHandler for Application { } struct WgpuState { - instance: Arc, - adapter: Arc, - device: Arc, - queue: Arc, + instance: wgpu::Instance, + adapter: wgpu::Adapter, + device: wgpu::Device, + queue: wgpu::Queue, } impl WgpuState { @@ -309,21 +309,21 @@ impl WgpuState { #[allow(unused_variables)] let egui_wgpu::WgpuConfiguration { wgpu_setup: - egui_wgpu::WgpuSetup::CreateNew { - supported_backends, + egui_wgpu::WgpuSetup::CreateNew(egui_wgpu::WgpuSetupCreateNew { + instance_descriptor: wgpu::InstanceDescriptor { backends, .. }, device_descriptor, .. - }, + }), .. } = egui_wgpu::WgpuConfiguration::default() else { panic!("required fields not found") }; #[cfg(windows)] - let supported_backends = wgpu::util::backend_bits_from_env() + let backends = wgpu::Backends::from_env() .unwrap_or((wgpu::Backends::PRIMARY | wgpu::Backends::GL) - wgpu::Backends::VULKAN); - let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { - backends: supported_backends, + let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { + backends, ..wgpu::InstanceDescriptor::default() }); @@ -341,10 +341,10 @@ impl WgpuState { )) .expect("could not request device"); Self { - instance: Arc::new(instance), - adapter: Arc::new(adapter), - device: Arc::new(device), - queue: Arc::new(queue), + instance, + adapter, + device, + queue, } } } @@ -382,24 +382,30 @@ impl Viewport { ctx.set_fonts(fonts); ctx.style_mut(|s| { s.wrap_mode = Some(TextWrapMode::Extend); - s.visuals.menu_rounding = Default::default(); + s.visuals.menu_corner_radius = Default::default(); s.spacing.scroll = ScrollStyle::thin(); }); egui_extras::install_image_loaders(&ctx); let wgpu_config = egui_wgpu::WgpuConfiguration { present_mode: wgpu::PresentMode::AutoNoVsync, - wgpu_setup: egui_wgpu::WgpuSetup::Existing { + wgpu_setup: egui_wgpu::WgpuSetup::Existing(egui_wgpu::WgpuSetupExisting { instance: wgpu.instance.clone(), adapter: wgpu.adapter.clone(), device: wgpu.device.clone(), queue: wgpu.queue.clone(), - }, + }), ..egui_wgpu::WgpuConfiguration::default() }; - let mut painter = - egui_wgpu::winit::Painter::new(ctx.clone(), wgpu_config, 1, None, false, true); + let mut painter = pollster::block_on(egui_wgpu::winit::Painter::new( + ctx.clone(), + wgpu_config, + 1, + None, + false, + true, + )); let mut info = ViewportInfo::default(); let mut builder = app.initial_viewport(); diff --git a/src/graphics.rs b/src/graphics.rs index 42abe11..281220a 100644 --- a/src/graphics.rs +++ b/src/graphics.rs @@ -10,7 +10,7 @@ use std::{ use anyhow::{Result, bail}; use itertools::Itertools as _; use wgpu::{ - Device, Extent3d, ImageCopyTexture, ImageDataLayout, Origin3d, Queue, Texture, + Device, Extent3d, Origin3d, Queue, TexelCopyBufferLayout, TexelCopyTextureInfo, Texture, TextureDescriptor, TextureFormat, TextureUsages, TextureView, TextureViewDescriptor, }; @@ -21,7 +21,7 @@ pub struct TextureSink { } impl TextureSink { - pub fn new(device: &Device, queue: Arc) -> (Self, TextureView) { + pub fn new(device: &Device, queue: Queue) -> (Self, TextureView) { let texture = Self::create_texture(device); let view = texture.create_view(&TextureViewDescriptor::default()); let buffers = Arc::new(BufferPool::new()); @@ -72,7 +72,7 @@ impl TextureSink { } fn write_texture(queue: &Queue, texture: &Texture, bytes: &[u8]) { - let texture = ImageCopyTexture { + let texture = TexelCopyTextureInfo { texture, mip_level: 0, origin: Origin3d::ZERO, @@ -83,7 +83,7 @@ impl TextureSink { height: 224, depth_or_array_layers: 1, }; - let data_layout = ImageDataLayout { + let data_layout = TexelCopyBufferLayout { offset: 0, bytes_per_row: Some(384 * 2), rows_per_image: Some(224), diff --git a/src/window/utils.rs b/src/window/utils.rs index a322c47..4c21b65 100644 --- a/src/window/utils.rs +++ b/src/window/utils.rs @@ -6,8 +6,8 @@ use std::{ use atoi::FromRadix16; use egui::{ - Align, Color32, CursorIcon, Event, Frame, Key, Layout, Margin, Rect, Response, RichText, - Rounding, Sense, Shape, Stroke, TextEdit, Ui, UiBuilder, Vec2, Widget, WidgetText, + Align, Color32, CornerRadius, CursorIcon, Event, Frame, Key, Layout, Margin, Rect, Response, + RichText, Sense, Shape, Stroke, StrokeKind, TextEdit, Ui, UiBuilder, Vec2, Widget, WidgetText, ecolor::HexColor, }; use num_traits::{CheckedAdd, CheckedSub, One}; @@ -37,8 +37,8 @@ impl UiExt for Ui { fn section(&mut self, title: impl Into, add_contents: impl FnOnce(&mut Ui)) { let title: String = title.into(); let mut frame = Frame::group(self.style()); - frame.outer_margin.top += 10.0; - frame.inner_margin.top += 2.0; + frame.outer_margin.top += 10; + frame.inner_margin.top += 2; let res = self.push_id(&title, |ui| { frame.show(ui, |ui| { ui.set_max_width(ui.available_width()); @@ -73,7 +73,8 @@ impl UiExt for Ui { self.painter().rect_filled(right_rect, 0.0, right); let style = self.style().interact(&response); - self.painter().rect_stroke(rect, 0.0, style.fg_stroke); + self.painter() + .rect_stroke(rect, 0.0, style.fg_stroke, StrokeKind::Inside); response } @@ -265,10 +266,10 @@ impl Widget for NumberEdit<'_, T> { .id(id) .desired_width(desired_width) .margin(Margin { - left: 4.0, - right: if self.arrows { 20.0 } else { 4.0 }, - top: 2.0, - bottom: 2.0, + left: 4, + right: if self.arrows { 20 } else { 4 }, + top: 2, + bottom: 2, }); let mut res = if valid { ui.add(text) @@ -337,7 +338,7 @@ impl Widget for NumberEdit<'_, T> { } str = to_string(self.value); stale = true; - } else if res.changed { + } else if res.changed() { if let Some(new_value) = from_string(&str).filter(in_range) { if *self.value != new_value { res.mark_changed(); @@ -355,27 +356,20 @@ impl Widget for NumberEdit<'_, T> { fn draw_arrow(ui: &mut Ui, rect: Rect, up: bool) -> Response { let arrow_res = ui - .allocate_rect( - rect, - Sense { - click: true, - drag: true, - focusable: false, - }, - ) + .allocate_rect(rect, Sense::all()) .on_hover_cursor(CursorIcon::Default); let visuals = ui.style().visuals.widgets.style(&arrow_res); let painter = ui.painter_at(arrow_res.rect); let rounding = if up { - Rounding { - ne: 2.0, - ..Rounding::ZERO + CornerRadius { + ne: 2, + ..CornerRadius::ZERO } } else { - Rounding { - se: 2.0, - ..Rounding::ZERO + CornerRadius { + se: 2, + ..CornerRadius::ZERO } }; painter.rect_filled(arrow_res.rect, rounding, visuals.bg_fill);