diff --git a/Cargo.lock b/Cargo.lock index 7af9677..18909f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1094,6 +1094,15 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "log-panics" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f9dd8546191c1850ecf67d22f5ff00a935b890d0e84713159a55495cc2ac5f" +dependencies = [ + "log", +] + [[package]] name = "malloc_buf" version = "0.0.6" @@ -2223,6 +2232,7 @@ dependencies = [ "js-sys", "libc", "log", + "log-panics", "noise", "parking_lot", "pollster", diff --git a/Cargo.toml b/Cargo.toml index 809c970..6e7849b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,8 +17,6 @@ hal = { git = "https://github.com/gfx-rs/wgpu", package = "wgpu-hal", version = # wgpu = { path = "../../forks/wgpu/wgpu" } # hal = { package = "wgpu-hal", path = "../../forks/wgpu/wgpu-hal" } -# wgpu = { path = "../../forks/wgpu-i509VCB/wgpu" } -# hal = { package = "wgpu-hal", path = "../../forks/wgpu-i509VCB/wgpu-hal" } async-executor = "1.0" winit = "0.27.1" diff --git a/wgpu-in-app/Cargo.toml b/wgpu-in-app/Cargo.toml index b6b7717..5bef9bd 100644 --- a/wgpu-in-app/Cargo.toml +++ b/wgpu-in-app/Cargo.toml @@ -39,6 +39,7 @@ libc.workspace = true android_logger.workspace = true jni.workspace = true jni_fn.workspace = true +log-panics = "*" [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/wgpu-in-app/src/examples/msaa_line.rs b/wgpu-in-app/src/examples/msaa_line.rs index 2006f1b..1993b55 100644 --- a/wgpu-in-app/src/examples/msaa_line.rs +++ b/wgpu-in-app/src/examples/msaa_line.rs @@ -37,10 +37,29 @@ pub struct MSAALine { } impl MSAALine { - pub fn new(app_surface: &AppSurface) -> Self { + pub fn new(app_surface: &mut AppSurface) -> Self { + // Only srgb format can show real MSAA effect on metal backend. + let msaa_format = app_surface.config.format.add_srgb_suffix(); + app_surface.sdq.update_config_format(msaa_format); + let config = &app_surface.config; let device = &app_surface.device; - let sample_count = 4; + + let sample_flags = app_surface + .adapter + .get_texture_format_features(config.format) + .flags; + let sample_count = { + if sample_flags.contains(wgpu::TextureFormatFeatureFlags::MULTISAMPLE_X8) { + 8 + } else if sample_flags.contains(wgpu::TextureFormatFeatureFlags::MULTISAMPLE_X4) { + 4 + } else if sample_flags.contains(wgpu::TextureFormatFeatureFlags::MULTISAMPLE_X2) { + 2 + } else { + 1 + } + }; let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { label: None, diff --git a/wgpu-in-app/src/ffi/android.rs b/wgpu-in-app/src/ffi/android.rs index 79d0765..8faa92b 100644 --- a/wgpu-in-app/src/ffi/android.rs +++ b/wgpu-in-app/src/ffi/android.rs @@ -10,6 +10,7 @@ use log::{info, Level}; #[no_mangle] #[jni_fn("name.jinleili.wgpu.RustBridge")] pub fn createWgpuCanvas(env: *mut JNIEnv, _: JClass, surface: jobject, idx: jint) -> jlong { + log_panics::init(); android_logger::init_once(Config::default().with_min_level(Level::Info)); let canvas = WgpuCanvas::new(AppSurface::new(env as *mut _, surface), idx as i32); info!("WgpuCanvas created!"); diff --git a/wgpu-in-app/src/main.rs b/wgpu-in-app/src/main.rs index 478cdaa..d7bc4f6 100644 --- a/wgpu-in-app/src/main.rs +++ b/wgpu-in-app/src/main.rs @@ -26,7 +26,7 @@ fn main() { let window = builder.build(&events_loop).unwrap(); let app_view = pollster::block_on(AppSurface::new(window)); - let mut canvas = WgpuCanvas::new(app_view, 3); + let mut canvas = WgpuCanvas::new(app_view, 0); let mut last_update_inst = Instant::now(); let target_frametime = Duration::from_secs_f64(1.0 / 60.0);