From baf15b9d10133e625ddd8323401badd7ca4fbaac Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Tue, 3 Oct 2023 23:26:22 +0200 Subject: [PATCH 01/41] dep: bumping raw-window-handle to 0.6 --- Cargo.toml | 2 +- wgpu-core/Cargo.toml | 2 +- wgpu-hal/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6c7412d265..5b62bf3b35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ pico-args = { version = "0.5.0", features = ["eq-separator", "short-space-opt", png = "0.17.10" pollster = "0.3" profiling = { version = "1", default-features = false } -raw-window-handle = "0.5" +raw-window-handle = "0.6" renderdoc-sys = "1.0.0" ron = "0.8" serde = "1" diff --git a/wgpu-core/Cargo.toml b/wgpu-core/Cargo.toml index aa1c053ede..9b9ecae5fe 100644 --- a/wgpu-core/Cargo.toml +++ b/wgpu-core/Cargo.toml @@ -63,7 +63,7 @@ log = "0.4" # parking_lot 0.12 switches from `winapi` to `windows`; permit either parking_lot = ">=0.11,<0.13" profiling = { version = "1", default-features = false } -raw-window-handle = { version = "0.5", optional = true } +raw-window-handle = { version = "0.6", optional = true } ron = { version = "0.8", optional = true } serde = { version = "1", features = ["serde_derive"], optional = true } smallvec = "1" diff --git a/wgpu-hal/Cargo.toml b/wgpu-hal/Cargo.toml index c339c12aad..9ce5c895f8 100644 --- a/wgpu-hal/Cargo.toml +++ b/wgpu-hal/Cargo.toml @@ -57,7 +57,7 @@ required-features = ["gles"] bitflags = "2" parking_lot = ">=0.11,<0.13" profiling = { version = "1", default-features = false } -raw-window-handle = "0.5" +raw-window-handle = "0.6" thiserror = "1" # backends common From 5f82c028d84ee7b0390ff7fa73bc8b3db8e1ea1f Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 4 Oct 2023 00:47:01 +0200 Subject: [PATCH 02/41] updating some casts --- Cargo.lock | 22 ++++++++++++++-------- wgpu-hal/src/gles/egl.rs | 16 ++++++++-------- wgpu-hal/src/vulkan/instance.rs | 8 ++++---- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3c67d5ccbb..f020b245aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -559,7 +559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ "bitflags 2.4.0", - "libloading 0.7.4", + "libloading 0.8.1", "winapi", ] @@ -710,7 +710,7 @@ name = "deno_webgpu" version = "0.85.0" dependencies = [ "deno_core", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "serde", "tokio", "wgpu-core", @@ -751,7 +751,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.7.4", + "libloading 0.8.1", ] [[package]] @@ -2046,7 +2046,7 @@ version = "0.17.0" dependencies = [ "env_logger", "log", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "ron", "serde", "wgpu-core", @@ -2225,6 +2225,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "raw-window-handle" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" + [[package]] name = "redox_syscall" version = "0.3.5" @@ -3128,7 +3134,7 @@ dependencies = [ "naga", "parking_lot", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "serde", "smallvec", "static_assertions", @@ -3209,7 +3215,7 @@ dependencies = [ "naga", "parking_lot", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "ron", "rustc-hash", "serde", @@ -3285,7 +3291,7 @@ dependencies = [ "parking_lot", "profiling", "range-alloc", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "renderdoc-sys", "rustc-hash", "smallvec", @@ -3456,7 +3462,7 @@ dependencies = [ "parking_lot", "png", "pollster", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test", diff --git a/wgpu-hal/src/gles/egl.rs b/wgpu-hal/src/gles/egl.rs index d6d3d621f9..93a26c7e43 100644 --- a/wgpu-hal/src/gles/egl.rs +++ b/wgpu-hal/src/gles/egl.rs @@ -922,7 +922,7 @@ impl crate::Instance for Instance { (Rwh::Wayland(_), raw_window_handle::RawDisplayHandle::Wayland(display_handle)) => { if inner .wl_display - .map(|ptr| ptr != display_handle.display) + .map(|ptr| ptr != display_handle.display.as_ptr()) .unwrap_or(true) { /* Wayland displays are not sharable between surfaces so if the @@ -943,7 +943,7 @@ impl crate::Instance for Instance { .unwrap() .get_platform_display( EGL_PLATFORM_WAYLAND_KHR, - display_handle.display, + display_handle.display.as_ptr(), &display_attributes, ) .unwrap(); @@ -956,7 +956,7 @@ impl crate::Instance for Instance { )?; let old_inner = std::mem::replace(inner.deref_mut(), new_inner); - inner.wl_display = Some(display_handle.display); + inner.wl_display = Some(display_handle.display.as_ptr()); drop(old_inner); } @@ -1196,24 +1196,24 @@ impl crate::Surface for Surface { &mut temp_xcb_handle as *mut _ as *mut std::ffi::c_void } (WindowKind::AngleX11, Rwh::Xcb(handle)) => { - handle.window as *mut std::ffi::c_void + handle.window.get() as *mut std::ffi::c_void } - (WindowKind::Unknown, Rwh::AndroidNdk(handle)) => handle.a_native_window, + (WindowKind::Unknown, Rwh::AndroidNdk(handle)) => handle.a_native_window.as_ptr(), (WindowKind::Wayland, Rwh::Wayland(handle)) => { let library = &self.wsi.display_owner.as_ref().unwrap().library; let wl_egl_window_create: libloading::Symbol = unsafe { library.get(b"wl_egl_window_create") }.unwrap(); - let window = unsafe { wl_egl_window_create(handle.surface, 640, 480) } + let window = unsafe { wl_egl_window_create(handle.surface.as_ptr(), 640, 480) } as *mut _ as *mut std::ffi::c_void; wl_window = Some(window); window } #[cfg(target_os = "emscripten")] (WindowKind::Unknown, Rwh::Web(handle)) => handle.id as *mut std::ffi::c_void, - (WindowKind::Unknown, Rwh::Win32(handle)) => handle.hwnd, + (WindowKind::Unknown, Rwh::Win32(handle)) => handle.hwnd.get() as * mut std::ffi::c_void, (WindowKind::Unknown, Rwh::AppKit(handle)) => { #[cfg(not(target_os = "macos"))] - let window_ptr = handle.ns_view; + let window_ptr = handle.ns_view.as_ptr(); #[cfg(target_os = "macos")] let window_ptr = { use objc::{msg_send, runtime::Object, sel, sel_impl}; diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 2dda7a2c3a..8d78ec1fd4 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -740,15 +740,15 @@ impl crate::Instance for super::Instance { match (window_handle, display_handle) { (Rwh::Wayland(handle), Rdh::Wayland(display)) => { - self.create_surface_from_wayland(display.display, handle.surface) + self.create_surface_from_wayland(display.display.as_ptr(), handle.surface.as_ptr()) } (Rwh::Xlib(handle), Rdh::Xlib(display)) => { - self.create_surface_from_xlib(display.display as *mut _, handle.window) + self.create_surface_from_xlib(display.display, handle.window) } (Rwh::Xcb(handle), Rdh::Xcb(display)) => { - self.create_surface_from_xcb(display.connection, handle.window) + self.create_surface_from_xcb(display.connection, handle.window.get()) } - (Rwh::AndroidNdk(handle), _) => self.create_surface_android(handle.a_native_window), + (Rwh::AndroidNdk(handle), _) => self.create_surface_android(handle.a_native_window.as_ptr()), #[cfg(windows)] (Rwh::Win32(handle), _) => { use winapi::um::libloaderapi::GetModuleHandleW; From 0f161ddbc2ec6ded2c19fddac65f411d61b7e739 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 4 Oct 2023 01:15:46 +0200 Subject: [PATCH 03/41] fixing more casts --- wgpu-hal/src/vulkan/instance.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 8d78ec1fd4..e392b93342 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -743,10 +743,12 @@ impl crate::Instance for super::Instance { self.create_surface_from_wayland(display.display.as_ptr(), handle.surface.as_ptr()) } (Rwh::Xlib(handle), Rdh::Xlib(display)) => { - self.create_surface_from_xlib(display.display, handle.window) + let display = display.display.expect("Display pointer is not set."); + self.create_surface_from_xlib(display.as_ptr() as *mut *const c_void, handle.window) } (Rwh::Xcb(handle), Rdh::Xcb(display)) => { - self.create_surface_from_xcb(display.connection, handle.window.get()) + let connection = display.connection.expect("Pointer to X-Server is not set."); + self.create_surface_from_xcb(connection.as_ptr(), handle.window.get()) } (Rwh::AndroidNdk(handle), _) => self.create_surface_android(handle.a_native_window.as_ptr()), #[cfg(windows)] From 4ba013a183c39bd8329452a436d9e07731ca4d76 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 4 Oct 2023 01:17:24 +0200 Subject: [PATCH 04/41] removing deprecated traits of `raw-window-handle` --- wgpu/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index f5323a6e34..90553097ab 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -1937,15 +1937,15 @@ impl Instance { /// - On web: will panic if the `raw_window_handle` does not properly refer to a /// canvas element. pub unsafe fn create_surface< - W: raw_window_handle::HasRawWindowHandle + raw_window_handle::HasRawDisplayHandle, + W: raw_window_handle::HasWindowHandle + raw_window_handle::HasDisplayHandle, >( &self, window: &W, ) -> Result { let (id, data) = DynContext::instance_create_surface( &*self.context, - raw_window_handle::HasRawDisplayHandle::raw_display_handle(window), - raw_window_handle::HasRawWindowHandle::raw_window_handle(window), + raw_window_handle::HasDisplayHandle::display_handle(window), + raw_window_handle::HasWindowHandle::window_handle(window), )?; Ok(Surface { context: Arc::clone(&self.context), From 6d72872ce1fc6d3aa47639eec27bb96f1d54712f Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 4 Oct 2023 01:42:54 +0200 Subject: [PATCH 05/41] fixing `DynContext::instance_create_surface` --- wgpu/Cargo.toml | 2 +- wgpu/src/lib.rs | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index d494b9c023..4cc31d268d 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -98,7 +98,7 @@ arrayvec.workspace = true log.workspace = true parking_lot.workspace = true profiling.workspace = true -raw-window-handle.workspace = true +raw-window-handle = { workspace = true, features = ["std"] } serde = { workspace = true, features = ["derive"], optional = true } smallvec.workspace = true static_assertions.workspace = true diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 90553097ab..f25ccba6cd 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -1942,10 +1942,22 @@ impl Instance { &self, window: &W, ) -> Result { + let raw_display_handle = window + .display_handle() + .map_err(|e| CreateSurfaceError { + inner: CreateSurfaceErrorKind::RawHandle(e) + })? + .as_raw(); + let raw_window_handle = window + .window_handle() + .map_err(|e| CreateSurfaceError { + inner: CreateSurfaceErrorKind::RawHandle(e) + })? + .as_raw(); let (id, data) = DynContext::instance_create_surface( &*self.context, - raw_window_handle::HasDisplayHandle::display_handle(window), - raw_window_handle::HasWindowHandle::window_handle(window), + raw_display_handle, + raw_window_handle )?; Ok(Surface { context: Arc::clone(&self.context), @@ -2900,6 +2912,10 @@ enum CreateSurfaceErrorKind { /// Error from WebGPU surface creation. #[allow(dead_code)] // may be unused depending on target and features Web(String), + + /// Error when trying to get a [`DisplayHandle`] or a [`WindowHandle`] from + /// `raw_window_handle`. + RawHandle(raw_window_handle::HandleError), } static_assertions::assert_impl_all!(CreateSurfaceError: Send, Sync); @@ -2913,6 +2929,7 @@ impl fmt::Display for CreateSurfaceError { ))] CreateSurfaceErrorKind::Hal(e) => e.fmt(f), CreateSurfaceErrorKind::Web(e) => e.fmt(f), + CreateSurfaceErrorKind::RawHandle(e) => e.fmt(f), } } } @@ -2927,6 +2944,7 @@ impl error::Error for CreateSurfaceError { ))] CreateSurfaceErrorKind::Hal(e) => e.source(), CreateSurfaceErrorKind::Web(_) => None, + CreateSurfaceErrorKind::RawHandle(e) => e.source(), } } } From b63ff427969329cd6b302709c1341e19bc2820e1 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Sat, 21 Oct 2023 19:49:16 +0200 Subject: [PATCH 06/41] dependencies: bumping `winit` up to `0.29.2` --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 64883d6d0e..6e6d252dec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -107,7 +107,7 @@ wgpu-example = { version = "0.17.0", path = "./examples/common" } wgpu-macros = { version = "0.17.0", path = "./wgpu-macros" } wgpu-test = { version = "0.17", path = "./tests"} wgpu-types = { version = "0.17.0", path = "./wgpu-types" } -winit = { version = "0.28.7", features = [ "android-native-activity" ] } +winit = { version = "0.29.2", features = [ "android-native-activity" ] } # Metal dependencies block = "0.1" From 9b99e72ce1d07b28c5a3ad29255bd3479e2c7b45 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 21:10:45 +0200 Subject: [PATCH 07/41] fix: `examples/common/src/framework.rs` --- Cargo.lock | 737 +++++++++++++++++++++++++--- examples/common/src/framework.rs | 187 +++---- examples/uniform-values/src/main.rs | 2 +- 3 files changed, 771 insertions(+), 155 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a733ef4dc1..121b02da1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,6 +40,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -71,12 +72,33 @@ dependencies = [ "jni-sys", "libc", "log", - "ndk", + "ndk 0.7.0", "ndk-context", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "num_enum 0.6.1", ] +[[package]] +name = "android-activity" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052ad56e336bcc615a214bffbeca6c181ee9550acec193f0327e0b103b033a4d" +dependencies = [ + "android-properties", + "bitflags 2.4.1", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk 0.8.0", + "ndk-context", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.0", + "thiserror", +] + [[package]] name = "android-properties" version = "0.2.2" @@ -167,6 +189,12 @@ dependencies = [ "serde", ] +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5f312b0a56c5cdf967c0aeb67f6289603354951683bc97ddc595ab974ba9aa" + [[package]] name = "ash" version = "0.37.3+1.3.251" @@ -216,6 +244,12 @@ dependencies = [ "syn 2.0.38", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.1.0" @@ -295,7 +329,16 @@ version = "0.1.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" dependencies = [ - "objc-sys", + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "block-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dd7cf50912cddc06dc5ea7c08c5e81c1b2c842a70d19def1848d54c586fed92" +dependencies = [ + "objc-sys 0.3.1", ] [[package]] @@ -304,8 +347,18 @@ version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" dependencies = [ - "block-sys", - "objc2-encode", + "block-sys 0.1.0-beta.1", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "block2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +dependencies = [ + "block-sys 0.2.0", + "objc2 0.4.1", ] [[package]] @@ -360,6 +413,32 @@ dependencies = [ "vec_map", ] +[[package]] +name = "calloop" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf" +dependencies = [ + "bitflags 2.4.1", + "log", + "polling", + "rustix", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop 0.12.3", + "rustix", + "wayland-backend", + "wayland-client 0.31.1", +] + [[package]] name = "cc" version = "1.0.83" @@ -370,6 +449,12 @@ dependencies = [ "libc", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "1.0.0" @@ -450,7 +535,7 @@ dependencies = [ "block", "cocoa-foundation", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "foreign-types 0.3.2", "libc", "objc", @@ -498,6 +583,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "concurrent-queue" version = "2.3.0" @@ -568,6 +663,19 @@ dependencies = [ "libc", ] +[[package]] +name = "core-graphics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + [[package]] name = "core-graphics-types" version = "0.1.2" @@ -586,7 +694,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" dependencies = [ "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "foreign-types 0.3.2", "libc", ] @@ -618,7 +726,7 @@ dependencies = [ "cocoa", "core-foundation", "core-foundation-sys", - "core-graphics", + "core-graphics 0.22.3", "core-text", "dwrote", "foreign-types 0.5.0", @@ -662,6 +770,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +[[package]] +name = "cursor-icon" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740bb192a8e2d1350119916954f4409ee7f62f149b536911eeb78ba5a20526bf" + [[package]] name = "d3d12" version = "0.7.0" @@ -1281,6 +1395,16 @@ dependencies = [ "slab", ] +[[package]] +name = "gethostname" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -1360,7 +1484,7 @@ dependencies = [ "osmesa-sys", "parking_lot", "raw-window-handle 0.5.2", - "wayland-client", + "wayland-client 0.29.5", "wayland-egl", "winapi", "winit 0.27.5", @@ -1525,6 +1649,17 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2 0.3.0", + "dispatch", + "objc2 0.4.1", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1601,6 +1736,22 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -1764,6 +1915,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -1773,6 +1933,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "metal" version = "0.26.0" @@ -1854,12 +2023,27 @@ checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "num_enum 0.5.11", "raw-window-handle 0.5.2", "thiserror", ] +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.4.1", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.0", + "raw-window-handle 0.6.0", + "thiserror", +] + [[package]] name = "ndk-context" version = "0.1.1" @@ -1874,10 +2058,10 @@ checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" dependencies = [ "libc", "log", - "ndk", + "ndk 0.7.0", "ndk-context", "ndk-macro", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "once_cell", "parking_lot", ] @@ -1904,6 +2088,15 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + [[package]] name = "nix" version = "0.24.3" @@ -1913,7 +2106,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset", + "memoffset 0.6.5", ] [[package]] @@ -1926,7 +2119,19 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", ] [[package]] @@ -2029,6 +2234,15 @@ dependencies = [ "num_enum_derive 0.6.1", ] +[[package]] +name = "num_enum" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" +dependencies = [ + "num_enum_derive 0.7.0", +] + [[package]] name = "num_enum_derive" version = "0.5.11" @@ -2053,6 +2267,18 @@ dependencies = [ "syn 2.0.38", ] +[[package]] +name = "num_enum_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "nv-flip" version = "0.1.2" @@ -2093,15 +2319,31 @@ version = "0.2.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" +[[package]] +name = "objc-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e1d07c6eab1ce8b6382b8e3c7246fe117ff3f8b34be065f5ebace6749fe845" + [[package]] name = "objc2" version = "0.3.0-beta.3.patch-leaks.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" dependencies = [ - "block2", - "objc-sys", - "objc2-encode", + "block2 0.2.0-alpha.6", + "objc-sys 0.2.0-beta.2", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "objc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +dependencies = [ + "objc-sys 0.3.1", + "objc2-encode 3.0.0", ] [[package]] @@ -2110,9 +2352,15 @@ version = "2.0.0-pre.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" dependencies = [ - "objc-sys", + "objc-sys 0.2.0-beta.2", ] +[[package]] +name = "objc2-encode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" + [[package]] name = "objc_exception" version = "0.1.2" @@ -2276,7 +2524,7 @@ dependencies = [ "serde", "wgpu-core", "wgpu-types", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -2303,6 +2551,20 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "polling" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a79e457c9898100b4298d57d69ec53d06f9a6ed352431ce5f377e082d2e846" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.48.0", +] + [[package]] name = "pollster" version = "0.3.0" @@ -2355,6 +2617,15 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.33" @@ -2585,6 +2856,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -2605,7 +2885,7 @@ checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" dependencies = [ "crossfont", "log", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "tiny-skia 0.7.0", ] @@ -2617,11 +2897,24 @@ checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" dependencies = [ "ab_glyph", "log", - "memmap2", - "smithay-client-toolkit", + "memmap2 0.5.10", + "smithay-client-toolkit 0.16.1", "tiny-skia 0.8.4", ] +[[package]] +name = "sctk-adwaita" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729a30a469de249c6effc17ec8d039b0aa29b3af79b819b7f51cb6ab8046a90" +dependencies = [ + "ab_glyph", + "log", + "memmap2 0.9.0", + "smithay-client-toolkit 0.18.0", + "tiny-skia 0.11.2", +] + [[package]] name = "semver" version = "0.9.0" @@ -2777,16 +3070,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ "bitflags 1.3.2", - "calloop", + "calloop 0.10.6", "dlib", "lazy_static", "log", - "memmap2", + "memmap2 0.5.10", "nix 0.24.3", "pkg-config", - "wayland-client", - "wayland-cursor", - "wayland-protocols", + "wayland-client 0.29.5", + "wayland-cursor 0.29.5", + "wayland-protocols 0.29.5", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f" +dependencies = [ + "bitflags 2.4.1", + "calloop 0.12.3", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2 0.9.0", + "rustix", + "thiserror", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-csd-frame", + "wayland-cursor 0.31.0", + "wayland-protocols 0.31.0", + "wayland-protocols-wlr", + "wayland-scanner 0.31.0", + "xkeysym", +] + +[[package]] +name = "smol_str" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +dependencies = [ + "serde", ] [[package]] @@ -2963,6 +3290,20 @@ dependencies = [ "tiny-skia-path 0.8.4", ] +[[package]] +name = "tiny-skia" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b72a92a05db376db09fe6d50b7948d106011761c05a6a45e23e17ee9b556222" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path 0.11.2", +] + [[package]] name = "tiny-skia-path" version = "0.7.0" @@ -2984,6 +3325,17 @@ dependencies = [ "strict-num", ] +[[package]] +name = "tiny-skia-path" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac3865b9708fc7e1961a65c3a4fa55e984272f33092d3c859929f887fceb647" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -3046,6 +3398,22 @@ dependencies = [ "winnow", ] +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" + [[package]] name = "ttf-parser" version = "0.19.2" @@ -3120,6 +3488,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + [[package]] name = "unicode-width" version = "0.1.11" @@ -3209,6 +3583,16 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -3311,6 +3695,20 @@ dependencies = [ "quote", ] +[[package]] +name = "wayland-backend" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" +dependencies = [ + "cc", + "downcast-rs", + "nix 0.26.4", + "scoped-tls", + "smallvec", + "wayland-sys 0.31.1", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -3323,8 +3721,20 @@ dependencies = [ "nix 0.24.3", "scoped-tls", "wayland-commons", - "wayland-scanner", - "wayland-sys", + "wayland-scanner 0.29.5", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-client" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +dependencies = [ + "bitflags 2.4.1", + "nix 0.26.4", + "wayland-backend", + "wayland-scanner 0.31.0", ] [[package]] @@ -3336,7 +3746,18 @@ dependencies = [ "nix 0.24.3", "once_cell", "smallvec", - "wayland-sys", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.4.1", + "cursor-icon", + "wayland-backend", ] [[package]] @@ -3346,7 +3767,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ "nix 0.24.3", - "wayland-client", + "wayland-client 0.29.5", + "xcursor", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b" +dependencies = [ + "nix 0.26.4", + "wayland-client 0.31.1", "xcursor", ] @@ -3356,8 +3788,8 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402de949f81a012926d821a2d659f930694257e76dd92b6e0042ceb27be4107d" dependencies = [ - "wayland-client", - "wayland-sys", + "wayland-client 0.29.5", + "wayland-sys 0.29.5", ] [[package]] @@ -3367,9 +3799,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ "bitflags 1.3.2", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", - "wayland-scanner", + "wayland-scanner 0.29.5", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-scanner 0.31.0", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-protocols 0.31.0", + "wayland-scanner 0.31.0", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-protocols 0.31.0", + "wayland-scanner 0.31.0", ] [[package]] @@ -3383,6 +3853,17 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "wayland-scanner" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + [[package]] name = "wayland-sys" version = "0.29.5" @@ -3394,6 +3875,18 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "wayland-sys" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.64" @@ -3404,6 +3897,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8208e3fdbc243c8fd30805721869242a7f6de3e2e9f3b057652ab36e52ae1e87" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "wgpu" version = "0.17.0" @@ -3438,7 +3941,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3453,7 +3956,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3464,7 +3967,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3500,7 +4003,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3521,7 +4024,7 @@ dependencies = [ "wgpu", "wgpu-hal", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3584,7 +4087,7 @@ dependencies = [ "wasm-bindgen-test", "wgpu", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3633,7 +4136,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "wgpu", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3645,7 +4148,7 @@ dependencies = [ "env_logger", "pollster", "wgpu", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3698,7 +4201,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3712,7 +4215,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3732,7 +4235,7 @@ dependencies = [ "web-sys", "wgpu", "wgpu-example", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3765,7 +4268,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3781,7 +4284,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3793,7 +4296,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3861,7 +4364,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3879,7 +4382,7 @@ dependencies = [ "wasm-bindgen-test", "wgpu", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3907,7 +4410,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "wgpu", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3922,7 +4425,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3968,6 +4471,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4177,13 +4689,13 @@ dependencies = [ "bitflags 1.3.2", "cocoa", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "dispatch", "instant", "libc", "log", "mio", - "ndk", + "ndk 0.7.0", "ndk-glue", "objc", "once_cell", @@ -4192,10 +4704,10 @@ dependencies = [ "raw-window-handle 0.4.3", "raw-window-handle 0.5.2", "sctk-adwaita 0.4.3", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "wasm-bindgen", - "wayland-client", - "wayland-protocols", + "wayland-client 0.29.5", + "wayland-protocols 0.29.5", "web-sys", "windows-sys 0.36.1", "x11-dl", @@ -4207,35 +4719,83 @@ version = "0.28.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" dependencies = [ - "android-activity", + "android-activity 0.4.3", "bitflags 1.3.2", "cfg_aliases", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "dispatch", "instant", "libc", "log", "mio", - "ndk", - "objc2", + "ndk 0.7.0", + "objc2 0.3.0-beta.3.patch-leaks.3", "once_cell", "orbclient", "percent-encoding", "raw-window-handle 0.5.2", "redox_syscall 0.3.5", "sctk-adwaita 0.5.4", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "wasm-bindgen", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", - "wayland-protocols", - "wayland-scanner", + "wayland-protocols 0.29.5", + "wayland-scanner 0.29.5", "web-sys", "windows-sys 0.45.0", "x11-dl", ] +[[package]] +name = "winit" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b829f75d02fe1e225b97c91a04c326900147a50234d1141a1cbe215ce8798c11" +dependencies = [ + "ahash", + "android-activity 0.5.0", + "atomic-waker", + "bitflags 2.4.1", + "bytemuck", + "calloop 0.12.3", + "cfg_aliases", + "core-foundation", + "core-graphics 0.23.1", + "cursor-icon", + "icrate", + "js-sys", + "libc", + "log", + "memmap2 0.9.0", + "ndk 0.8.0", + "ndk-sys 0.5.0+25.2.9519653", + "objc2 0.4.1", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle 0.6.0", + "redox_syscall 0.3.5", + "rustix", + "sctk-adwaita 0.7.0", + "smithay-client-toolkit 0.18.0", + "smol_str", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-protocols 0.31.0", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.48.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + [[package]] name = "winnow" version = "0.5.17" @@ -4265,6 +4825,32 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.7.4", + "nix 0.26.4", + "once_cell", + "winapi", + "winapi-wsapoll", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" +dependencies = [ + "nix 0.26.4", +] + [[package]] name = "xcursor" version = "0.3.4" @@ -4274,6 +4860,25 @@ dependencies = [ "nom", ] +[[package]] +name = "xkbcommon-dl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699" +dependencies = [ + "bitflags 2.4.1", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + [[package]] name = "xml-rs" version = "0.8.19" diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 9e9e949ef4..3468765ffd 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -7,11 +7,14 @@ use std::time::Instant; use wasm_bindgen::prelude::*; #[cfg(target_arch = "wasm32")] use web_sys::{ImageBitmapRenderingContext, OffscreenCanvas}; -use wgpu::{WasmNotSend, WasmNotSync}; +use wgpu::{Surface, SurfaceConfiguration, WasmNotSend, WasmNotSync}; use wgpu_test::GpuTestConfiguration; use winit::{ - event::{self, WindowEvent}, + dpi::PhysicalSize, + event::{self, ElementState, KeyEvent, WindowEvent}, event_loop::{ControlFlow, EventLoop}, + keyboard::{Key, KeyCode, KeyLocation, NamedKey, PhysicalKey}, + platform::scancode::PhysicalKeyExtScancode, }; #[allow(dead_code)] @@ -92,7 +95,7 @@ async fn setup(title: &str) -> Setup { env_logger::init(); }; - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut builder = winit::window::WindowBuilder::new(); builder = builder.with_title(title); #[cfg(windows_OFF)] // TODO @@ -290,113 +293,104 @@ fn start( let (mut frame_count, mut accum_time) = (0, 0.0); log::info!("Entering render loop..."); - event_loop.run(move |event, _, control_flow| { + event_loop.run(move |event, target| { let _ = (&instance, &adapter); // force ownership by the closure - *control_flow = if cfg!(feature = "metal-auto-capture") { - ControlFlow::Exit - } else { - ControlFlow::Poll + target.set_control_flow(ControlFlow::Poll); + + if cfg!(feature = "metal-auto-capture") { + target.exit(); }; - match event { - event::Event::RedrawEventsCleared => { - #[cfg(not(target_arch = "wasm32"))] - spawner.run_until_stalled(); - window.request_redraw(); - } + match event { event::Event::WindowEvent { - event: - WindowEvent::Resized(size) - | WindowEvent::ScaleFactorChanged { - new_inner_size: &mut size, - .. - }, + event: WindowEvent::Resized(size), + .. + } => resize_window(example, size, &mut config, &mut surface, &device, &queue), + event::Event::WindowEvent { + event: WindowEvent::ScaleFactorChanged { scale_factor, .. }, .. - } => { - log::info!("Resizing to {:?}", size); - config.width = size.width.max(1); - config.height = size.height.max(1); - example.resize(&config, &device, &queue); - surface.configure(&device, &config); + } if scale_factor > 0.0 => { + let new_size = PhysicalSize { + width: (f64::from(config.width) * scale_factor) as u32, + height: (f64::from(config.height) * scale_factor) as u32, + }; } event::Event::WindowEvent { event, .. } => match event { WindowEvent::KeyboardInput { - input: - event::KeyboardInput { - virtual_keycode: Some(event::VirtualKeyCode::Escape), - state: event::ElementState::Pressed, + event: + KeyEvent { + logical_key: Key::Named(NamedKey::Escape), .. }, .. } | WindowEvent::CloseRequested => { - *control_flow = ControlFlow::Exit; + target.exit(); } #[cfg(not(target_arch = "wasm32"))] WindowEvent::KeyboardInput { - input: - event::KeyboardInput { - virtual_keycode: Some(event::VirtualKeyCode::R), - state: event::ElementState::Pressed, + event: + KeyEvent { + logical_key: Key::Character(s), .. }, .. - } => { + } if s == "r" => { println!("{:#?}", instance.generate_report()); } _ => { example.update(event); } - }, - event::Event::RedrawRequested(_) => { - #[cfg(not(target_arch = "wasm32"))] - { - accum_time += last_frame_inst.elapsed().as_secs_f32(); - last_frame_inst = Instant::now(); - frame_count += 1; - if frame_count == 100 { - println!( - "Avg frame time {}ms", - accum_time * 1000.0 / frame_count as f32 - ); - accum_time = 0.0; - frame_count = 0; - } - } - - let frame = match surface.get_current_texture() { - Ok(frame) => frame, - Err(_) => { - surface.configure(&device, &config); - surface - .get_current_texture() - .expect("Failed to acquire next surface texture!") + event::WindowEvent::RedrawRequested => { + #[cfg(not(target_arch = "wasm32"))] + { + accum_time += last_frame_inst.elapsed().as_secs_f32(); + last_frame_inst = Instant::now(); + frame_count += 1; + if frame_count == 100 { + println!( + "Avg frame time {}ms", + accum_time * 1000.0 / frame_count as f32 + ); + accum_time = 0.0; + frame_count = 0; + } } - }; - let view = frame.texture.create_view(&wgpu::TextureViewDescriptor { - format: Some(surface_view_format), - ..wgpu::TextureViewDescriptor::default() - }); - - example.render(&view, &device, &queue, &spawner); - frame.present(); - - #[cfg(target_arch = "wasm32")] - { - if let Some(offscreen_canvas_setup) = &offscreen_canvas_setup { - let image_bitmap = offscreen_canvas_setup - .offscreen_canvas - .transfer_to_image_bitmap() - .expect("couldn't transfer offscreen canvas to image bitmap."); - offscreen_canvas_setup - .bitmap_renderer - .transfer_from_image_bitmap(&image_bitmap); - - log::info!("Transferring OffscreenCanvas to ImageBitmapRenderer"); + let frame = match surface.get_current_texture() { + Ok(frame) => frame, + Err(_) => { + surface.configure(&device, &config); + surface + .get_current_texture() + .expect("Failed to acquire next surface texture!") + } + }; + let view = frame.texture.create_view(&wgpu::TextureViewDescriptor { + format: Some(surface_view_format), + ..wgpu::TextureViewDescriptor::default() + }); + + example.render(&view, &device, &queue, &spawner); + + frame.present(); + + #[cfg(target_arch = "wasm32")] + { + if let Some(offscreen_canvas_setup) = &offscreen_canvas_setup { + let image_bitmap = offscreen_canvas_setup + .offscreen_canvas + .transfer_to_image_bitmap() + .expect("couldn't transfer offscreen canvas to image bitmap."); + offscreen_canvas_setup + .bitmap_renderer + .transfer_from_image_bitmap(&image_bitmap); + + log::info!("Transferring OffscreenCanvas to ImageBitmapRenderer"); + } } } - } + }, _ => {} } }); @@ -565,15 +559,18 @@ impl From> for GpuT example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); // Handle specific case for bunnymark - #[allow(deprecated)] + // #[allow(deprecated)] if params.image_path == "/examples/bunnymark/screenshot.png" { // Press spacebar to spawn bunnies example.update(winit::event::WindowEvent::KeyboardInput { - input: winit::event::KeyboardInput { - scancode: 0, - state: winit::event::ElementState::Pressed, - virtual_keycode: Some(winit::event::VirtualKeyCode::Space), - modifiers: winit::event::ModifiersState::empty(), + event: KeyEvent { + physical_key: PhysicalKey::Code(KeyCode::Space), + state: ElementState::Pressed, + logical_key: Key::Named(NamedKey::Space), + text: None, + location: KeyLocation::Standard, + repeat: false, + platform_specific: false, }, device_id: unsafe { winit::event::DeviceId::dummy() }, is_synthetic: false, @@ -631,3 +628,17 @@ impl From> for GpuT }) } } + +fn resize_window( + example: E, + size: PhysicalSize, + config: &mut SurfaceConfiguration, + surface: &mut Surface, + device: &wgpu::Device, + queue: &wgpu::Queue, +) { + config.width = size.width.max(1); + config.height = size.height.max(1); + example.resize(&config, &device, &queue); + surface.configure(&device, &config); +} diff --git a/examples/uniform-values/src/main.rs b/examples/uniform-values/src/main.rs index 733a863ee4..a6ebdbdea7 100644 --- a/examples/uniform-values/src/main.rs +++ b/examples/uniform-values/src/main.rs @@ -323,7 +323,7 @@ async fn run(event_loop: EventLoop<()>, window: Window) { } fn main() { - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let window = winit::window::WindowBuilder::new() .with_title("Remember: Use U/D to change sample count!") .with_inner_size(winit::dpi::LogicalSize::new(900, 900)) From a5b8244967721c1dd09fc4f4bd44659e24645307 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 21:39:51 +0200 Subject: [PATCH 08/41] fix: `examples/uniform-values/src/main.rs` --- examples/common/src/framework.rs | 1 - examples/uniform-values/src/main.rs | 134 +++++++++++++++------------- 2 files changed, 74 insertions(+), 61 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 3468765ffd..a4ead3dc5f 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -14,7 +14,6 @@ use winit::{ event::{self, ElementState, KeyEvent, WindowEvent}, event_loop::{ControlFlow, EventLoop}, keyboard::{Key, KeyCode, KeyLocation, NamedKey, PhysicalKey}, - platform::scancode::PhysicalKeyExtScancode, }; #[allow(dead_code)] diff --git a/examples/uniform-values/src/main.rs b/examples/uniform-values/src/main.rs index a6ebdbdea7..1f0109ed72 100644 --- a/examples/uniform-values/src/main.rs +++ b/examples/uniform-values/src/main.rs @@ -20,8 +20,9 @@ // with actual GPU-allocated WGPU storage buffers. use encase::ShaderType; use winit::{ - event::{Event, VirtualKeyCode, WindowEvent}, + event::{Event, KeyEvent, WindowEvent}, event_loop::EventLoop, + keyboard::{Key, NamedKey}, window::Window, }; @@ -227,34 +228,46 @@ async fn run(event_loop: EventLoop<()>, window: Window) { // (6) let mut state = Some(AppState::default()); let main_window_id = wgpu_context.as_ref().unwrap().window.id(); - event_loop.run(move |event, _, control_flow| { - control_flow.set_wait(); + event_loop.run(move |event, target| { match event { - Event::LoopDestroyed => { + Event::LoopExiting => { wgpu_context = None; state = None; } Event::WindowEvent { window_id, event } if window_id == main_window_id => match event { WindowEvent::CloseRequested => { - control_flow.set_exit(); + target.exit(); } - WindowEvent::KeyboardInput { input, .. } => { + WindowEvent::KeyboardInput { + event: + KeyEvent { + logical_key, text, .. + }, + .. + } => { let state_mut = state.as_mut().unwrap(); let wgpu_context_ref = wgpu_context.as_ref().unwrap(); - if let Some(virtual_keycode) = input.virtual_keycode { - // (7a) - match virtual_keycode { - VirtualKeyCode::Escape => control_flow.set_exit(), - VirtualKeyCode::Up => state_mut.translate_view(1, 1), - VirtualKeyCode::Down => state_mut.translate_view(-1, 1), - VirtualKeyCode::Left => state_mut.translate_view(-1, 0), - VirtualKeyCode::Right => state_mut.translate_view(1, 0), - VirtualKeyCode::U => state_mut.max_iterations += 3, - VirtualKeyCode::D => state_mut.max_iterations -= 3, + + if let Key::Named(key) = logical_key { + match key { + NamedKey::Escape => target.exit(), + NamedKey::ArrowUp => state_mut.translate_view(1, 1), + NamedKey::ArrowDown => state_mut.translate_view(-1, 1), + NamedKey::ArrowLeft => state_mut.translate_view(-1, 0), + NamedKey::ArrowRight => state_mut.translate_view(1, 0), _ => {} } - wgpu_context_ref.window.request_redraw(); } + + if let Some(text) = text { + if text == "u" { + state_mut.max_iterations += 3; + } else if text == "d" { + state_mut.max_iterations -= 3; + } + }; + + wgpu_context_ref.window.request_redraw(); } WindowEvent::MouseWheel { delta, .. } => { let change = match delta { @@ -272,54 +285,55 @@ async fn run(event_loop: EventLoop<()>, window: Window) { wgpu_context_mut.resize(new_size); wgpu_context_mut.window.request_redraw(); } - _ => {} - }, - Event::RedrawRequested(id) if id == main_window_id => { - let wgpu_context_ref = wgpu_context.as_ref().unwrap(); - let state_ref = state.as_ref().unwrap(); - let frame = wgpu_context_ref.surface.get_current_texture().unwrap(); - let view = frame - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); + WindowEvent::RedrawRequested => { + let wgpu_context_ref = wgpu_context.as_ref().unwrap(); + let state_ref = state.as_ref().unwrap(); + let frame = wgpu_context_ref.surface.get_current_texture().unwrap(); + let view = frame + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); - // (8) - wgpu_context_ref.queue.write_buffer( - &wgpu_context_ref.uniform_buffer, - 0, - &state_ref.as_wgsl_bytes().expect( - "Error in encase translating AppState \ + // (8) + wgpu_context_ref.queue.write_buffer( + &wgpu_context_ref.uniform_buffer, + 0, + &state_ref.as_wgsl_bytes().expect( + "Error in encase translating AppState \ struct to WGSL bytes.", - ), - ); - let mut encoder = wgpu_context_ref - .device - .create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); - { - let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - occlusion_query_set: None, - timestamp_writes: None, - }); - render_pass.set_pipeline(&wgpu_context_ref.pipeline); - // (9) - render_pass.set_bind_group(0, &wgpu_context_ref.bind_group, &[]); - render_pass.draw(0..3, 0..1); + ), + ); + let mut encoder = wgpu_context_ref + .device + .create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + { + let mut render_pass = + encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + occlusion_query_set: None, + timestamp_writes: None, + }); + render_pass.set_pipeline(&wgpu_context_ref.pipeline); + // (9) + render_pass.set_bind_group(0, &wgpu_context_ref.bind_group, &[]); + render_pass.draw(0..3, 0..1); + } + wgpu_context_ref.queue.submit(Some(encoder.finish())); + frame.present(); } - wgpu_context_ref.queue.submit(Some(encoder.finish())); - frame.present(); - } + _ => {} + }, _ => {} } - }); + }).unwrap(); } fn main() { From 5676afb0a635908aeb98931decaeb9a8e7c9f286 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 21:44:05 +0200 Subject: [PATCH 09/41] fix: `examples/hello-windows/src/main.rs` --- examples/hello-windows/src/main.rs | 100 ++++++++++++++--------------- wgpu-hal/src/gles/egl.rs | 37 ++++++----- 2 files changed, 71 insertions(+), 66 deletions(-) diff --git a/examples/hello-windows/src/main.rs b/examples/hello-windows/src/main.rs index ba28341395..08f6f9f09b 100644 --- a/examples/hello-windows/src/main.rs +++ b/examples/hello-windows/src/main.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use winit::{ event::{Event, WindowEvent}, - event_loop::{ControlFlow, EventLoop}, + event_loop::EventLoop, window::{Window, WindowId}, }; @@ -95,68 +95,66 @@ async fn run(event_loop: EventLoop<()>, viewports: Vec<(Window, wgpu::Color)>) { .map(|desc| (desc.window.id(), desc.build(&adapter, &device))) .collect(); - event_loop.run(move |event, _, control_flow| { + event_loop.run(move |event, target| { // Have the closure take ownership of the resources. // `event_loop.run` never returns, therefore we must do this to ensure // the resources are properly cleaned up. let _ = (&instance, &adapter); - *control_flow = ControlFlow::Wait; match event { Event::WindowEvent { - window_id, - event: WindowEvent::Resized(size), - .. - } => { - // Recreate the swap chain with the new size - if let Some(viewport) = viewports.get_mut(&window_id) { - viewport.resize(&device, size); - // On macos the window needs to be redrawn manually after resizing - viewport.desc.window.request_redraw(); + window_id, event, .. + } => match event { + WindowEvent::Resized(new_size) => { + // Recreate the swap chain with the new size + if let Some(viewport) = viewports.get_mut(&window_id) { + viewport.resize(&device, new_size); + // On macos the window needs to be redrawn manually after resizing + viewport.desc.window.request_redraw(); + } } - } - Event::RedrawRequested(window_id) => { - if let Some(viewport) = viewports.get_mut(&window_id) { - let frame = viewport.get_current_texture(); - let view = frame - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); - let mut encoder = device - .create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); - { - let _rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(viewport.desc.background), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - timestamp_writes: None, - occlusion_query_set: None, - }); + WindowEvent::RedrawRequested => { + if let Some(viewport) = viewports.get_mut(&window_id) { + let frame = viewport.get_current_texture(); + let view = frame + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: None, + }); + { + let _rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(viewport.desc.background), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + } + + queue.submit(Some(encoder.finish())); + frame.present(); } - - queue.submit(Some(encoder.finish())); - frame.present(); } - } - Event::WindowEvent { - window_id, - event: WindowEvent::CloseRequested, - .. - } => { - viewports.remove(&window_id); - if viewports.is_empty() { - *control_flow = ControlFlow::Exit + WindowEvent::CloseRequested => { + viewports.remove(&window_id); + if viewports.is_empty() { + target.exit(); + } } - } + _ => {} + }, _ => {} } - }); + }).unwrap(); } fn main() { @@ -169,7 +167,7 @@ fn main() { const ROWS: u32 = 4; const COLUMNS: u32 = 4; - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let mut viewports = Vec::with_capacity((ROWS * COLUMNS) as usize); for row in 0..ROWS { for column in 0..COLUMNS { diff --git a/wgpu-hal/src/gles/egl.rs b/wgpu-hal/src/gles/egl.rs index 2758b0ef1e..6310176d62 100644 --- a/wgpu-hal/src/gles/egl.rs +++ b/wgpu-hal/src/gles/egl.rs @@ -892,17 +892,19 @@ impl crate::Instance for Instance { use std::ops::DerefMut; let display_attributes = [khronos_egl::ATTRIB_NONE]; - let display = inner - .egl - .instance - .upcast::() - .unwrap() - .get_platform_display( - EGL_PLATFORM_WAYLAND_KHR, - display_handle.display.as_ptr(), - &display_attributes, - ) - .unwrap(); + let display = unsafe { + inner + .egl + .instance + .upcast::() + .unwrap() + .get_platform_display( + EGL_PLATFORM_WAYLAND_KHR, + display_handle.display.as_ptr(), + &display_attributes, + ) + } + .unwrap(); let new_inner = Inner::create( self.flags, @@ -1155,19 +1157,24 @@ impl crate::Surface for Surface { (WindowKind::AngleX11, Rwh::Xcb(handle)) => { handle.window.get() as *mut std::ffi::c_void } - (WindowKind::Unknown, Rwh::AndroidNdk(handle)) => handle.a_native_window.as_ptr(), + (WindowKind::Unknown, Rwh::AndroidNdk(handle)) => { + handle.a_native_window.as_ptr() + } (WindowKind::Wayland, Rwh::Wayland(handle)) => { let library = &self.wsi.display_owner.as_ref().unwrap().library; let wl_egl_window_create: libloading::Symbol = unsafe { library.get(b"wl_egl_window_create") }.unwrap(); - let window = unsafe { wl_egl_window_create(handle.surface.as_ptr(), 640, 480) } - as *mut _ as *mut std::ffi::c_void; + let window = + unsafe { wl_egl_window_create(handle.surface.as_ptr(), 640, 480) } + as *mut _ as *mut std::ffi::c_void; wl_window = Some(window); window } #[cfg(target_os = "emscripten")] (WindowKind::Unknown, Rwh::Web(handle)) => handle.id as *mut std::ffi::c_void, - (WindowKind::Unknown, Rwh::Win32(handle)) => handle.hwnd.get() as * mut std::ffi::c_void, + (WindowKind::Unknown, Rwh::Win32(handle)) => { + handle.hwnd.get() as *mut std::ffi::c_void + } (WindowKind::Unknown, Rwh::AppKit(handle)) => { #[cfg(not(target_os = "macos"))] let window_ptr = handle.ns_view.as_ptr(); From c2c23462cce7f5c310a6119dcf84f1e85e497282 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 21:47:17 +0200 Subject: [PATCH 10/41] fix: `examples/hello-triangle/src/main.rs` --- examples/hello-triangle/src/main.rs | 101 ++++++++++++++-------------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/examples/hello-triangle/src/main.rs b/examples/hello-triangle/src/main.rs index ebb8f6b736..f695cd1151 100644 --- a/examples/hello-triangle/src/main.rs +++ b/examples/hello-triangle/src/main.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use winit::{ event::{Event, WindowEvent}, - event_loop::{ControlFlow, EventLoop}, + event_loop::EventLoop, window::Window, }; @@ -82,67 +82,66 @@ async fn run(event_loop: EventLoop<()>, window: Window) { surface.configure(&device, &config); - event_loop.run(move |event, _, control_flow| { + event_loop.run(move |event, target| { // Have the closure take ownership of the resources. // `event_loop.run` never returns, therefore we must do this to ensure // the resources are properly cleaned up. let _ = (&instance, &adapter, &shader, &pipeline_layout); - *control_flow = ControlFlow::Wait; - match event { - Event::WindowEvent { - event: WindowEvent::Resized(size), - .. - } => { - // Reconfigure the surface with the new size - config.width = size.width; - config.height = size.height; - surface.configure(&device, &config); - // On macos the window needs to be redrawn manually after resizing - window.request_redraw(); - } - Event::RedrawRequested(_) => { - let frame = surface - .get_current_texture() - .expect("Failed to acquire next swap chain texture"); - let view = frame - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); - let mut encoder = - device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); - { - let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - timestamp_writes: None, - occlusion_query_set: None, - }); - rpass.set_pipeline(&render_pipeline); - rpass.draw(0..3, 0..1); + if let Event::WindowEvent { + window_id: _, + event, + } = event + { + match event { + WindowEvent::Resized(new_size) => { + // Reconfigure the surface with the new size + config.width = new_size.width; + config.height = new_size.height; + surface.configure(&device, &config); + // On macos the window needs to be redrawn manually after resizing + window.request_redraw(); } + WindowEvent::RedrawRequested => { + let frame = surface + .get_current_texture() + .expect("Failed to acquire next swap chain texture"); + let view = frame + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); + let mut encoder = device + .create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + rpass.set_pipeline(&render_pipeline); + rpass.draw(0..3, 0..1); + } - queue.submit(Some(encoder.finish())); - frame.present(); - } - Event::WindowEvent { - event: WindowEvent::CloseRequested, - .. - } => *control_flow = ControlFlow::Exit, - _ => {} + queue.submit(Some(encoder.finish())); + frame.present(); + } + WindowEvent::CloseRequested => target.exit(), + _ => {} + }; } - }); + }).unwrap(); } fn main() { - let event_loop = EventLoop::new(); + let event_loop = EventLoop::new().unwrap(); let window = winit::window::Window::new(&event_loop).unwrap(); #[cfg(not(target_arch = "wasm32"))] { From ddbbcc278e50e0ad6b50bdbf50f80419a6a24c10 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 21:52:17 +0200 Subject: [PATCH 11/41] make `cargo clippy` happy --- examples/hello-windows/src/main.rs | 114 +++++++++++++++-------------- wgpu-core/src/id.rs | 2 +- wgpu-hal/src/gles/egl.rs | 2 +- 3 files changed, 61 insertions(+), 57 deletions(-) diff --git a/examples/hello-windows/src/main.rs b/examples/hello-windows/src/main.rs index 08f6f9f09b..43bd986965 100644 --- a/examples/hello-windows/src/main.rs +++ b/examples/hello-windows/src/main.rs @@ -95,66 +95,70 @@ async fn run(event_loop: EventLoop<()>, viewports: Vec<(Window, wgpu::Color)>) { .map(|desc| (desc.window.id(), desc.build(&adapter, &device))) .collect(); - event_loop.run(move |event, target| { - // Have the closure take ownership of the resources. - // `event_loop.run` never returns, therefore we must do this to ensure - // the resources are properly cleaned up. - let _ = (&instance, &adapter); - - match event { - Event::WindowEvent { - window_id, event, .. - } => match event { - WindowEvent::Resized(new_size) => { - // Recreate the swap chain with the new size - if let Some(viewport) = viewports.get_mut(&window_id) { - viewport.resize(&device, new_size); - // On macos the window needs to be redrawn manually after resizing - viewport.desc.window.request_redraw(); + event_loop + .run(move |event, target| { + // Have the closure take ownership of the resources. + // `event_loop.run` never returns, therefore we must do this to ensure + // the resources are properly cleaned up. + let _ = (&instance, &adapter); + + if let Event::WindowEvent { window_id, event } = event { + match event { + WindowEvent::Resized(new_size) => { + // Recreate the swap chain with the new size + if let Some(viewport) = viewports.get_mut(&window_id) { + viewport.resize(&device, new_size); + // On macos the window needs to be redrawn manually after resizing + viewport.desc.window.request_redraw(); + } } - } - WindowEvent::RedrawRequested => { - if let Some(viewport) = viewports.get_mut(&window_id) { - let frame = viewport.get_current_texture(); - let view = frame - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); - let mut encoder = - device.create_command_encoder(&wgpu::CommandEncoderDescriptor { - label: None, - }); - { - let _rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(viewport.desc.background), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - timestamp_writes: None, - occlusion_query_set: None, - }); + WindowEvent::RedrawRequested => { + if let Some(viewport) = viewports.get_mut(&window_id) { + let frame = viewport.get_current_texture(); + let view = frame + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: None, + }); + { + let _rpass = + encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some( + wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear( + viewport.desc.background, + ), + store: wgpu::StoreOp::Store, + }, + }, + )], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + } + + queue.submit(Some(encoder.finish())); + frame.present(); } - - queue.submit(Some(encoder.finish())); - frame.present(); } - } - WindowEvent::CloseRequested => { - viewports.remove(&window_id); - if viewports.is_empty() { - target.exit(); + WindowEvent::CloseRequested => { + viewports.remove(&window_id); + if viewports.is_empty() { + target.exit(); + } } + _ => {} } - _ => {} - }, - _ => {} - } - }).unwrap(); + } + }) + .unwrap(); } fn main() { diff --git a/wgpu-core/src/id.rs b/wgpu-core/src/id.rs index 2386bfb6e7..d5ad6f218f 100644 --- a/wgpu-core/src/id.rs +++ b/wgpu-core/src/id.rs @@ -154,7 +154,7 @@ impl Eq for Id {} impl PartialOrd for Id { fn partial_cmp(&self, other: &Self) -> Option { - self.0.partial_cmp(&other.0) + Some(self.cmp(other)) } } diff --git a/wgpu-hal/src/gles/egl.rs b/wgpu-hal/src/gles/egl.rs index 6310176d62..8bed6c3166 100644 --- a/wgpu-hal/src/gles/egl.rs +++ b/wgpu-hal/src/gles/egl.rs @@ -1166,7 +1166,7 @@ impl crate::Surface for Surface { unsafe { library.get(b"wl_egl_window_create") }.unwrap(); let window = unsafe { wl_egl_window_create(handle.surface.as_ptr(), 640, 480) } - as *mut _ as *mut std::ffi::c_void; + as *mut _; wl_window = Some(window); window } From 6105633c108db5e822929086733b3fc40c29e4d0 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 21:54:19 +0200 Subject: [PATCH 12/41] `cargo fmt` --- examples/hello-triangle/src/main.rs | 111 +++++++-------- examples/uniform-values/src/main.rs | 202 +++++++++++++++------------- wgpu-hal/src/vulkan/instance.rs | 4 +- wgpu/src/lib.rs | 6 +- 4 files changed, 169 insertions(+), 154 deletions(-) diff --git a/examples/hello-triangle/src/main.rs b/examples/hello-triangle/src/main.rs index f695cd1151..eb18bc058b 100644 --- a/examples/hello-triangle/src/main.rs +++ b/examples/hello-triangle/src/main.rs @@ -82,62 +82,67 @@ async fn run(event_loop: EventLoop<()>, window: Window) { surface.configure(&device, &config); - event_loop.run(move |event, target| { - // Have the closure take ownership of the resources. - // `event_loop.run` never returns, therefore we must do this to ensure - // the resources are properly cleaned up. - let _ = (&instance, &adapter, &shader, &pipeline_layout); + event_loop + .run(move |event, target| { + // Have the closure take ownership of the resources. + // `event_loop.run` never returns, therefore we must do this to ensure + // the resources are properly cleaned up. + let _ = (&instance, &adapter, &shader, &pipeline_layout); - if let Event::WindowEvent { - window_id: _, - event, - } = event - { - match event { - WindowEvent::Resized(new_size) => { - // Reconfigure the surface with the new size - config.width = new_size.width; - config.height = new_size.height; - surface.configure(&device, &config); - // On macos the window needs to be redrawn manually after resizing - window.request_redraw(); - } - WindowEvent::RedrawRequested => { - let frame = surface - .get_current_texture() - .expect("Failed to acquire next swap chain texture"); - let view = frame - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); - let mut encoder = device - .create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); - { - let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - timestamp_writes: None, - occlusion_query_set: None, - }); - rpass.set_pipeline(&render_pipeline); - rpass.draw(0..3, 0..1); + if let Event::WindowEvent { + window_id: _, + event, + } = event + { + match event { + WindowEvent::Resized(new_size) => { + // Reconfigure the surface with the new size + config.width = new_size.width; + config.height = new_size.height; + surface.configure(&device, &config); + // On macos the window needs to be redrawn manually after resizing + window.request_redraw(); } + WindowEvent::RedrawRequested => { + let frame = surface + .get_current_texture() + .expect("Failed to acquire next swap chain texture"); + let view = frame + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: None, + }); + { + let mut rpass = + encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + rpass.set_pipeline(&render_pipeline); + rpass.draw(0..3, 0..1); + } - queue.submit(Some(encoder.finish())); - frame.present(); - } - WindowEvent::CloseRequested => target.exit(), - _ => {} - }; - } - }).unwrap(); + queue.submit(Some(encoder.finish())); + frame.present(); + } + WindowEvent::CloseRequested => target.exit(), + _ => {} + }; + } + }) + .unwrap(); } fn main() { diff --git a/examples/uniform-values/src/main.rs b/examples/uniform-values/src/main.rs index 1f0109ed72..f47971db2c 100644 --- a/examples/uniform-values/src/main.rs +++ b/examples/uniform-values/src/main.rs @@ -228,112 +228,120 @@ async fn run(event_loop: EventLoop<()>, window: Window) { // (6) let mut state = Some(AppState::default()); let main_window_id = wgpu_context.as_ref().unwrap().window.id(); - event_loop.run(move |event, target| { - match event { - Event::LoopExiting => { - wgpu_context = None; - state = None; - } - Event::WindowEvent { window_id, event } if window_id == main_window_id => match event { - WindowEvent::CloseRequested => { - target.exit(); + event_loop + .run(move |event, target| { + match event { + Event::LoopExiting => { + wgpu_context = None; + state = None; } - WindowEvent::KeyboardInput { - event: - KeyEvent { - logical_key, text, .. - }, - .. - } => { - let state_mut = state.as_mut().unwrap(); - let wgpu_context_ref = wgpu_context.as_ref().unwrap(); - - if let Key::Named(key) = logical_key { - match key { - NamedKey::Escape => target.exit(), - NamedKey::ArrowUp => state_mut.translate_view(1, 1), - NamedKey::ArrowDown => state_mut.translate_view(-1, 1), - NamedKey::ArrowLeft => state_mut.translate_view(-1, 0), - NamedKey::ArrowRight => state_mut.translate_view(1, 0), - _ => {} + Event::WindowEvent { window_id, event } if window_id == main_window_id => { + match event { + WindowEvent::CloseRequested => { + target.exit(); } - } + WindowEvent::KeyboardInput { + event: + KeyEvent { + logical_key, text, .. + }, + .. + } => { + let state_mut = state.as_mut().unwrap(); + let wgpu_context_ref = wgpu_context.as_ref().unwrap(); - if let Some(text) = text { - if text == "u" { - state_mut.max_iterations += 3; - } else if text == "d" { - state_mut.max_iterations -= 3; - } - }; + if let Key::Named(key) = logical_key { + match key { + NamedKey::Escape => target.exit(), + NamedKey::ArrowUp => state_mut.translate_view(1, 1), + NamedKey::ArrowDown => state_mut.translate_view(-1, 1), + NamedKey::ArrowLeft => state_mut.translate_view(-1, 0), + NamedKey::ArrowRight => state_mut.translate_view(1, 0), + _ => {} + } + } - wgpu_context_ref.window.request_redraw(); - } - WindowEvent::MouseWheel { delta, .. } => { - let change = match delta { - winit::event::MouseScrollDelta::LineDelta(_, vertical) => vertical, - winit::event::MouseScrollDelta::PixelDelta(pos) => pos.y as f32 / 20.0, - }; - let state_mut = state.as_mut().unwrap(); - let wgpu_context_ref = wgpu_context.as_ref().unwrap(); - // (7b) - state_mut.zoom(change); - wgpu_context_ref.window.request_redraw(); - } - WindowEvent::Resized(new_size) => { - let wgpu_context_mut = wgpu_context.as_mut().unwrap(); - wgpu_context_mut.resize(new_size); - wgpu_context_mut.window.request_redraw(); - } - WindowEvent::RedrawRequested => { - let wgpu_context_ref = wgpu_context.as_ref().unwrap(); - let state_ref = state.as_ref().unwrap(); - let frame = wgpu_context_ref.surface.get_current_texture().unwrap(); - let view = frame - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); + if let Some(text) = text { + if text == "u" { + state_mut.max_iterations += 3; + } else if text == "d" { + state_mut.max_iterations -= 3; + } + }; + + wgpu_context_ref.window.request_redraw(); + } + WindowEvent::MouseWheel { delta, .. } => { + let change = match delta { + winit::event::MouseScrollDelta::LineDelta(_, vertical) => vertical, + winit::event::MouseScrollDelta::PixelDelta(pos) => { + pos.y as f32 / 20.0 + } + }; + let state_mut = state.as_mut().unwrap(); + let wgpu_context_ref = wgpu_context.as_ref().unwrap(); + // (7b) + state_mut.zoom(change); + wgpu_context_ref.window.request_redraw(); + } + WindowEvent::Resized(new_size) => { + let wgpu_context_mut = wgpu_context.as_mut().unwrap(); + wgpu_context_mut.resize(new_size); + wgpu_context_mut.window.request_redraw(); + } + WindowEvent::RedrawRequested => { + let wgpu_context_ref = wgpu_context.as_ref().unwrap(); + let state_ref = state.as_ref().unwrap(); + let frame = wgpu_context_ref.surface.get_current_texture().unwrap(); + let view = frame + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); - // (8) - wgpu_context_ref.queue.write_buffer( - &wgpu_context_ref.uniform_buffer, - 0, - &state_ref.as_wgsl_bytes().expect( - "Error in encase translating AppState \ + // (8) + wgpu_context_ref.queue.write_buffer( + &wgpu_context_ref.uniform_buffer, + 0, + &state_ref.as_wgsl_bytes().expect( + "Error in encase translating AppState \ struct to WGSL bytes.", - ), - ); - let mut encoder = wgpu_context_ref - .device - .create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); - { - let mut render_pass = - encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - occlusion_query_set: None, - timestamp_writes: None, - }); - render_pass.set_pipeline(&wgpu_context_ref.pipeline); - // (9) - render_pass.set_bind_group(0, &wgpu_context_ref.bind_group, &[]); - render_pass.draw(0..3, 0..1); + ), + ); + let mut encoder = wgpu_context_ref.device.create_command_encoder( + &wgpu::CommandEncoderDescriptor { label: None }, + ); + { + let mut render_pass = + encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some( + wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + }, + )], + depth_stencil_attachment: None, + occlusion_query_set: None, + timestamp_writes: None, + }); + render_pass.set_pipeline(&wgpu_context_ref.pipeline); + // (9) + render_pass.set_bind_group(0, &wgpu_context_ref.bind_group, &[]); + render_pass.draw(0..3, 0..1); + } + wgpu_context_ref.queue.submit(Some(encoder.finish())); + frame.present(); + } + _ => {} } - wgpu_context_ref.queue.submit(Some(encoder.finish())); - frame.present(); } _ => {} - }, - _ => {} - } - }).unwrap(); + } + }) + .unwrap(); } fn main() { diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 255aba2478..59efada01b 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -750,7 +750,9 @@ impl crate::Instance for super::Instance { let connection = display.connection.expect("Pointer to X-Server is not set."); self.create_surface_from_xcb(connection.as_ptr(), handle.window.get()) } - (Rwh::AndroidNdk(handle), _) => self.create_surface_android(handle.a_native_window.as_ptr()), + (Rwh::AndroidNdk(handle), _) => { + self.create_surface_android(handle.a_native_window.as_ptr()) + } #[cfg(windows)] (Rwh::Win32(handle), _) => { use winapi::um::libloaderapi::GetModuleHandleW; diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 453a73f3cb..1c6732ac78 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -1945,19 +1945,19 @@ impl Instance { let raw_display_handle = window .display_handle() .map_err(|e| CreateSurfaceError { - inner: CreateSurfaceErrorKind::RawHandle(e) + inner: CreateSurfaceErrorKind::RawHandle(e), })? .as_raw(); let raw_window_handle = window .window_handle() .map_err(|e| CreateSurfaceError { - inner: CreateSurfaceErrorKind::RawHandle(e) + inner: CreateSurfaceErrorKind::RawHandle(e), })? .as_raw(); let (id, data) = DynContext::instance_create_surface( &*self.context, raw_display_handle, - raw_window_handle + raw_window_handle, )?; Ok(Surface { context: Arc::clone(&self.context), From 025b20b4178f4a1072420f0250699a03e38d6e49 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 22:12:37 +0200 Subject: [PATCH 13/41] updating `wgpu-hal/Cargo.toml`, fix `wgpu-hal/examples/halmark/main.rs` bumping up `winit` --- Cargo.lock | 177 ++---------------------------- wgpu-hal/Cargo.toml | 2 +- wgpu-hal/examples/halmark/main.rs | 15 ++- 3 files changed, 21 insertions(+), 173 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34ae0dfb30..d4220d9ceb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,24 +60,6 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" -[[package]] -name = "android-activity" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" -dependencies = [ - "android-properties", - "bitflags 1.3.2", - "cc", - "jni-sys", - "libc", - "log", - "ndk 0.7.0", - "ndk-context", - "ndk-sys 0.4.1+23.1.7779620", - "num_enum 0.6.1", -] - [[package]] name = "android-activity" version = "0.5.0" @@ -323,32 +305,13 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -[[package]] -name = "block-sys" -version = "0.1.0-beta.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" -dependencies = [ - "objc-sys 0.2.0-beta.2", -] - [[package]] name = "block-sys" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dd7cf50912cddc06dc5ea7c08c5e81c1b2c842a70d19def1848d54c586fed92" dependencies = [ - "objc-sys 0.3.1", -] - -[[package]] -name = "block2" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" -dependencies = [ - "block-sys 0.1.0-beta.1", - "objc2-encode 2.0.0-pre.2", + "objc-sys", ] [[package]] @@ -357,8 +320,8 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" dependencies = [ - "block-sys 0.2.0", - "objc2 0.4.1", + "block-sys", + "objc2", ] [[package]] @@ -1655,9 +1618,9 @@ version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" dependencies = [ - "block2 0.3.0", + "block2", "dispatch", - "objc2 0.4.1", + "objc2", ] [[package]] @@ -2225,15 +2188,6 @@ dependencies = [ "num_enum_derive 0.5.11", ] -[[package]] -name = "num_enum" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" -dependencies = [ - "num_enum_derive 0.6.1", -] - [[package]] name = "num_enum" version = "0.7.0" @@ -2255,18 +2209,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "num_enum_derive" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "num_enum_derive" version = "0.7.0" @@ -2313,46 +2255,20 @@ dependencies = [ "objc_exception", ] -[[package]] -name = "objc-sys" -version = "0.2.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" - [[package]] name = "objc-sys" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99e1d07c6eab1ce8b6382b8e3c7246fe117ff3f8b34be065f5ebace6749fe845" -[[package]] -name = "objc2" -version = "0.3.0-beta.3.patch-leaks.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" -dependencies = [ - "block2 0.2.0-alpha.6", - "objc-sys 0.2.0-beta.2", - "objc2-encode 2.0.0-pre.2", -] - [[package]] name = "objc2" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" dependencies = [ - "objc-sys 0.3.1", - "objc2-encode 3.0.0", -] - -[[package]] -name = "objc2-encode" -version = "2.0.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" -dependencies = [ - "objc-sys 0.2.0-beta.2", + "objc-sys", + "objc2-encode", ] [[package]] @@ -2889,19 +2805,6 @@ dependencies = [ "tiny-skia 0.7.0", ] -[[package]] -name = "sctk-adwaita" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" -dependencies = [ - "ab_glyph", - "log", - "memmap2 0.5.10", - "smithay-client-toolkit 0.16.1", - "tiny-skia 0.8.4", -] - [[package]] name = "sctk-adwaita" version = "0.7.0" @@ -3276,20 +3179,6 @@ dependencies = [ "tiny-skia-path 0.7.0", ] -[[package]] -name = "tiny-skia" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" -dependencies = [ - "arrayref", - "arrayvec 0.7.4", - "bytemuck", - "cfg-if", - "png", - "tiny-skia-path 0.8.4", -] - [[package]] name = "tiny-skia" version = "0.11.2" @@ -3314,17 +3203,6 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "tiny-skia-path" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", -] - [[package]] name = "tiny-skia-path" version = "0.11.2" @@ -4069,7 +3947,7 @@ dependencies = [ "web-sys", "wgpu-types", "winapi", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4713,41 +4591,6 @@ dependencies = [ "x11-dl", ] -[[package]] -name = "winit" -version = "0.28.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" -dependencies = [ - "android-activity 0.4.3", - "bitflags 1.3.2", - "cfg_aliases", - "core-foundation", - "core-graphics 0.22.3", - "dispatch", - "instant", - "libc", - "log", - "mio", - "ndk 0.7.0", - "objc2 0.3.0-beta.3.patch-leaks.3", - "once_cell", - "orbclient", - "percent-encoding", - "raw-window-handle 0.5.2", - "redox_syscall 0.3.5", - "sctk-adwaita 0.5.4", - "smithay-client-toolkit 0.16.1", - "wasm-bindgen", - "wayland-client 0.29.5", - "wayland-commons", - "wayland-protocols 0.29.5", - "wayland-scanner 0.29.5", - "web-sys", - "windows-sys 0.45.0", - "x11-dl", -] - [[package]] name = "winit" version = "0.29.2" @@ -4755,7 +4598,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b829f75d02fe1e225b97c91a04c326900147a50234d1141a1cbe215ce8798c11" dependencies = [ "ahash", - "android-activity 0.5.0", + "android-activity", "atomic-waker", "bitflags 2.4.1", "bytemuck", @@ -4771,7 +4614,7 @@ dependencies = [ "memmap2 0.9.0", "ndk 0.8.0", "ndk-sys 0.5.0+25.2.9519653", - "objc2 0.4.1", + "objc2", "once_cell", "orbclient", "percent-encoding", diff --git a/wgpu-hal/Cargo.toml b/wgpu-hal/Cargo.toml index 136d4ab246..f769661831 100644 --- a/wgpu-hal/Cargo.toml +++ b/wgpu-hal/Cargo.toml @@ -137,7 +137,7 @@ features = ["wgsl-in"] [dev-dependencies] cfg-if = "1" env_logger = "0.10" -winit = { version = "0.28.7", features = [ "android-native-activity" ] } # for "halmark" example +winit = { version = "0.29.2", features = [ "android-native-activity" ] } # for "halmark" example [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] glutin = "0.29.1" # for "gles" example diff --git a/wgpu-hal/examples/halmark/main.rs b/wgpu-hal/examples/halmark/main.rs index b751a85e96..2ff6b917c3 100644 --- a/wgpu-hal/examples/halmark/main.rs +++ b/wgpu-hal/examples/halmark/main.rs @@ -5,7 +5,7 @@ extern crate wgpu_hal as hal; use hal::{ Adapter as _, CommandEncoder as _, Device as _, Instance as _, Queue as _, Surface as _, }; -use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle}; +use raw_window_handle::{HasDisplayHandle, HasWindowHandle}; use std::{ borrow::{Borrow, Cow}, @@ -95,10 +95,15 @@ impl Example { gles_minor_version: wgt::Gles3MinorVersion::default(), }; let instance = unsafe { A::Instance::init(&instance_desc)? }; - let mut surface = unsafe { - instance - .create_surface(window.raw_display_handle(), window.raw_window_handle()) - .unwrap() + let mut surface = { + let raw_window_handle = window.window_handle()?.as_raw(); + let raw_display_handle = window.display_handle()?.as_raw(); + + unsafe { + instance + .create_surface(raw_display_handle, raw_window_handle) + .unwrap() + } }; let (adapter, capabilities) = unsafe { From 76d317570468600ccab07bf8aec96fb2c5caf312 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 22:22:13 +0200 Subject: [PATCH 14/41] fix `wgpu-hal/examples/halmark/main.rs` --- wgpu-hal/examples/halmark/main.rs | 101 +++++++++++++++--------------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/wgpu-hal/examples/halmark/main.rs b/wgpu-hal/examples/halmark/main.rs index 2ff6b917c3..732d7abceb 100644 --- a/wgpu-hal/examples/halmark/main.rs +++ b/wgpu-hal/examples/halmark/main.rs @@ -6,6 +6,11 @@ use hal::{ Adapter as _, CommandEncoder as _, Device as _, Instance as _, Queue as _, Surface as _, }; use raw_window_handle::{HasDisplayHandle, HasWindowHandle}; +use winit::{ + event::{ElementState, Event, KeyEvent, WindowEvent}, + event_loop::ControlFlow, + keyboard::{Key, NamedKey}, +}; use std::{ borrow::{Borrow, Cow}, @@ -567,10 +572,10 @@ impl Example { fn update(&mut self, event: winit::event::WindowEvent) { if let winit::event::WindowEvent::KeyboardInput { - input: - winit::event::KeyboardInput { - virtual_keycode: Some(winit::event::VirtualKeyCode::Space), - state: winit::event::ElementState::Pressed, + event: + KeyEvent { + logical_key: Key::Named(NamedKey::Space), + state: ElementState::Pressed, .. }, .. @@ -781,7 +786,7 @@ cfg_if::cfg_if! { fn main() { env_logger::init(); - let event_loop = winit::event_loop::EventLoop::new(); + let event_loop = winit::event_loop::EventLoop::new().unwrap(); let window = winit::window::WindowBuilder::new() .with_title("hal-bunnymark") .build(&event_loop) @@ -793,51 +798,49 @@ fn main() { let mut last_frame_inst = Instant::now(); let (mut frame_count, mut accum_time) = (0, 0.0); - event_loop.run(move |event, _, control_flow| { - let _ = &window; // force ownership by the closure - *control_flow = winit::event_loop::ControlFlow::Poll; - match event { - winit::event::Event::RedrawEventsCleared => { - window.request_redraw(); - } - winit::event::Event::WindowEvent { event, .. } => match event { - winit::event::WindowEvent::KeyboardInput { - input: - winit::event::KeyboardInput { - virtual_keycode: Some(winit::event::VirtualKeyCode::Escape), - state: winit::event::ElementState::Pressed, - .. - }, - .. - } - | winit::event::WindowEvent::CloseRequested => { - *control_flow = winit::event_loop::ControlFlow::Exit; - } - _ => { - example.as_mut().unwrap().update(event); + event_loop + .run(move |event, target| { + let _ = &window; // force ownership by the closure + target.set_control_flow(ControlFlow::Poll); + + match event { + Event::LoopExiting => { + example.take().unwrap().exit(); } - }, - winit::event::Event::RedrawRequested(_) => { - let ex = example.as_mut().unwrap(); - { - accum_time += last_frame_inst.elapsed().as_secs_f32(); - last_frame_inst = Instant::now(); - frame_count += 1; - if frame_count == 100 && !ex.is_empty() { - println!( - "Avg frame time {}ms", - accum_time * 1000.0 / frame_count as f32 - ); - accum_time = 0.0; - frame_count = 0; + Event::WindowEvent { event, .. } => match event { + WindowEvent::KeyboardInput { + event: + KeyEvent { + logical_key: Key::Named(NamedKey::Escape), + state: ElementState::Pressed, + .. + }, + .. } - } - ex.render(); - } - winit::event::Event::LoopDestroyed => { - example.take().unwrap().exit(); + | WindowEvent::CloseRequested => target.exit(), + WindowEvent::RedrawRequested => { + let ex = example.as_mut().unwrap(); + { + accum_time += last_frame_inst.elapsed().as_secs_f32(); + last_frame_inst = Instant::now(); + frame_count += 1; + if frame_count == 100 && !ex.is_empty() { + println!( + "Avg frame time {}ms", + accum_time * 1000.0 / frame_count as f32 + ); + accum_time = 0.0; + frame_count = 0; + } + } + ex.render(); + } + _ => { + example.as_mut().unwrap().update(event); + } + }, + _ => {} } - _ => {} - } - }); + }) + .unwrap(); } From 81084f3ceab8895b9657fcdaad9a463844c3fb4d Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Mon, 23 Oct 2023 22:23:41 +0200 Subject: [PATCH 15/41] make `cargo clippy --all-targets` happy --- wgpu-hal/examples/halmark/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wgpu-hal/examples/halmark/main.rs b/wgpu-hal/examples/halmark/main.rs index 732d7abceb..80496fb958 100644 --- a/wgpu-hal/examples/halmark/main.rs +++ b/wgpu-hal/examples/halmark/main.rs @@ -270,7 +270,7 @@ impl Example { }; let pipeline = unsafe { device.create_render_pipeline(&pipeline_desc).unwrap() }; - let texture_data = vec![0xFFu8; 4]; + let texture_data = [0xFFu8; 4]; let staging_buffer_desc = hal::BufferDescriptor { label: Some("stage"), From b0c44f7f03a7b41d7c5940a004b1be1785830c83 Mon Sep 17 00:00:00 2001 From: junglie85 Date: Tue, 24 Oct 2023 16:26:18 +0100 Subject: [PATCH 16/41] Get and cast value from HWND --- wgpu-hal/src/dx12/instance.rs | 2 +- wgpu-hal/src/gles/wgl.rs | 2 +- wgpu-hal/src/vulkan/instance.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wgpu-hal/src/dx12/instance.rs b/wgpu-hal/src/dx12/instance.rs index 5476eb1412..50a3b62edd 100644 --- a/wgpu-hal/src/dx12/instance.rs +++ b/wgpu-hal/src/dx12/instance.rs @@ -93,7 +93,7 @@ impl crate::Instance for super::Instance { raw_window_handle::RawWindowHandle::Win32(handle) => Ok(super::Surface { factory: self.factory.clone(), factory_media: self.factory_media.clone(), - target: SurfaceTarget::WndHandle(handle.hwnd as *mut _), + target: SurfaceTarget::WndHandle(handle.hwnd.get() as *mut _), supports_allow_tearing: self.supports_allow_tearing, swap_chain: None, }), diff --git a/wgpu-hal/src/gles/wgl.rs b/wgpu-hal/src/gles/wgl.rs index 677b7c55cc..f0c2f4ce7a 100644 --- a/wgpu-hal/src/gles/wgl.rs +++ b/wgpu-hal/src/gles/wgl.rs @@ -441,7 +441,7 @@ impl crate::Instance for Instance { ))); }; Ok(Surface { - window: window.hwnd as *mut _, + window: window.hwnd.get() as *mut _, presentable: true, swapchain: None, srgb_capable: self.srgb_capable, diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 59efada01b..8e55c5badf 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -758,7 +758,7 @@ impl crate::Instance for super::Instance { use winapi::um::libloaderapi::GetModuleHandleW; let hinstance = unsafe { GetModuleHandleW(std::ptr::null()) }; - self.create_surface_from_hwnd(hinstance as *mut _, handle.hwnd) + self.create_surface_from_hwnd(hinstance as *mut _, handle.hwnd.get() as *mut _) } #[cfg(target_os = "macos")] (Rwh::AppKit(handle), _) From 55ae05974d1a3ed13a5f3675c946e292dbc4dab6 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 25 Oct 2023 10:52:58 +0200 Subject: [PATCH 17/41] winit: fix tests --- examples/bunnymark/src/main.rs | 12 +++---- examples/common/src/framework.rs | 57 ++++++++++++++++---------------- examples/msaa-line/src/main.rs | 46 +++++++++++++++----------- 3 files changed, 62 insertions(+), 53 deletions(-) diff --git a/examples/bunnymark/src/main.rs b/examples/bunnymark/src/main.rs index baebe40fd7..f5a0823b23 100644 --- a/examples/bunnymark/src/main.rs +++ b/examples/bunnymark/src/main.rs @@ -1,5 +1,6 @@ use bytemuck::{Pod, Zeroable}; use nanorand::{Rng, WyRand}; +use winit::{event::{KeyEvent, ElementState}, keyboard::{Key, NamedKey}}; use std::{borrow::Cow, mem}; use wgpu::util::DeviceExt; @@ -249,12 +250,11 @@ impl wgpu_example::framework::Example for Example { fn update(&mut self, event: winit::event::WindowEvent) { if let winit::event::WindowEvent::KeyboardInput { - input: - winit::event::KeyboardInput { - virtual_keycode: Some(winit::event::VirtualKeyCode::Space), - state: winit::event::ElementState::Pressed, - .. - }, + event: KeyEvent { + logical_key: Key::Named(NamedKey::Space), + state: ElementState::Pressed, + .. + }, .. } = event { diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index a4ead3dc5f..6a3ce1529d 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -258,7 +258,7 @@ fn start( event_loop, instance, size, - surface, + mut surface, adapter, device, queue, @@ -268,7 +268,7 @@ fn start( event_loop, instance, size, - surface, + mut surface, adapter, device, queue, @@ -304,7 +304,7 @@ fn start( event::Event::WindowEvent { event: WindowEvent::Resized(size), .. - } => resize_window(example, size, &mut config, &mut surface, &device, &queue), + } => resize_window(&mut example, size, &mut config, &mut surface, &device, &queue), event::Event::WindowEvent { event: WindowEvent::ScaleFactorChanged { scale_factor, .. }, .. @@ -313,6 +313,7 @@ fn start( width: (f64::from(config.width) * scale_factor) as u32, height: (f64::from(config.height) * scale_factor) as u32, }; + resize_window(&mut example, new_size, &mut config, &mut surface, &device, &queue); } event::Event::WindowEvent { event, .. } => match event { WindowEvent::KeyboardInput { @@ -392,7 +393,7 @@ fn start( }, _ => {} } - }); + }).unwrap(); } #[cfg(not(target_arch = "wasm32"))] @@ -557,29 +558,29 @@ impl From> for GpuT let spawner = Spawner::new(); example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); - // Handle specific case for bunnymark - // #[allow(deprecated)] - if params.image_path == "/examples/bunnymark/screenshot.png" { - // Press spacebar to spawn bunnies - example.update(winit::event::WindowEvent::KeyboardInput { - event: KeyEvent { - physical_key: PhysicalKey::Code(KeyCode::Space), - state: ElementState::Pressed, - logical_key: Key::Named(NamedKey::Space), - text: None, - location: KeyLocation::Standard, - repeat: false, - platform_specific: false, - }, - device_id: unsafe { winit::event::DeviceId::dummy() }, - is_synthetic: false, - }); - - // Step 3 extra frames - for _ in 0..3 { - example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); - } - } + // // Handle specific case for bunnymark + // // #[allow(deprecated)] + // if params.image_path == "/examples/bunnymark/screenshot.png" { + // // Press spacebar to spawn bunnies + // example.update(winit::event::WindowEvent::KeyboardInput { + // event: KeyEvent { + // physical_key: PhysicalKey::Code(KeyCode::Space), + // state: ElementState::Pressed, + // logical_key: Key::Named(NamedKey::Space), + // text: None, + // location: KeyLocation::Standard, + // repeat: false, + // platform_specific: false, + // }, + // device_id: unsafe { winit::event::DeviceId::dummy() }, + // is_synthetic: false, + // }); + // + // // Step 3 extra frames + // for _ in 0..3 { + // example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); + // } + // } } let mut cmd_buf = ctx @@ -629,7 +630,7 @@ impl From> for GpuT } fn resize_window( - example: E, + example: &mut E, size: PhysicalSize, config: &mut SurfaceConfiguration, surface: &mut Surface, diff --git a/examples/msaa-line/src/main.rs b/examples/msaa-line/src/main.rs index ac71d4c091..62b4d6c5ff 100644 --- a/examples/msaa-line/src/main.rs +++ b/examples/msaa-line/src/main.rs @@ -14,6 +14,10 @@ use wgpu::util::DeviceExt; #[cfg(test)] use wgpu_test::FailureCase; +use winit::{ + event::{ElementState, KeyEvent, WindowEvent}, + keyboard::{Key, NamedKey}, +}; #[repr(C)] #[derive(Clone, Copy, Pod, Zeroable)] @@ -215,27 +219,31 @@ impl wgpu_example::framework::Example for Example { #[allow(clippy::single_match)] fn update(&mut self, event: winit::event::WindowEvent) { match event { - winit::event::WindowEvent::KeyboardInput { input, .. } => { - if let winit::event::ElementState::Pressed = input.state { - match input.virtual_keycode { - // TODO: Switch back to full scans of possible options when we expose - // supported sample counts to the user. - Some(winit::event::VirtualKeyCode::Left) => { - if self.sample_count == self.max_sample_count { - self.sample_count = 1; - self.rebuild_bundle = true; - } - } - Some(winit::event::VirtualKeyCode::Right) => { - if self.sample_count == 1 { - self.sample_count = self.max_sample_count; - self.rebuild_bundle = true; - } - } - _ => {} + WindowEvent::KeyboardInput { + event: + KeyEvent { + logical_key, + state: ElementState::Pressed, + .. + }, + .. + } => match logical_key { + // TODO: Switch back to full scans of possible options when we expose + // supported sample counts to the user. + Key::Named(NamedKey::ArrowLeft) => { + if self.sample_count == self.max_sample_count { + self.sample_count = 1; + self.rebuild_bundle = true; } } - } + Key::Named(NamedKey::ArrowRight) => { + if self.sample_count == 1 { + self.sample_count = self.max_sample_count; + self.rebuild_bundle = true; + } + } + _ => {} + }, _ => {} } } From b2c475de8a01130d546fb653faa3b020119d6a3f Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 25 Oct 2023 23:03:40 +0200 Subject: [PATCH 18/41] examples: removing scale-factor-changed-event from framework --- examples/common/src/framework.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index a4ead3dc5f..320aa3177a 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -304,16 +304,12 @@ fn start( event::Event::WindowEvent { event: WindowEvent::Resized(size), .. - } => resize_window(example, size, &mut config, &mut surface, &device, &queue), - event::Event::WindowEvent { - event: WindowEvent::ScaleFactorChanged { scale_factor, .. }, - .. - } if scale_factor > 0.0 => { - let new_size = PhysicalSize { - width: (f64::from(config.width) * scale_factor) as u32, - height: (f64::from(config.height) * scale_factor) as u32, - }; - } + } => { + config.width = size.width.max(1); + config.height = size.height.max(1); + example.resize(&config, &device, &queue); + surface.configure(&device, &config); + }, event::Event::WindowEvent { event, .. } => match event { WindowEvent::KeyboardInput { event: From f8002f4524532a343aea268e81d2fc8109506c89 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 25 Oct 2023 23:05:04 +0200 Subject: [PATCH 19/41] example-framework: removing `resize_window` function --- examples/common/src/framework.rs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 26cad776e5..f03820c054 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -623,17 +623,3 @@ impl From> for GpuT }) } } - -fn resize_window( - example: &mut E, - size: PhysicalSize, - config: &mut SurfaceConfiguration, - surface: &mut Surface, - device: &wgpu::Device, - queue: &wgpu::Queue, -) { - config.width = size.width.max(1); - config.height = size.height.max(1); - example.resize(&config, &device, &queue); - surface.configure(&device, &config); -} From a645c718f6e643c2c109e26c1f8eadad48d59c3a Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 25 Oct 2023 23:47:43 +0200 Subject: [PATCH 20/41] examples/bunnymark, examples/common/src/framework: refactor code `examples/common/src/framework` used to have a piece of code which should be only executed if the example is from `bunnymark`. This code has been entirely moved to `examples/bunnymark/src/main.rs`. --- examples/bunnymark/src/main.rs | 194 ++++++++++++++++++------------- examples/common/src/framework.rs | 44 ++----- 2 files changed, 124 insertions(+), 114 deletions(-) diff --git a/examples/bunnymark/src/main.rs b/examples/bunnymark/src/main.rs index f5a0823b23..9d6671c7cd 100644 --- a/examples/bunnymark/src/main.rs +++ b/examples/bunnymark/src/main.rs @@ -1,8 +1,11 @@ use bytemuck::{Pod, Zeroable}; use nanorand::{Rng, WyRand}; -use winit::{event::{KeyEvent, ElementState}, keyboard::{Key, NamedKey}}; use std::{borrow::Cow, mem}; use wgpu::util::DeviceExt; +use winit::{ + event::{ElementState, KeyEvent}, + keyboard::{Key, NamedKey}, +}; const MAX_BUNNIES: usize = 1 << 20; const BUNNY_SIZE: f32 = 0.15 * 256.0; @@ -19,24 +22,117 @@ struct Globals { #[repr(C, align(256))] #[derive(Clone, Copy, Zeroable)] -struct Locals { +struct Bunny { position: [f32; 2], velocity: [f32; 2], color: u32, _pad: u32, } +impl Bunny { + fn update_data(&mut self, delta: f32, extent: &[u32; 2]) { + self.position[0] += self.velocity[0] * delta; + self.position[1] += self.velocity[1] * delta; + self.velocity[1] += GRAVITY * delta; + if (self.velocity[0] > 0.0 && self.position[0] + 0.5 * BUNNY_SIZE > extent[0] as f32) + || (self.velocity[0] < 0.0 && self.position[0] - 0.5 * BUNNY_SIZE < 0.0) + { + self.velocity[0] *= -1.0; + } + if self.velocity[1] < 0.0 && self.position[1] < 0.5 * BUNNY_SIZE { + self.velocity[1] *= -1.0; + } + } +} + /// Example struct holds references to wgpu resources and frame persistent data struct Example { global_group: wgpu::BindGroup, local_group: wgpu::BindGroup, pipeline: wgpu::RenderPipeline, - bunnies: Vec, + bunnies: Vec, local_buffer: wgpu::Buffer, extent: [u32; 2], rng: WyRand, } +impl Example { + fn spawn_bunnies(&mut self) { + let spawn_count = 64 + self.bunnies.len() / 2; + let color = self.rng.generate::(); + println!( + "Spawning {} bunnies, total at {}", + spawn_count, + self.bunnies.len() + spawn_count + ); + for _ in 0..spawn_count { + let speed = self.rng.generate::() * MAX_VELOCITY - (MAX_VELOCITY * 0.5); + self.bunnies.push(Bunny { + position: [0.0, 0.5 * (self.extent[1] as f32)], + velocity: [speed, 0.0], + color, + _pad: 0, + }); + } + } + + fn _render( + &mut self, + view: &wgpu::TextureView, + device: &wgpu::Device, + queue: &wgpu::Queue, + _spawner: &wgpu_example::framework::Spawner, + ) { + let delta = 0.01; + + for bunny in self.bunnies.iter_mut() { + bunny.update_data(delta, &self.extent); + } + + let uniform_alignment = device.limits().min_uniform_buffer_offset_alignment; + queue.write_buffer(&self.local_buffer, 0, unsafe { + std::slice::from_raw_parts( + self.bunnies.as_ptr() as *const u8, + self.bunnies.len() * uniform_alignment as usize, + ) + }); + + let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor::default()); + { + let clear_color = wgpu::Color { + r: 0.1, + g: 0.2, + b: 0.3, + a: 1.0, + }; + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(clear_color), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + rpass.set_pipeline(&self.pipeline); + rpass.set_bind_group(0, &self.global_group, &[]); + for i in 0..self.bunnies.len() { + let offset = + (i as wgpu::DynamicOffset) * (uniform_alignment as wgpu::DynamicOffset); + rpass.set_bind_group(1, &self.local_group, &[offset]); + rpass.draw(0..4, 0..1); + } + } + + queue.submit(Some(encoder.finish())); + } +} + impl wgpu_example::framework::Example for Example { fn init( config: &wgpu::SurfaceConfiguration, @@ -91,7 +187,7 @@ impl wgpu_example::framework::Example for Example { ty: wgpu::BindingType::Buffer { ty: wgpu::BufferBindingType::Uniform, has_dynamic_offset: true, - min_binding_size: wgpu::BufferSize::new(mem::size_of::() as _), + min_binding_size: wgpu::BufferSize::new(mem::size_of::() as _), }, count: None, }], @@ -229,7 +325,7 @@ impl wgpu_example::framework::Example for Example { resource: wgpu::BindingResource::Buffer(wgpu::BufferBinding { buffer: &local_buffer, offset: 0, - size: wgpu::BufferSize::new(mem::size_of::() as _), + size: wgpu::BufferSize::new(mem::size_of::() as _), }), }], label: None, @@ -250,30 +346,16 @@ impl wgpu_example::framework::Example for Example { fn update(&mut self, event: winit::event::WindowEvent) { if let winit::event::WindowEvent::KeyboardInput { - event: KeyEvent { - logical_key: Key::Named(NamedKey::Space), - state: ElementState::Pressed, - .. - }, + event: + KeyEvent { + logical_key: Key::Named(NamedKey::Space), + state: ElementState::Pressed, + .. + }, .. } = event { - let spawn_count = 64 + self.bunnies.len() / 2; - let color = self.rng.generate::(); - println!( - "Spawning {} bunnies, total at {}", - spawn_count, - self.bunnies.len() + spawn_count - ); - for _ in 0..spawn_count { - let speed = self.rng.generate::() * MAX_VELOCITY - (MAX_VELOCITY * 0.5); - self.bunnies.push(Locals { - position: [0.0, 0.5 * (self.extent[1] as f32)], - velocity: [speed, 0.0], - color, - _pad: 0, - }); - } + self.spawn_bunnies(); } } @@ -291,65 +373,13 @@ impl wgpu_example::framework::Example for Example { view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, + spawner: &wgpu_example::framework::Spawner, ) { - let delta = 0.01; - for bunny in self.bunnies.iter_mut() { - bunny.position[0] += bunny.velocity[0] * delta; - bunny.position[1] += bunny.velocity[1] * delta; - bunny.velocity[1] += GRAVITY * delta; - if (bunny.velocity[0] > 0.0 - && bunny.position[0] + 0.5 * BUNNY_SIZE > self.extent[0] as f32) - || (bunny.velocity[0] < 0.0 && bunny.position[0] - 0.5 * BUNNY_SIZE < 0.0) - { - bunny.velocity[0] *= -1.0; - } - if bunny.velocity[1] < 0.0 && bunny.position[1] < 0.5 * BUNNY_SIZE { - bunny.velocity[1] *= -1.0; - } - } - - let uniform_alignment = device.limits().min_uniform_buffer_offset_alignment; - queue.write_buffer(&self.local_buffer, 0, unsafe { - std::slice::from_raw_parts( - self.bunnies.as_ptr() as *const u8, - self.bunnies.len() * uniform_alignment as usize, - ) - }); + self.spawn_bunnies(); - let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor::default()); - { - let clear_color = wgpu::Color { - r: 0.1, - g: 0.2, - b: 0.3, - a: 1.0, - }; - let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: None, - color_attachments: &[Some(wgpu::RenderPassColorAttachment { - view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(clear_color), - store: wgpu::StoreOp::Store, - }, - })], - depth_stencil_attachment: None, - timestamp_writes: None, - occlusion_query_set: None, - }); - rpass.set_pipeline(&self.pipeline); - rpass.set_bind_group(0, &self.global_group, &[]); - for i in 0..self.bunnies.len() { - let offset = - (i as wgpu::DynamicOffset) * (uniform_alignment as wgpu::DynamicOffset); - rpass.set_bind_group(1, &self.local_group, &[offset]); - rpass.draw(0..4, 0..1); - } + for _frame_number in 0..3 { + self._render(view, device, queue, spawner); } - - queue.submit(Some(encoder.finish())); } } diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index f03820c054..64d16487d7 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -7,13 +7,12 @@ use std::time::Instant; use wasm_bindgen::prelude::*; #[cfg(target_arch = "wasm32")] use web_sys::{ImageBitmapRenderingContext, OffscreenCanvas}; -use wgpu::{Surface, SurfaceConfiguration, WasmNotSend, WasmNotSync}; +use wgpu::{WasmNotSend, WasmNotSync}; use wgpu_test::GpuTestConfiguration; use winit::{ - dpi::PhysicalSize, - event::{self, ElementState, KeyEvent, WindowEvent}, + event::{self, KeyEvent, WindowEvent}, event_loop::{ControlFlow, EventLoop}, - keyboard::{Key, KeyCode, KeyLocation, NamedKey, PhysicalKey}, + keyboard::{Key, NamedKey}, }; #[allow(dead_code)] @@ -34,9 +33,11 @@ pub trait Example: 'static + Sized { fn optional_features() -> wgpu::Features { wgpu::Features::empty() } + fn required_features() -> wgpu::Features { wgpu::Features::empty() } + fn required_downlevel_capabilities() -> wgpu::DownlevelCapabilities { wgpu::DownlevelCapabilities { flags: wgpu::DownlevelFlags::empty(), @@ -44,22 +45,27 @@ pub trait Example: 'static + Sized { ..wgpu::DownlevelCapabilities::default() } } + fn required_limits() -> wgpu::Limits { wgpu::Limits::downlevel_webgl2_defaults() // These downlevel limits will allow the code to run on all possible hardware } + fn init( config: &wgpu::SurfaceConfiguration, adapter: &wgpu::Adapter, device: &wgpu::Device, queue: &wgpu::Queue, ) -> Self; + fn resize( &mut self, config: &wgpu::SurfaceConfiguration, device: &wgpu::Device, queue: &wgpu::Queue, ); + fn update(&mut self, event: WindowEvent); + fn render( &mut self, view: &wgpu::TextureView, @@ -258,7 +264,7 @@ fn start( event_loop, instance, size, - mut surface, + surface, adapter, device, queue, @@ -333,9 +339,6 @@ fn start( } if s == "r" => { println!("{:#?}", instance.generate_report()); } - _ => { - example.update(event); - } event::WindowEvent::RedrawRequested => { #[cfg(not(target_arch = "wasm32"))] { @@ -385,6 +388,7 @@ fn start( } } } + _ => example.update(event), }, _ => {} } @@ -552,30 +556,6 @@ impl From> for GpuT { let spawner = Spawner::new(); example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); - - // // Handle specific case for bunnymark - // // #[allow(deprecated)] - // if params.image_path == "/examples/bunnymark/screenshot.png" { - // // Press spacebar to spawn bunnies - // example.update(winit::event::WindowEvent::KeyboardInput { - // event: KeyEvent { - // physical_key: PhysicalKey::Code(KeyCode::Space), - // state: ElementState::Pressed, - // logical_key: Key::Named(NamedKey::Space), - // text: None, - // location: KeyLocation::Standard, - // repeat: false, - // platform_specific: false, - // }, - // device_id: unsafe { winit::event::DeviceId::dummy() }, - // is_synthetic: false, - // }); - // - // // Step 3 extra frames - // for _ in 0..3 { - // example.render(&dst_view, &ctx.device, &ctx.queue, &spawner); - // } - // } } let mut cmd_buf = ctx From b338b249c4e01e189ccd3f96bb258cc759184bb0 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 25 Oct 2023 23:49:19 +0200 Subject: [PATCH 21/41] `cargo fmt` --- examples/bunnymark/src/main.rs | 1 - examples/common/src/framework.rs | 178 ++++++++++++++++--------------- 2 files changed, 90 insertions(+), 89 deletions(-) diff --git a/examples/bunnymark/src/main.rs b/examples/bunnymark/src/main.rs index 9d6671c7cd..1cb37a132f 100644 --- a/examples/bunnymark/src/main.rs +++ b/examples/bunnymark/src/main.rs @@ -84,7 +84,6 @@ impl Example { _spawner: &wgpu_example::framework::Spawner, ) { let delta = 0.01; - for bunny in self.bunnies.iter_mut() { bunny.update_data(delta, &self.extent); } diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 64d16487d7..874c1b1710 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -298,101 +298,103 @@ fn start( let (mut frame_count, mut accum_time) = (0, 0.0); log::info!("Entering render loop..."); - event_loop.run(move |event, target| { - let _ = (&instance, &adapter); // force ownership by the closure - target.set_control_flow(ControlFlow::Poll); - - if cfg!(feature = "metal-auto-capture") { - target.exit(); - }; - - match event { - event::Event::WindowEvent { - event: WindowEvent::Resized(size), - .. - } => { - config.width = size.width.max(1); - config.height = size.height.max(1); - example.resize(&config, &device, &queue); - surface.configure(&device, &config); - }, - event::Event::WindowEvent { event, .. } => match event { - WindowEvent::KeyboardInput { - event: - KeyEvent { - logical_key: Key::Named(NamedKey::Escape), - .. - }, - .. - } - | WindowEvent::CloseRequested => { - target.exit(); - } - #[cfg(not(target_arch = "wasm32"))] - WindowEvent::KeyboardInput { - event: - KeyEvent { - logical_key: Key::Character(s), - .. - }, + event_loop + .run(move |event, target| { + let _ = (&instance, &adapter); // force ownership by the closure + target.set_control_flow(ControlFlow::Poll); + + if cfg!(feature = "metal-auto-capture") { + target.exit(); + }; + + match event { + event::Event::WindowEvent { + event: WindowEvent::Resized(size), .. - } if s == "r" => { - println!("{:#?}", instance.generate_report()); + } => { + config.width = size.width.max(1); + config.height = size.height.max(1); + example.resize(&config, &device, &queue); + surface.configure(&device, &config); } - event::WindowEvent::RedrawRequested => { + event::Event::WindowEvent { event, .. } => match event { + WindowEvent::KeyboardInput { + event: + KeyEvent { + logical_key: Key::Named(NamedKey::Escape), + .. + }, + .. + } + | WindowEvent::CloseRequested => { + target.exit(); + } #[cfg(not(target_arch = "wasm32"))] - { - accum_time += last_frame_inst.elapsed().as_secs_f32(); - last_frame_inst = Instant::now(); - frame_count += 1; - if frame_count == 100 { - println!( - "Avg frame time {}ms", - accum_time * 1000.0 / frame_count as f32 - ); - accum_time = 0.0; - frame_count = 0; - } + WindowEvent::KeyboardInput { + event: + KeyEvent { + logical_key: Key::Character(s), + .. + }, + .. + } if s == "r" => { + println!("{:#?}", instance.generate_report()); } - - let frame = match surface.get_current_texture() { - Ok(frame) => frame, - Err(_) => { - surface.configure(&device, &config); - surface - .get_current_texture() - .expect("Failed to acquire next surface texture!") + event::WindowEvent::RedrawRequested => { + #[cfg(not(target_arch = "wasm32"))] + { + accum_time += last_frame_inst.elapsed().as_secs_f32(); + last_frame_inst = Instant::now(); + frame_count += 1; + if frame_count == 100 { + println!( + "Avg frame time {}ms", + accum_time * 1000.0 / frame_count as f32 + ); + accum_time = 0.0; + frame_count = 0; + } } - }; - let view = frame.texture.create_view(&wgpu::TextureViewDescriptor { - format: Some(surface_view_format), - ..wgpu::TextureViewDescriptor::default() - }); - - example.render(&view, &device, &queue, &spawner); - - frame.present(); - - #[cfg(target_arch = "wasm32")] - { - if let Some(offscreen_canvas_setup) = &offscreen_canvas_setup { - let image_bitmap = offscreen_canvas_setup - .offscreen_canvas - .transfer_to_image_bitmap() - .expect("couldn't transfer offscreen canvas to image bitmap."); - offscreen_canvas_setup - .bitmap_renderer - .transfer_from_image_bitmap(&image_bitmap); - - log::info!("Transferring OffscreenCanvas to ImageBitmapRenderer"); + + let frame = match surface.get_current_texture() { + Ok(frame) => frame, + Err(_) => { + surface.configure(&device, &config); + surface + .get_current_texture() + .expect("Failed to acquire next surface texture!") + } + }; + let view = frame.texture.create_view(&wgpu::TextureViewDescriptor { + format: Some(surface_view_format), + ..wgpu::TextureViewDescriptor::default() + }); + + example.render(&view, &device, &queue, &spawner); + + frame.present(); + + #[cfg(target_arch = "wasm32")] + { + if let Some(offscreen_canvas_setup) = &offscreen_canvas_setup { + let image_bitmap = offscreen_canvas_setup + .offscreen_canvas + .transfer_to_image_bitmap() + .expect("couldn't transfer offscreen canvas to image bitmap."); + offscreen_canvas_setup + .bitmap_renderer + .transfer_from_image_bitmap(&image_bitmap); + + log::info!("Transferring OffscreenCanvas to ImageBitmapRenderer"); + } } } - } - _ => example.update(event), - }, - _ => {} - } - }).unwrap(); + _ => example.update(event), + }, + _ => {} + } + }) + .unwrap(); } #[cfg(not(target_arch = "wasm32"))] From f44074ee2f4dc9b325034416cf5bbe38b96a529e Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Wed, 25 Oct 2023 23:53:53 +0200 Subject: [PATCH 22/41] updating `Cargo.lock` --- Cargo.lock | 645 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 540 insertions(+), 105 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a7bdbbe6b8..97af1929ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,6 +40,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", + "getrandom 0.2.10", "once_cell", "version_check", "zerocopy", @@ -62,20 +63,23 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "android-activity" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0" +checksum = "052ad56e336bcc615a214bffbeca6c181ee9550acec193f0327e0b103b033a4d" dependencies = [ "android-properties", - "bitflags 1.3.2", + "bitflags 2.4.1", "cc", + "cesu8", + "jni", "jni-sys", "libc", "log", - "ndk", + "ndk 0.8.0", "ndk-context", - "ndk-sys", - "num_enum 0.6.1", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.0", + "thiserror", ] [[package]] @@ -214,6 +218,12 @@ dependencies = [ "serde", ] +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5f312b0a56c5cdf967c0aeb67f6289603354951683bc97ddc595ab974ba9aa" + [[package]] name = "ash" version = "0.37.3+1.3.251" @@ -263,6 +273,12 @@ dependencies = [ "syn 2.0.38", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.1.0" @@ -348,21 +364,21 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-sys" -version = "0.1.0-beta.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +checksum = "2dd7cf50912cddc06dc5ea7c08c5e81c1b2c842a70d19def1848d54c586fed92" dependencies = [ "objc-sys", ] [[package]] name = "block2" -version = "0.2.0-alpha.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" dependencies = [ "block-sys", - "objc2-encode", + "objc2", ] [[package]] @@ -417,6 +433,32 @@ dependencies = [ "vec_map", ] +[[package]] +name = "calloop" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf" +dependencies = [ + "bitflags 2.4.1", + "log", + "polling", + "rustix", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop 0.12.3", + "rustix", + "wayland-backend", + "wayland-client 0.31.1", +] + [[package]] name = "cast" version = "0.3.0" @@ -433,6 +475,12 @@ dependencies = [ "libc", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "1.0.0" @@ -540,7 +588,7 @@ dependencies = [ "block", "cocoa-foundation", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "foreign-types 0.3.2", "libc", "objc", @@ -588,6 +636,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "concurrent-queue" version = "2.3.0" @@ -658,6 +716,19 @@ dependencies = [ "libc", ] +[[package]] +name = "core-graphics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + [[package]] name = "core-graphics-types" version = "0.1.2" @@ -676,7 +747,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" dependencies = [ "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "foreign-types 0.3.2", "libc", ] @@ -768,7 +839,7 @@ dependencies = [ "cocoa", "core-foundation", "core-foundation-sys", - "core-graphics", + "core-graphics 0.22.3", "core-text", "dwrote", "foreign-types 0.5.0", @@ -812,6 +883,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +[[package]] +name = "cursor-icon" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740bb192a8e2d1350119916954f4409ee7f62f149b536911eeb78ba5a20526bf" + [[package]] name = "d3d12" version = "0.7.0" @@ -1008,7 +1085,7 @@ name = "deno_webgpu" version = "0.85.0" dependencies = [ "deno_core", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "serde", "tokio", "wgpu-core", @@ -1448,6 +1525,16 @@ dependencies = [ "slab", ] +[[package]] +name = "gethostname" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -1527,7 +1614,7 @@ dependencies = [ "osmesa-sys", "parking_lot", "raw-window-handle 0.5.2", - "wayland-client", + "wayland-client 0.29.5", "wayland-egl", "winapi", "winit 0.27.5", @@ -1706,6 +1793,17 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2", + "dispatch", + "objc2", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1792,6 +1890,22 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -1955,6 +2069,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -1964,6 +2087,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "memoffset" version = "0.9.0" @@ -2089,12 +2221,27 @@ checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "num_enum 0.5.11", "raw-window-handle 0.5.2", "thiserror", ] +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.4.1", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.0", + "raw-window-handle 0.6.0", + "thiserror", +] + [[package]] name = "ndk-context" version = "0.1.1" @@ -2109,10 +2256,10 @@ checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" dependencies = [ "libc", "log", - "ndk", + "ndk 0.7.0", "ndk-context", "ndk-macro", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "once_cell", "parking_lot", ] @@ -2139,6 +2286,15 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + [[package]] name = "nix" version = "0.24.3" @@ -2164,6 +2320,18 @@ dependencies = [ "memoffset 0.6.5", ] +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", +] + [[package]] name = "noise" version = "0.8.2" @@ -2257,11 +2425,11 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" dependencies = [ - "num_enum_derive 0.6.1", + "num_enum_derive 0.7.0", ] [[package]] @@ -2278,9 +2446,9 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2324,29 +2492,25 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.2.0-beta.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" +checksum = "99e1d07c6eab1ce8b6382b8e3c7246fe117ff3f8b34be065f5ebace6749fe845" [[package]] name = "objc2" -version = "0.3.0-beta.3.patch-leaks.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" dependencies = [ - "block2", "objc-sys", "objc2-encode", ] [[package]] name = "objc2-encode" -version = "2.0.0-pre.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" -dependencies = [ - "objc-sys", -] +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" [[package]] name = "objc_exception" @@ -2512,12 +2676,12 @@ version = "0.18.0" dependencies = [ "env_logger", "log", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "ron", "serde", "wgpu-core", "wgpu-types", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -2572,6 +2736,20 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "polling" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a79e457c9898100b4298d57d69ec53d06f9a6ed352431ce5f377e082d2e846" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.48.0", +] + [[package]] name = "pollster" version = "0.3.0" @@ -2624,6 +2802,15 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.33" @@ -2719,6 +2906,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "raw-window-handle" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" + [[package]] name = "rayon" version = "1.8.0" @@ -2906,21 +3099,21 @@ checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" dependencies = [ "crossfont", "log", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "tiny-skia 0.7.0", ] [[package]] name = "sctk-adwaita" -version = "0.5.4" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" +checksum = "1729a30a469de249c6effc17ec8d039b0aa29b3af79b819b7f51cb6ab8046a90" dependencies = [ "ab_glyph", "log", - "memmap2", - "smithay-client-toolkit", - "tiny-skia 0.8.4", + "memmap2 0.9.0", + "smithay-client-toolkit 0.18.0", + "tiny-skia 0.11.2", ] [[package]] @@ -3078,16 +3271,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ "bitflags 1.3.2", - "calloop", + "calloop 0.10.6", "dlib", "lazy_static", "log", - "memmap2", + "memmap2 0.5.10", "nix 0.24.3", "pkg-config", - "wayland-client", - "wayland-cursor", - "wayland-protocols", + "wayland-client 0.29.5", + "wayland-cursor 0.29.5", + "wayland-protocols 0.29.5", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f" +dependencies = [ + "bitflags 2.4.1", + "calloop 0.12.3", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2 0.9.0", + "rustix", + "thiserror", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-csd-frame", + "wayland-cursor 0.31.0", + "wayland-protocols 0.31.0", + "wayland-protocols-wlr", + "wayland-scanner 0.31.0", + "xkeysym", +] + +[[package]] +name = "smol_str" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +dependencies = [ + "serde", ] [[package]] @@ -3261,16 +3488,16 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.8.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" +checksum = "3b72a92a05db376db09fe6d50b7948d106011761c05a6a45e23e17ee9b556222" dependencies = [ "arrayref", "arrayvec 0.7.4", "bytemuck", "cfg-if", - "png", - "tiny-skia-path 0.8.4", + "log", + "tiny-skia-path 0.11.2", ] [[package]] @@ -3285,9 +3512,9 @@ dependencies = [ [[package]] name = "tiny-skia-path" -version = "0.8.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" +checksum = "6ac3865b9708fc7e1961a65c3a4fa55e984272f33092d3c859929f887fceb647" dependencies = [ "arrayref", "bytemuck", @@ -3366,6 +3593,22 @@ dependencies = [ "winnow", ] +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" + [[package]] name = "ttf-parser" version = "0.19.2" @@ -3440,6 +3683,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + [[package]] name = "unicode-width" version = "0.1.11" @@ -3641,6 +3890,20 @@ dependencies = [ "quote", ] +[[package]] +name = "wayland-backend" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" +dependencies = [ + "cc", + "downcast-rs", + "nix 0.26.4", + "scoped-tls", + "smallvec", + "wayland-sys 0.31.1", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -3653,8 +3916,20 @@ dependencies = [ "nix 0.24.3", "scoped-tls", "wayland-commons", - "wayland-scanner", - "wayland-sys", + "wayland-scanner 0.29.5", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-client" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +dependencies = [ + "bitflags 2.4.1", + "nix 0.26.4", + "wayland-backend", + "wayland-scanner 0.31.0", ] [[package]] @@ -3666,7 +3941,18 @@ dependencies = [ "nix 0.24.3", "once_cell", "smallvec", - "wayland-sys", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.4.1", + "cursor-icon", + "wayland-backend", ] [[package]] @@ -3676,7 +3962,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ "nix 0.24.3", - "wayland-client", + "wayland-client 0.29.5", + "xcursor", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b" +dependencies = [ + "nix 0.26.4", + "wayland-client 0.31.1", "xcursor", ] @@ -3686,8 +3983,8 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402de949f81a012926d821a2d659f930694257e76dd92b6e0042ceb27be4107d" dependencies = [ - "wayland-client", - "wayland-sys", + "wayland-client 0.29.5", + "wayland-sys 0.29.5", ] [[package]] @@ -3697,9 +3994,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ "bitflags 1.3.2", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", - "wayland-scanner", + "wayland-scanner 0.29.5", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-scanner 0.31.0", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-protocols 0.31.0", + "wayland-scanner 0.31.0", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-protocols 0.31.0", + "wayland-scanner 0.31.0", ] [[package]] @@ -3713,6 +4048,17 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "wayland-scanner" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + [[package]] name = "wayland-sys" version = "0.29.5" @@ -3724,6 +4070,18 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "wayland-sys" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.64" @@ -3734,6 +4092,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57099a701fb3a8043f993e8228dc24229c7b942e2b009a1b962e54489ba1d3bf" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "wgpu" version = "0.18.0" @@ -3746,7 +4114,7 @@ dependencies = [ "naga", "parking_lot", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "serde", "smallvec", "static_assertions", @@ -3768,7 +4136,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3783,7 +4151,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3794,7 +4162,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3809,7 +4177,7 @@ dependencies = [ "naga", "parking_lot", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "ron", "rustc-hash", "serde", @@ -3830,7 +4198,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3851,7 +4219,7 @@ dependencies = [ "wgpu", "wgpu-hal", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3887,7 +4255,7 @@ dependencies = [ "parking_lot", "profiling", "range-alloc", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "renderdoc-sys", "rustc-hash", "smallvec", @@ -3896,7 +4264,7 @@ dependencies = [ "web-sys", "wgpu-types", "winapi", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3914,7 +4282,7 @@ dependencies = [ "wasm-bindgen-test", "wgpu", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3963,7 +4331,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "wgpu", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -3975,7 +4343,7 @@ dependencies = [ "env_logger", "pollster", "wgpu", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4028,7 +4396,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4042,7 +4410,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4062,7 +4430,7 @@ dependencies = [ "web-sys", "wgpu", "wgpu-example", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4095,7 +4463,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4111,7 +4479,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4123,7 +4491,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4170,7 +4538,7 @@ dependencies = [ "parking_lot", "png", "pollster", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "serde", "serde_json", "wasm-bindgen", @@ -4191,7 +4559,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4209,7 +4577,7 @@ dependencies = [ "wasm-bindgen-test", "wgpu", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4237,7 +4605,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "wgpu", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4252,7 +4620,7 @@ dependencies = [ "wgpu", "wgpu-example", "wgpu-test", - "winit 0.28.7", + "winit 0.29.2", ] [[package]] @@ -4298,6 +4666,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4507,13 +4884,13 @@ dependencies = [ "bitflags 1.3.2", "cocoa", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "dispatch", "instant", "libc", "log", "mio", - "ndk", + "ndk 0.7.0", "ndk-glue", "objc", "once_cell", @@ -4522,10 +4899,10 @@ dependencies = [ "raw-window-handle 0.4.3", "raw-window-handle 0.5.2", "sctk-adwaita 0.4.3", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "wasm-bindgen", - "wayland-client", - "wayland-protocols", + "wayland-client 0.29.5", + "wayland-protocols 0.29.5", "web-sys", "windows-sys 0.36.1", "x11-dl", @@ -4533,37 +4910,50 @@ dependencies = [ [[package]] name = "winit" -version = "0.28.7" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94" +checksum = "b829f75d02fe1e225b97c91a04c326900147a50234d1141a1cbe215ce8798c11" dependencies = [ + "ahash", "android-activity", - "bitflags 1.3.2", + "atomic-waker", + "bitflags 2.4.1", + "bytemuck", + "calloop 0.12.3", "cfg_aliases", "core-foundation", - "core-graphics", - "dispatch", - "instant", + "core-graphics 0.23.1", + "cursor-icon", + "icrate", + "js-sys", "libc", "log", - "mio", - "ndk", + "memmap2 0.9.0", + "ndk 0.8.0", + "ndk-sys 0.5.0+25.2.9519653", "objc2", "once_cell", "orbclient", "percent-encoding", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "redox_syscall 0.3.5", - "sctk-adwaita 0.5.4", - "smithay-client-toolkit", + "rustix", + "sctk-adwaita 0.7.0", + "smithay-client-toolkit 0.18.0", + "smol_str", + "unicode-segmentation", "wasm-bindgen", - "wayland-client", - "wayland-commons", - "wayland-protocols", - "wayland-scanner", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client 0.31.1", + "wayland-protocols 0.31.0", + "wayland-protocols-plasma", "web-sys", - "windows-sys 0.45.0", + "web-time", + "windows-sys 0.48.0", "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -4595,6 +4985,32 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.7.4", + "nix 0.26.4", + "once_cell", + "winapi", + "winapi-wsapoll", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" +dependencies = [ + "nix 0.26.4", +] + [[package]] name = "xcursor" version = "0.3.4" @@ -4604,6 +5020,25 @@ dependencies = [ "nom", ] +[[package]] +name = "xkbcommon-dl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699" +dependencies = [ + "bitflags 2.4.1", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + [[package]] name = "xml-rs" version = "0.8.19" From ec16a2feaf139946a4f4c67400b1428d69c254e7 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 00:11:34 +0200 Subject: [PATCH 23/41] examples/common/src/framework.rs: removing unused function --- examples/common/src/framework.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 874c1b1710..ecb0d45195 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -414,10 +414,6 @@ impl<'a> Spawner<'a> { pub fn spawn_local(&self, future: impl Future + 'a) { self.executor.spawn(future).detach(); } - - fn run_until_stalled(&self) { - while self.executor.try_tick() {} - } } #[cfg(target_arch = "wasm32")] From 1a3388d979dccf8eb5c36a4fe61f176a5c0d93f4 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 00:36:32 +0200 Subject: [PATCH 24/41] player/src/bin/play.rs: fix `winit` feature code --- player/src/bin/play.rs | 55 ++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/player/src/bin/play.rs b/player/src/bin/play.rs index a9a47ce5ff..adc57bb860 100644 --- a/player/src/bin/play.rs +++ b/player/src/bin/play.rs @@ -5,6 +5,7 @@ fn main() { use player::{GlobalPlay as _, IdentityPassThroughFactory}; use wgc::{device::trace, gfx_select}; + use winit::{event::KeyEvent, keyboard::{Key, NamedKey}}; use std::{ fs, @@ -12,7 +13,7 @@ fn main() { }; #[cfg(feature = "winit")] - use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle}; + use raw_window_handle::{HasDisplayHandle, HasWindowHandle}; #[cfg(feature = "winit")] use winit::{event_loop::EventLoop, window::WindowBuilder}; @@ -35,7 +36,7 @@ fn main() { #[cfg(feature = "winit")] let event_loop = { log::info!("Creating a window"); - EventLoop::new() + EventLoop::new().unwrap() }; #[cfg(feature = "winit")] let window = WindowBuilder::new() @@ -53,8 +54,8 @@ fn main() { #[cfg(feature = "winit")] let surface = global.instance_create_surface( - window.raw_display_handle(), - window.raw_window_handle(), + window.display_handle().unwrap().into(), + window.window_handle().unwrap().into(), wgc::id::TypedId::zip(0, 1, wgt::Backend::Empty), ); @@ -110,32 +111,32 @@ fn main() { #[cfg(feature = "winit")] { use winit::{ - event::{ElementState, Event, KeyboardInput, VirtualKeyCode, WindowEvent}, + event::{ElementState, Event, WindowEvent}, event_loop::ControlFlow, }; let mut resize_config = None; let mut frame_count = 0; let mut done = false; - event_loop.run(move |event, _, control_flow| { - *control_flow = ControlFlow::Poll; + event_loop.run(move |event, target| { + target.set_control_flow(ControlFlow::Poll); + match event { - Event::MainEventsCleared => { - window.request_redraw(); - } - Event::RedrawRequested(_) if resize_config.is_none() => loop { + Event::WindowEvent { event, .. } => match event { + WindowEvent::RedrawRequested if resize_config.is_none() => { + match actions.pop() { Some(trace::Action::ConfigureSurface(_device_id, config)) => { log::info!("Configuring the surface"); let current_size: (u32, u32) = window.inner_size().into(); let size = (config.width, config.height); if current_size != size { - window.set_inner_size(winit::dpi::PhysicalSize::new( + let _ = window.request_inner_size(winit::dpi::PhysicalSize::new( config.width, config.height, )); resize_config = Some(config); - break; + target.exit(); } else { let error = gfx_select!(device => global.surface_configure(surface, device, &config)); if let Some(e) = error { @@ -147,12 +148,12 @@ fn main() { frame_count += 1; log::debug!("Presenting frame {}", frame_count); gfx_select!(device => global.surface_present(id)).unwrap(); - break; + target.exit(); } Some(trace::Action::DiscardSurfaceTexture(id)) => { log::debug!("Discarding frame {}", frame_count); gfx_select!(device => global.surface_texture_discard(id)).unwrap(); - break; + target.exit(); } Some(action) => { gfx_select!(device => global.process(device, action, &dir, &mut command_buffer_id_manager)); @@ -162,11 +163,10 @@ fn main() { println!("Finished the end at frame {}", frame_count); done = true; } - break; + target.exit(); } } - }, - Event::WindowEvent { event, .. } => match event { + }, WindowEvent::Resized(_) => { if let Some(config) = resize_config.take() { let error = gfx_select!(device => global.surface_configure(surface, device, &config)); @@ -176,26 +176,23 @@ fn main() { } } WindowEvent::KeyboardInput { - input: - KeyboardInput { - virtual_keycode: Some(VirtualKeyCode::Escape), - state: ElementState::Pressed, - .. - }, + event: KeyEvent { + logical_key: Key::Named(NamedKey::Escape), + state: ElementState::Pressed, + .. + }, .. } - | WindowEvent::CloseRequested => { - *control_flow = ControlFlow::Exit; - } + | WindowEvent::CloseRequested => target.exit(), _ => {} }, - Event::LoopDestroyed => { + Event::LoopExiting => { log::info!("Closing"); gfx_select!(device => global.device_poll(device, wgt::Maintain::Wait)).unwrap(); } _ => {} } - }); + }).unwrap(); } } From 62a6928929e12882ade981b57f2fc907abde7a57 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 00:37:30 +0200 Subject: [PATCH 25/41] `cargo fmt` --- player/src/bin/play.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/player/src/bin/play.rs b/player/src/bin/play.rs index adc57bb860..cc21153ad5 100644 --- a/player/src/bin/play.rs +++ b/player/src/bin/play.rs @@ -5,7 +5,10 @@ fn main() { use player::{GlobalPlay as _, IdentityPassThroughFactory}; use wgc::{device::trace, gfx_select}; - use winit::{event::KeyEvent, keyboard::{Key, NamedKey}}; + use winit::{ + event::KeyEvent, + keyboard::{Key, NamedKey}, + }; use std::{ fs, From 0e8afde6acb89201f6b9e3b51e1d2aeddc4f675b Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 00:39:15 +0200 Subject: [PATCH 26/41] `cargo fmt` and fix `cargo clippy --all-targets` --- naga/tests/wgsl-errors.rs | 2 +- player/src/bin/play.rs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/naga/tests/wgsl-errors.rs b/naga/tests/wgsl-errors.rs index 10dcd54062..a99349a46f 100644 --- a/naga/tests/wgsl-errors.rs +++ b/naga/tests/wgsl-errors.rs @@ -838,7 +838,7 @@ macro_rules! check_one_validation { ( $source:expr, $pattern:pat $( if $guard:expr )? ) => { let source = $source; let error = validation_error($source); - if ! matches!(&error, $pattern $( if $guard )? ) { + if ! error.is_ok() { eprintln!("validation error does not match pattern:\n\ source code: {}\n\ \n\ diff --git a/player/src/bin/play.rs b/player/src/bin/play.rs index cc21153ad5..b509662951 100644 --- a/player/src/bin/play.rs +++ b/player/src/bin/play.rs @@ -5,10 +5,6 @@ fn main() { use player::{GlobalPlay as _, IdentityPassThroughFactory}; use wgc::{device::trace, gfx_select}; - use winit::{ - event::KeyEvent, - keyboard::{Key, NamedKey}, - }; use std::{ fs, @@ -18,7 +14,12 @@ fn main() { #[cfg(feature = "winit")] use raw_window_handle::{HasDisplayHandle, HasWindowHandle}; #[cfg(feature = "winit")] - use winit::{event_loop::EventLoop, window::WindowBuilder}; + use winit::{ + event::KeyEvent, + event_loop::EventLoop, + keyboard::{Key, NamedKey}, + window::WindowBuilder, + }; env_logger::init(); From 57d35551f8cc78cf835354094f90613da305b771 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 00:46:51 +0200 Subject: [PATCH 27/41] `cargo clippy`: ignoring `window` argument --- examples/common/src/framework.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index ecb0d45195..b22b410694 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -260,7 +260,7 @@ async fn setup(title: &str) -> Setup { fn start( #[cfg(not(target_arch = "wasm32"))] Setup { - window, + window: _, event_loop, instance, size, @@ -270,7 +270,7 @@ fn start( queue, }: Setup, #[cfg(target_arch = "wasm32")] Setup { - window, + window: _, event_loop, instance, size, From 352fca12d957ad67f23be1084cccd2aaee176fa1 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 00:55:05 +0200 Subject: [PATCH 28/41] examples/common/src/framework.rs: removing unused attribute `window` --- examples/common/src/framework.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index b22b410694..a9fd07ba5c 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -76,7 +76,6 @@ pub trait Example: 'static + Sized { } struct Setup { - window: winit::window::Window, event_loop: EventLoop<()>, instance: wgpu::Instance, size: winit::dpi::PhysicalSize, @@ -245,7 +244,6 @@ async fn setup(title: &str) -> Setup { .expect("Unable to find a suitable GPU adapter!"); Setup { - window, event_loop, instance, size, @@ -260,7 +258,6 @@ async fn setup(title: &str) -> Setup { fn start( #[cfg(not(target_arch = "wasm32"))] Setup { - window: _, event_loop, instance, size, @@ -270,7 +267,6 @@ fn start( queue, }: Setup, #[cfg(target_arch = "wasm32")] Setup { - window: _, event_loop, instance, size, From edd5de25109ffbe13af5f0116a9e4118278eaf83 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 10:22:18 +0200 Subject: [PATCH 29/41] naga/tests/wgsl-errors.rs: reverting `cargo clippy` suggestion --- naga/tests/wgsl-errors.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/naga/tests/wgsl-errors.rs b/naga/tests/wgsl-errors.rs index a99349a46f..10dcd54062 100644 --- a/naga/tests/wgsl-errors.rs +++ b/naga/tests/wgsl-errors.rs @@ -838,7 +838,7 @@ macro_rules! check_one_validation { ( $source:expr, $pattern:pat $( if $guard:expr )? ) => { let source = $source; let error = validation_error($source); - if ! error.is_ok() { + if ! matches!(&error, $pattern $( if $guard )? ) { eprintln!("validation error does not match pattern:\n\ source code: {}\n\ \n\ From 1bc41086dfbc1225d1651cba387089db2c8aaa66 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 10:49:02 +0200 Subject: [PATCH 30/41] fixing types --- examples/common/src/framework.rs | 1 + wgpu-core/src/id.rs | 2 +- wgpu-hal/src/gles/egl.rs | 4 ++-- wgpu-hal/src/vulkan/instance.rs | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 561a4e5c92..1024772d9d 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -147,6 +147,7 @@ async fn setup(title: &str) -> Setup { let bitmap_renderer = window .canvas() + .expect("Couldn't get html canvas") .get_context("bitmaprenderer") .expect("couldn't create ImageBitmapRenderingContext (Result)") .expect("couldn't create ImageBitmapRenderingContext (Option)") diff --git a/wgpu-core/src/id.rs b/wgpu-core/src/id.rs index d5ad6f218f..2386bfb6e7 100644 --- a/wgpu-core/src/id.rs +++ b/wgpu-core/src/id.rs @@ -154,7 +154,7 @@ impl Eq for Id {} impl PartialOrd for Id { fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) + self.0.partial_cmp(&other.0) } } diff --git a/wgpu-hal/src/gles/egl.rs b/wgpu-hal/src/gles/egl.rs index d9f31e77cc..784f1abe8a 100644 --- a/wgpu-hal/src/gles/egl.rs +++ b/wgpu-hal/src/gles/egl.rs @@ -865,7 +865,7 @@ impl crate::Instance for Instance { .unwrap(); let ret = unsafe { - ANativeWindow_setBuffersGeometry(handle.a_native_window, 0, 0, format) + ANativeWindow_setBuffersGeometry(handle.a_native_window.as_ptr(), 0, 0, format) }; if ret != 0 { @@ -1183,7 +1183,7 @@ impl crate::Surface for Surface { use objc::{msg_send, runtime::Object, sel, sel_impl}; // ns_view always have a layer and don't need to verify that it exists. let layer: *mut Object = - msg_send![handle.ns_view as *mut Object, layer]; + msg_send![handle.ns_view.as_ptr() as *mut Object, layer]; layer as *mut ffi::c_void }; window_ptr diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 8e55c5badf..4778b5c248 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -764,7 +764,7 @@ impl crate::Instance for super::Instance { (Rwh::AppKit(handle), _) if self.shared.extensions.contains(&ext::MetalSurface::name()) => { - self.create_surface_from_view(handle.ns_view) + self.create_surface_from_view(handle.ns_view.as_ptr()) } #[cfg(target_os = "ios")] (Rwh::UiKit(handle), _) From 30bc824385e183627e527f20f6a7d271b951c268 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 10:51:59 +0200 Subject: [PATCH 31/41] metal: updating types --- wgpu-hal/src/metal/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wgpu-hal/src/metal/mod.rs b/wgpu-hal/src/metal/mod.rs index a75439096a..8fff899f37 100644 --- a/wgpu-hal/src/metal/mod.rs +++ b/wgpu-hal/src/metal/mod.rs @@ -100,7 +100,7 @@ impl crate::Instance for Instance { } #[cfg(target_os = "macos")] raw_window_handle::RawWindowHandle::AppKit(handle) => Ok(unsafe { - Surface::from_view(handle.ns_view, Some(&self.managed_metal_layer_delegate)) + Surface::from_view(handle.ns_view.as_ptr(), Some(&self.managed_metal_layer_delegate)) }), _ => Err(crate::InstanceError::new(format!( "window handle {window_handle:?} is not a Metal-compatible handle" From efff84834b5f46ddb8e1f59d00e1ada46c8b580b Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:00:03 +0200 Subject: [PATCH 32/41] `cargo fmt` --- wgpu-hal/src/metal/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wgpu-hal/src/metal/mod.rs b/wgpu-hal/src/metal/mod.rs index 8fff899f37..0f72a9dfdb 100644 --- a/wgpu-hal/src/metal/mod.rs +++ b/wgpu-hal/src/metal/mod.rs @@ -100,7 +100,10 @@ impl crate::Instance for Instance { } #[cfg(target_os = "macos")] raw_window_handle::RawWindowHandle::AppKit(handle) => Ok(unsafe { - Surface::from_view(handle.ns_view.as_ptr(), Some(&self.managed_metal_layer_delegate)) + Surface::from_view( + handle.ns_view.as_ptr(), + Some(&self.managed_metal_layer_delegate), + ) }), _ => Err(crate::InstanceError::new(format!( "window handle {window_handle:?} is not a Metal-compatible handle" From 64820fb6ed2787ee375bab6de3d74b4e54de47c5 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:03:11 +0200 Subject: [PATCH 33/41] ios: fixing types --- wgpu-hal/src/metal/mod.rs | 2 +- wgpu-hal/src/vulkan/instance.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wgpu-hal/src/metal/mod.rs b/wgpu-hal/src/metal/mod.rs index 0f72a9dfdb..95a060f701 100644 --- a/wgpu-hal/src/metal/mod.rs +++ b/wgpu-hal/src/metal/mod.rs @@ -96,7 +96,7 @@ impl crate::Instance for Instance { #[cfg(target_os = "ios")] raw_window_handle::RawWindowHandle::UiKit(handle) => { let _ = &self.managed_metal_layer_delegate; - Ok(unsafe { Surface::from_view(handle.ui_view, None) }) + Ok(unsafe { Surface::from_view(handle.ui_view.as_ptr(), None) }) } #[cfg(target_os = "macos")] raw_window_handle::RawWindowHandle::AppKit(handle) => Ok(unsafe { diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 4778b5c248..f8a373d67d 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -770,7 +770,7 @@ impl crate::Instance for super::Instance { (Rwh::UiKit(handle), _) if self.shared.extensions.contains(&ext::MetalSurface::name()) => { - self.create_surface_from_view(handle.ui_view) + self.create_surface_from_view(handle.ui_view.as_ptr()) } (_, _) => Err(crate::InstanceError::new(format!( "window handle {window_handle:?} is not a Vulkan-compatible handle" From 5c49a77c8ebde159d1dcfdf9070cfc4339453de5 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:03:53 +0200 Subject: [PATCH 34/41] examples/src/framework, webassembly: add `.expect` for getting canvas --- examples/common/src/framework.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 1024772d9d..4ec641cead 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -123,7 +123,7 @@ async fn setup(title: &str) -> Setup { .and_then(|win| win.document()) .and_then(|doc| doc.body()) .and_then(|body| { - body.append_child(&web_sys::Element::from(window.canvas())) + body.append_child(&web_sys::Element::from(window.canvas().expect("Couldn't get canvas"))) .ok() }) .expect("couldn't append canvas to document body"); From 67bc63bd8913895ea260fd65177cfa4a34e27cf9 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:12:48 +0200 Subject: [PATCH 35/41] examples/common/src/framework: removing mut --- examples/common/src/framework.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 4ec641cead..347d00dbe1 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -271,7 +271,7 @@ fn start( event_loop, instance, size, - mut surface, + surface, adapter, device, queue, From a1dbf5facb8a0ee1ee64112e60deeed2d05a8b22 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:13:26 +0200 Subject: [PATCH 36/41] `cargo fmt` --- examples/common/src/framework.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/common/src/framework.rs b/examples/common/src/framework.rs index 347d00dbe1..312bf95138 100644 --- a/examples/common/src/framework.rs +++ b/examples/common/src/framework.rs @@ -123,8 +123,10 @@ async fn setup(title: &str) -> Setup { .and_then(|win| win.document()) .and_then(|doc| doc.body()) .and_then(|body| { - body.append_child(&web_sys::Element::from(window.canvas().expect("Couldn't get canvas"))) - .ok() + body.append_child(&web_sys::Element::from( + window.canvas().expect("Couldn't get canvas"), + )) + .ok() }) .expect("couldn't append canvas to document body"); } From cfec5025106e227925aaab4d401ab558fc7c8ddf Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:23:50 +0200 Subject: [PATCH 37/41] adding missing `expect` --- examples/uniform-values/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/uniform-values/src/main.rs b/examples/uniform-values/src/main.rs index f47971db2c..c830fed343 100644 --- a/examples/uniform-values/src/main.rs +++ b/examples/uniform-values/src/main.rs @@ -366,7 +366,7 @@ fn main() { .and_then(|win| win.document()) .expect("Failed to get document."); let body = document.body().unwrap(); - body.append_child(&web_sys::Element::from(window.canvas())) + body.append_child(&web_sys::Element::from(window.canvas().expect("Couldn't get canvas"))) .unwrap(); let controls_text = document .create_element("p") From 5968aaf3f886a21497965d23ac8d287afe621a53 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 11:25:08 +0200 Subject: [PATCH 38/41] `cargo fmt` --- examples/uniform-values/src/main.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/uniform-values/src/main.rs b/examples/uniform-values/src/main.rs index c830fed343..50b7e7d6ab 100644 --- a/examples/uniform-values/src/main.rs +++ b/examples/uniform-values/src/main.rs @@ -366,8 +366,10 @@ fn main() { .and_then(|win| win.document()) .expect("Failed to get document."); let body = document.body().unwrap(); - body.append_child(&web_sys::Element::from(window.canvas().expect("Couldn't get canvas"))) - .unwrap(); + body.append_child(&web_sys::Element::from( + window.canvas().expect("Couldn't get canvas"), + )) + .unwrap(); let controls_text = document .create_element("p") .expect("Failed to create controls text as element."); From be89abcc8f98c6fd2a2c420b456e519d85461a10 Mon Sep 17 00:00:00 2001 From: TornaxO7 Date: Thu, 26 Oct 2023 12:00:10 +0200 Subject: [PATCH 39/41] adding missing `.unwrap()` --- examples/hello-triangle/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/hello-triangle/src/main.rs b/examples/hello-triangle/src/main.rs index eb18bc058b..fb836de68d 100644 --- a/examples/hello-triangle/src/main.rs +++ b/examples/hello-triangle/src/main.rs @@ -163,7 +163,7 @@ fn main() { .and_then(|win| win.document()) .and_then(|doc| doc.body()) .and_then(|body| { - body.append_child(&web_sys::Element::from(window.canvas())) + body.append_child(&web_sys::Element::from(window.canvas().unwrap())) .ok() }) .expect("couldn't append canvas to document body"); From d404cdac95d0b5e27156957258a707633ca43256 Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Fri, 27 Oct 2023 00:55:58 -0400 Subject: [PATCH 40/41] Fix Clippy Warning --- examples/bunnymark/src/main.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/bunnymark/src/main.rs b/examples/bunnymark/src/main.rs index 1ff1ba319c..28417246ce 100644 --- a/examples/bunnymark/src/main.rs +++ b/examples/bunnymark/src/main.rs @@ -76,12 +76,11 @@ impl Example { } } - fn _render( + fn render_inner( &mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue, - _spawner: &wgpu_example::framework::Spawner, ) { let delta = 0.01; for bunny in self.bunnies.iter_mut() { @@ -371,7 +370,7 @@ impl wgpu_example::framework::Example for Example { self.spawn_bunnies(); for _frame_number in 0..3 { - self._render(view, device, queue, spawner); + self.render_inner(view, device, queue); } } } From be75a6682b39c4ef28473492fc8f4585966587c1 Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Fri, 27 Oct 2023 01:11:38 -0400 Subject: [PATCH 41/41] Make coverage failure not fail the job --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 305d22a826..b37f535f06 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -441,7 +441,9 @@ jobs: **/*-difference.png - name: generate coverage report + id: coverage shell: bash + continue-on-error: true run: | set -e @@ -449,6 +451,7 @@ jobs: - name: upload coverage report to codecov uses: codecov/codecov-action@v3 + if: steps.coverage.outcome == 'success' with: files: lcov.info