diff --git a/Cargo.lock b/Cargo.lock index 2dcc3cc33..982ee6a7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -242,7 +242,7 @@ version = "0.37.2+1.3.238" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28bf19c1f0a470be5fbf7522a308a05df06610252c5bcf5143e1b23f629a9a03" dependencies = [ - "libloading", + "libloading 0.7.4", ] [[package]] @@ -585,7 +585,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.7.4", ] [[package]] @@ -1028,7 +1028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" dependencies = [ "bitflags 1.3.2", - "libloading", + "libloading 0.7.4", "winapi", ] @@ -1265,7 +1265,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" dependencies = [ - "libloading", + "libloading 0.7.4", ] [[package]] @@ -1608,15 +1608,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "gc-arena" version = "0.2.2" @@ -1899,14 +1890,14 @@ dependencies = [ [[package]] name = "hassle-rs" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90601c6189668c7345fc53842cb3f3a3d872203d523be1b3cb44a36a3e62fb85" +checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" dependencies = [ "bitflags 1.3.2", "com-rs", "libc", - "libloading", + "libloading 0.7.4", "thiserror", "widestring", "winapi", @@ -2205,7 +2196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" dependencies = [ "libc", - "libloading", + "libloading 0.7.4", "pkg-config", ] @@ -2257,6 +2248,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "libloading" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + [[package]] name = "libm" version = "0.2.6" @@ -2550,9 +2551,9 @@ dependencies = [ [[package]] name = "naga" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eafe22a23b797c9bc227c6c896419b26b5bb88fa903417a3adaed08778850d5" +checksum = "f00ce114f2867153c079d4489629dbd27aa4b5387a8ba5341bd3f6dfe870688f" dependencies = [ "bit-set", "bitflags 1.3.2", @@ -2583,13 +2584,14 @@ dependencies = [ [[package]] name = "naga_oil" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f501e1de2b05a542e9bea75ea0f4141fb7368fe028cc8324c8c4648f1f75ff" +checksum = "3b443320e461cd0c19d1c976cb8c9cf429b63210aae969249f9b3ca1c56f7d5b" dependencies = [ "bit-set", "codespan-reporting", "data-encoding", + "indexmap", "naga", "once_cell", "regex", @@ -3389,9 +3391,9 @@ dependencies = [ [[package]] name = "renderdoc-sys" -version = "0.7.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" +checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" [[package]] name = "rfd" @@ -4849,9 +4851,9 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "wgpu" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d745a1b6d91d85c33defbb29f0eee0450e1d2614d987e14bf6baf26009d132d7" +checksum = "13edd72c7b08615b7179dd7e778ee3f0bdc870ef2de9019844ff2cceeee80b11" dependencies = [ "arrayvec", "cfg-if 1.0.0", @@ -4874,21 +4876,21 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131408d940e335792645a98f03639573b0480e9e2e7cddbbab74f7c6d9f3fff" +checksum = "625bea30a0ba50d88025f95c80211d1a85c86901423647fb74f397f614abbd9a" dependencies = [ "arrayvec", "bit-vec", - "bitflags 1.3.2", + "bitflags 2.1.0", "codespan-reporting", - "fxhash", "log", "naga", "parking_lot", "profiling", "raw-window-handle", "ron", + "rustc-hash", "serde", "smallvec", "thiserror", @@ -4899,20 +4901,19 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdcf61a283adc744bb5453dd88ea91f3f86d5ca6b027661c6c73c7734ae0288b" +checksum = "41af2ea7d87bd41ad0a37146252d5f7c26490209f47f544b2ee3b3ff34c7732e" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 1.3.2", + "bitflags 2.1.0", "block", "core-graphics-types", "d3d12", "foreign-types", - "fxhash", "glow", "gpu-alloc", "gpu-allocator", @@ -4921,7 +4922,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading", + "libloading 0.8.0", "log", "metal", "naga", @@ -4931,6 +4932,7 @@ dependencies = [ "range-alloc", "raw-window-handle", "renderdoc-sys", + "rustc-hash", "smallvec", "thiserror", "wasm-bindgen", @@ -4941,11 +4943,11 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.15.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32444e121b0bd00cb02c0de32fde457a9491bd44e03e7a5db6df9b1da2f6f110" +checksum = "5bd33a976130f03dcdcd39b3810c0c3fc05daf86f0aaf867db14bfb7c4a9a32b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.1.0", "js-sys", "serde", "web-sys", @@ -4963,9 +4965,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "winapi" diff --git a/render/naga-agal/Cargo.toml b/render/naga-agal/Cargo.toml index b5d464547..e8470733e 100644 --- a/render/naga-agal/Cargo.toml +++ b/render/naga-agal/Cargo.toml @@ -9,10 +9,10 @@ version.workspace = true [dependencies] bitflags = "2.1.0" -naga = "0.11.0" +naga = "0.12.0" num-derive = "0.3.3" num-traits = "0.2.15" [dev-dependencies] insta = "1.29.0" -naga = { version = "0.11.0", features = ["wgsl-out", "validate"] } +naga = { version = "0.12.0", features = ["wgsl-out", "validate"] } diff --git a/render/wgpu/Cargo.toml b/render/wgpu/Cargo.toml index 9d5900db8..0c8e9b0d3 100644 --- a/render/wgpu/Cargo.toml +++ b/render/wgpu/Cargo.toml @@ -8,7 +8,7 @@ repository.workspace = true version.workspace = true [dependencies] -wgpu = { version = "0.15.1", features = ["naga"] } +wgpu = { version = "0.16", features = ["naga"] } tracing = "0.1.37" ruffle_render = { path = "..", features = ["tessellator"] } bytemuck = { version = "1.13.1", features = ["derive"] } @@ -18,7 +18,7 @@ enum-map = "2.5.0" fnv = "1.0.7" swf = { path = "../../swf" } image = { version = "0.24.6", default-features = false } -naga_oil = "0.5.0" +naga_oil = "0.7.0" ouroboros = "0.15.6" typed-arena = "2.0.2" once_cell = "1.17.1" @@ -26,7 +26,7 @@ gc-arena = { workspace = true } naga-agal = { path = "../naga-agal" } downcast-rs = "1.2.0" profiling = { version = "1.0", default-features = false, optional = true } -naga = { version = "0.11.0", features = ["validate", "wgsl-out"] } +naga = { version = "0.12.0", features = ["validate", "wgsl-out"] } # desktop [target.'cfg(not(target_family = "wasm"))'.dependencies.futures] diff --git a/render/wgpu/src/backend.rs b/render/wgpu/src/backend.rs index 6499732e6..18f44a0ee 100644 --- a/render/wgpu/src/backend.rs +++ b/render/wgpu/src/backend.rs @@ -23,7 +23,6 @@ use ruffle_render::tessellator::ShapeTessellator; use std::borrow::Cow; use std::cell::Cell; use std::mem; -use std::num::NonZeroU32; use std::path::Path; use std::sync::Arc; use swf::Color; @@ -51,7 +50,7 @@ pub struct WgpuRenderBackend { impl WgpuRenderBackend { #[cfg(target_family = "wasm")] - pub async fn for_canvas(canvas: &web_sys::HtmlCanvasElement) -> Result { + pub async fn for_canvas(canvas: web_sys::HtmlCanvasElement) -> Result { let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { backends: wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL, dx12_shader_compiler: wgpu::Dx12Compiler::default(), @@ -493,7 +492,7 @@ impl RenderBackend for WgpuRenderBackend { bitmap.data(), wgpu::ImageDataLayout { offset: 0, - bytes_per_row: NonZeroU32::new(4 * extent.width), + bytes_per_row: Some(4 * extent.width), rows_per_image: None, }, extent, @@ -542,7 +541,7 @@ impl RenderBackend for WgpuRenderBackend { ..(region.y_max * texture.width * 4) as usize], wgpu::ImageDataLayout { offset: (region.x_min * 4) as wgpu::BufferAddress, - bytes_per_row: NonZeroU32::new(4 * texture.width), + bytes_per_row: Some(4 * texture.width), rows_per_image: None, }, extent, diff --git a/render/wgpu/src/bitmaps.rs b/render/wgpu/src/bitmaps.rs index 8bbe28b30..4db985236 100644 --- a/render/wgpu/src/bitmaps.rs +++ b/render/wgpu/src/bitmaps.rs @@ -29,7 +29,7 @@ fn create_sampler( lod_min_clamp: 0.0, lod_max_clamp: 100.0, compare: None, - anisotropy_clamp: None, + anisotropy_clamp: 1, border_color: None, }); sampler diff --git a/render/wgpu/src/context3d/mod.rs b/render/wgpu/src/context3d/mod.rs index 85f67e88c..5336125d5 100644 --- a/render/wgpu/src/context3d/mod.rs +++ b/render/wgpu/src/context3d/mod.rs @@ -19,7 +19,7 @@ use crate::descriptors::Descriptors; use crate::{as_texture, Texture}; use gc_arena::{Collect, MutationContext}; -use std::num::{NonZeroU32, NonZeroU64}; +use std::num::NonZeroU64; use std::rc::Rc; use std::sync::Arc; @@ -970,7 +970,7 @@ impl Context3D for WgpuContext3D { let mut view: wgpu::TextureViewDescriptor = Default::default(); if *cube { view.dimension = Some(wgpu::TextureViewDimension::Cube); - view.array_layer_count = Some(NonZeroU32::new(6).unwrap()); + view.array_layer_count = Some(6); } Some(BoundTextureData { diff --git a/render/wgpu/src/target.rs b/render/wgpu/src/target.rs index 52ead5788..36d4075ec 100644 --- a/render/wgpu/src/target.rs +++ b/render/wgpu/src/target.rs @@ -219,8 +219,7 @@ impl TextureTarget { let buffer_label = create_debug_label!("Render target buffer"); let buffer = device.create_buffer(&wgpu::BufferDescriptor { label: buffer_label.as_deref(), - size: (buffer_dimensions.padded_bytes_per_row.get() as u64 - * buffer_dimensions.height as u64), + size: (buffer_dimensions.padded_bytes_per_row as u64 * buffer_dimensions.height as u64), usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ, mapped_at_creation: false, }); diff --git a/render/wgpu/src/utils.rs b/render/wgpu/src/utils.rs index ee81d5176..9ac5438bb 100644 --- a/render/wgpu/src/utils.rs +++ b/render/wgpu/src/utils.rs @@ -2,7 +2,6 @@ use crate::buffer_pool::BufferDescription; use ruffle_render::quality::StageQuality; use std::borrow::Cow; use std::mem::size_of; -use std::num::NonZeroU32; use wgpu::util::DeviceExt; macro_rules! create_debug_label { @@ -95,7 +94,7 @@ pub struct BufferDimensions { pub width: usize, pub height: usize, pub unpadded_bytes_per_row: usize, - pub padded_bytes_per_row: NonZeroU32, + pub padded_bytes_per_row: u32, } impl BufferDimensions { @@ -105,9 +104,7 @@ impl BufferDimensions { let unpadded_bytes_per_row = width * bytes_per_pixel; let align = wgpu::COPY_BYTES_PER_ROW_ALIGNMENT as usize; let padded_bytes_per_row_padding = (align - unpadded_bytes_per_row % align) % align; - let padded_bytes_per_row = - NonZeroU32::new((unpadded_bytes_per_row + padded_bytes_per_row_padding) as u32) - .unwrap(); + let padded_bytes_per_row = (unpadded_bytes_per_row + padded_bytes_per_row_padding) as u32; Self { width, @@ -118,7 +115,7 @@ impl BufferDimensions { } pub fn size(&self) -> u64 { - self.padded_bytes_per_row.get() as u64 * self.height as u64 + self.padded_bytes_per_row as u64 * self.height as u64 } } @@ -153,7 +150,7 @@ pub fn capture_image R>( ); let _ = receiver.recv().expect("MPSC channel must not fail"); let map = buffer_slice.get_mapped_range(); - let result = with_rgba(&map, dimensions.padded_bytes_per_row.get()); + let result = with_rgba(&map, dimensions.padded_bytes_per_row); drop(map); buffer.unmap(); result @@ -170,7 +167,7 @@ pub fn buffer_to_image( capture_image(device, buffer, dimensions, index, |rgba, _buffer_width| { let mut bytes = Vec::with_capacity(dimensions.height * dimensions.unpadded_bytes_per_row); - for chunk in rgba.chunks(dimensions.padded_bytes_per_row.get() as usize) { + for chunk in rgba.chunks(dimensions.padded_bytes_per_row as usize) { bytes.extend_from_slice(&chunk[..dimensions.unpadded_bytes_per_row]); } diff --git a/web/src/lib.rs b/web/src/lib.rs index fb1097689..5d1a52d16 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -1335,8 +1335,10 @@ async fn create_renderer( .dyn_into() .map_err(|_| "Expected HtmlCanvasElement")?; - match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(&canvas) - .await + match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas( + canvas.clone(), + ) + .await { Ok(renderer) => { return Ok((builder.with_renderer(renderer), canvas)); @@ -1358,7 +1360,8 @@ async fn create_renderer( .dyn_into() .map_err(|_| "Expected HtmlCanvasElement")?; - match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(&canvas).await + match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(canvas.clone()) + .await { Ok(renderer) => { return Ok((builder.with_renderer(renderer), canvas));