wgpu: Update wgpu to 0.16.0 and naga to 0.12.0

This commit is contained in:
Aaron Hill 2023-04-24 15:06:16 -05:00
parent bce494b86c
commit 3bb8c8fb4f
9 changed files with 64 additions and 64 deletions

80
Cargo.lock generated
View File

@ -242,7 +242,7 @@ version = "0.37.2+1.3.238"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28bf19c1f0a470be5fbf7522a308a05df06610252c5bcf5143e1b23f629a9a03" checksum = "28bf19c1f0a470be5fbf7522a308a05df06610252c5bcf5143e1b23f629a9a03"
dependencies = [ dependencies = [
"libloading", "libloading 0.7.4",
] ]
[[package]] [[package]]
@ -585,7 +585,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
dependencies = [ dependencies = [
"glob", "glob",
"libc", "libc",
"libloading", "libloading 0.7.4",
] ]
[[package]] [[package]]
@ -1028,7 +1028,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"libloading", "libloading 0.7.4",
"winapi", "winapi",
] ]
@ -1265,7 +1265,7 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794"
dependencies = [ dependencies = [
"libloading", "libloading 0.7.4",
] ]
[[package]] [[package]]
@ -1608,15 +1608,6 @@ dependencies = [
"slab", "slab",
] ]
[[package]]
name = "fxhash"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
dependencies = [
"byteorder",
]
[[package]] [[package]]
name = "gc-arena" name = "gc-arena"
version = "0.2.2" version = "0.2.2"
@ -1899,14 +1890,14 @@ dependencies = [
[[package]] [[package]]
name = "hassle-rs" name = "hassle-rs"
version = "0.9.0" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90601c6189668c7345fc53842cb3f3a3d872203d523be1b3cb44a36a3e62fb85" checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"com-rs", "com-rs",
"libc", "libc",
"libloading", "libloading 0.7.4",
"thiserror", "thiserror",
"widestring", "widestring",
"winapi", "winapi",
@ -2205,7 +2196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3"
dependencies = [ dependencies = [
"libc", "libc",
"libloading", "libloading 0.7.4",
"pkg-config", "pkg-config",
] ]
@ -2257,6 +2248,16 @@ dependencies = [
"winapi", "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]] [[package]]
name = "libm" name = "libm"
version = "0.2.6" version = "0.2.6"
@ -2550,9 +2551,9 @@ dependencies = [
[[package]] [[package]]
name = "naga" name = "naga"
version = "0.11.0" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eafe22a23b797c9bc227c6c896419b26b5bb88fa903417a3adaed08778850d5" checksum = "f00ce114f2867153c079d4489629dbd27aa4b5387a8ba5341bd3f6dfe870688f"
dependencies = [ dependencies = [
"bit-set", "bit-set",
"bitflags 1.3.2", "bitflags 1.3.2",
@ -2583,13 +2584,14 @@ dependencies = [
[[package]] [[package]]
name = "naga_oil" name = "naga_oil"
version = "0.5.0" version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99f501e1de2b05a542e9bea75ea0f4141fb7368fe028cc8324c8c4648f1f75ff" checksum = "3b443320e461cd0c19d1c976cb8c9cf429b63210aae969249f9b3ca1c56f7d5b"
dependencies = [ dependencies = [
"bit-set", "bit-set",
"codespan-reporting", "codespan-reporting",
"data-encoding", "data-encoding",
"indexmap",
"naga", "naga",
"once_cell", "once_cell",
"regex", "regex",
@ -3389,9 +3391,9 @@ dependencies = [
[[package]] [[package]]
name = "renderdoc-sys" name = "renderdoc-sys"
version = "0.7.1" version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b"
[[package]] [[package]]
name = "rfd" name = "rfd"
@ -4849,9 +4851,9 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
[[package]] [[package]]
name = "wgpu" name = "wgpu"
version = "0.15.1" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d745a1b6d91d85c33defbb29f0eee0450e1d2614d987e14bf6baf26009d132d7" checksum = "13edd72c7b08615b7179dd7e778ee3f0bdc870ef2de9019844ff2cceeee80b11"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"cfg-if 1.0.0", "cfg-if 1.0.0",
@ -4874,21 +4876,21 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core" name = "wgpu-core"
version = "0.15.1" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7131408d940e335792645a98f03639573b0480e9e2e7cddbbab74f7c6d9f3fff" checksum = "625bea30a0ba50d88025f95c80211d1a85c86901423647fb74f397f614abbd9a"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bit-vec", "bit-vec",
"bitflags 1.3.2", "bitflags 2.1.0",
"codespan-reporting", "codespan-reporting",
"fxhash",
"log", "log",
"naga", "naga",
"parking_lot", "parking_lot",
"profiling", "profiling",
"raw-window-handle", "raw-window-handle",
"ron", "ron",
"rustc-hash",
"serde", "serde",
"smallvec", "smallvec",
"thiserror", "thiserror",
@ -4899,20 +4901,19 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-hal" name = "wgpu-hal"
version = "0.15.4" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bdcf61a283adc744bb5453dd88ea91f3f86d5ca6b027661c6c73c7734ae0288b" checksum = "41af2ea7d87bd41ad0a37146252d5f7c26490209f47f544b2ee3b3ff34c7732e"
dependencies = [ dependencies = [
"android_system_properties", "android_system_properties",
"arrayvec", "arrayvec",
"ash", "ash",
"bit-set", "bit-set",
"bitflags 1.3.2", "bitflags 2.1.0",
"block", "block",
"core-graphics-types", "core-graphics-types",
"d3d12", "d3d12",
"foreign-types", "foreign-types",
"fxhash",
"glow", "glow",
"gpu-alloc", "gpu-alloc",
"gpu-allocator", "gpu-allocator",
@ -4921,7 +4922,7 @@ dependencies = [
"js-sys", "js-sys",
"khronos-egl", "khronos-egl",
"libc", "libc",
"libloading", "libloading 0.8.0",
"log", "log",
"metal", "metal",
"naga", "naga",
@ -4931,6 +4932,7 @@ dependencies = [
"range-alloc", "range-alloc",
"raw-window-handle", "raw-window-handle",
"renderdoc-sys", "renderdoc-sys",
"rustc-hash",
"smallvec", "smallvec",
"thiserror", "thiserror",
"wasm-bindgen", "wasm-bindgen",
@ -4941,11 +4943,11 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-types" name = "wgpu-types"
version = "0.15.2" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32444e121b0bd00cb02c0de32fde457a9491bd44e03e7a5db6df9b1da2f6f110" checksum = "5bd33a976130f03dcdcd39b3810c0c3fc05daf86f0aaf867db14bfb7c4a9a32b"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 2.1.0",
"js-sys", "js-sys",
"serde", "serde",
"web-sys", "web-sys",
@ -4963,9 +4965,9 @@ dependencies = [
[[package]] [[package]]
name = "widestring" name = "widestring"
version = "0.5.1" version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
[[package]] [[package]]
name = "winapi" name = "winapi"

View File

@ -9,10 +9,10 @@ version.workspace = true
[dependencies] [dependencies]
bitflags = "2.1.0" bitflags = "2.1.0"
naga = "0.11.0" naga = "0.12.0"
num-derive = "0.3.3" num-derive = "0.3.3"
num-traits = "0.2.15" num-traits = "0.2.15"
[dev-dependencies] [dev-dependencies]
insta = "1.29.0" insta = "1.29.0"
naga = { version = "0.11.0", features = ["wgsl-out", "validate"] } naga = { version = "0.12.0", features = ["wgsl-out", "validate"] }

View File

@ -8,7 +8,7 @@ repository.workspace = true
version.workspace = true version.workspace = true
[dependencies] [dependencies]
wgpu = { version = "0.15.1", features = ["naga"] } wgpu = { version = "0.16", features = ["naga"] }
tracing = "0.1.37" tracing = "0.1.37"
ruffle_render = { path = "..", features = ["tessellator"] } ruffle_render = { path = "..", features = ["tessellator"] }
bytemuck = { version = "1.13.1", features = ["derive"] } bytemuck = { version = "1.13.1", features = ["derive"] }
@ -18,7 +18,7 @@ enum-map = "2.5.0"
fnv = "1.0.7" fnv = "1.0.7"
swf = { path = "../../swf" } swf = { path = "../../swf" }
image = { version = "0.24.6", default-features = false } image = { version = "0.24.6", default-features = false }
naga_oil = "0.5.0" naga_oil = "0.7.0"
ouroboros = "0.15.6" ouroboros = "0.15.6"
typed-arena = "2.0.2" typed-arena = "2.0.2"
once_cell = "1.17.1" once_cell = "1.17.1"
@ -26,7 +26,7 @@ gc-arena = { workspace = true }
naga-agal = { path = "../naga-agal" } naga-agal = { path = "../naga-agal" }
downcast-rs = "1.2.0" downcast-rs = "1.2.0"
profiling = { version = "1.0", default-features = false, optional = true } 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 # desktop
[target.'cfg(not(target_family = "wasm"))'.dependencies.futures] [target.'cfg(not(target_family = "wasm"))'.dependencies.futures]

View File

@ -23,7 +23,6 @@ use ruffle_render::tessellator::ShapeTessellator;
use std::borrow::Cow; use std::borrow::Cow;
use std::cell::Cell; use std::cell::Cell;
use std::mem; use std::mem;
use std::num::NonZeroU32;
use std::path::Path; use std::path::Path;
use std::sync::Arc; use std::sync::Arc;
use swf::Color; use swf::Color;
@ -51,7 +50,7 @@ pub struct WgpuRenderBackend<T: RenderTarget> {
impl WgpuRenderBackend<SwapChainTarget> { impl WgpuRenderBackend<SwapChainTarget> {
#[cfg(target_family = "wasm")] #[cfg(target_family = "wasm")]
pub async fn for_canvas(canvas: &web_sys::HtmlCanvasElement) -> Result<Self, Error> { pub async fn for_canvas(canvas: web_sys::HtmlCanvasElement) -> Result<Self, Error> {
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL, backends: wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL,
dx12_shader_compiler: wgpu::Dx12Compiler::default(), dx12_shader_compiler: wgpu::Dx12Compiler::default(),
@ -493,7 +492,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
bitmap.data(), bitmap.data(),
wgpu::ImageDataLayout { wgpu::ImageDataLayout {
offset: 0, offset: 0,
bytes_per_row: NonZeroU32::new(4 * extent.width), bytes_per_row: Some(4 * extent.width),
rows_per_image: None, rows_per_image: None,
}, },
extent, extent,
@ -542,7 +541,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
..(region.y_max * texture.width * 4) as usize], ..(region.y_max * texture.width * 4) as usize],
wgpu::ImageDataLayout { wgpu::ImageDataLayout {
offset: (region.x_min * 4) as wgpu::BufferAddress, 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, rows_per_image: None,
}, },
extent, extent,

View File

@ -29,7 +29,7 @@ fn create_sampler(
lod_min_clamp: 0.0, lod_min_clamp: 0.0,
lod_max_clamp: 100.0, lod_max_clamp: 100.0,
compare: None, compare: None,
anisotropy_clamp: None, anisotropy_clamp: 1,
border_color: None, border_color: None,
}); });
sampler sampler

View File

@ -19,7 +19,7 @@ use crate::descriptors::Descriptors;
use crate::{as_texture, Texture}; use crate::{as_texture, Texture};
use gc_arena::{Collect, MutationContext}; use gc_arena::{Collect, MutationContext};
use std::num::{NonZeroU32, NonZeroU64}; use std::num::NonZeroU64;
use std::rc::Rc; use std::rc::Rc;
use std::sync::Arc; use std::sync::Arc;
@ -970,7 +970,7 @@ impl Context3D for WgpuContext3D {
let mut view: wgpu::TextureViewDescriptor = Default::default(); let mut view: wgpu::TextureViewDescriptor = Default::default();
if *cube { if *cube {
view.dimension = Some(wgpu::TextureViewDimension::Cube); view.dimension = Some(wgpu::TextureViewDimension::Cube);
view.array_layer_count = Some(NonZeroU32::new(6).unwrap()); view.array_layer_count = Some(6);
} }
Some(BoundTextureData { Some(BoundTextureData {

View File

@ -219,8 +219,7 @@ impl TextureTarget {
let buffer_label = create_debug_label!("Render target buffer"); let buffer_label = create_debug_label!("Render target buffer");
let buffer = device.create_buffer(&wgpu::BufferDescriptor { let buffer = device.create_buffer(&wgpu::BufferDescriptor {
label: buffer_label.as_deref(), label: buffer_label.as_deref(),
size: (buffer_dimensions.padded_bytes_per_row.get() as u64 size: (buffer_dimensions.padded_bytes_per_row as u64 * buffer_dimensions.height as u64),
* buffer_dimensions.height as u64),
usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ, usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
mapped_at_creation: false, mapped_at_creation: false,
}); });

View File

@ -2,7 +2,6 @@ use crate::buffer_pool::BufferDescription;
use ruffle_render::quality::StageQuality; use ruffle_render::quality::StageQuality;
use std::borrow::Cow; use std::borrow::Cow;
use std::mem::size_of; use std::mem::size_of;
use std::num::NonZeroU32;
use wgpu::util::DeviceExt; use wgpu::util::DeviceExt;
macro_rules! create_debug_label { macro_rules! create_debug_label {
@ -95,7 +94,7 @@ pub struct BufferDimensions {
pub width: usize, pub width: usize,
pub height: usize, pub height: usize,
pub unpadded_bytes_per_row: usize, pub unpadded_bytes_per_row: usize,
pub padded_bytes_per_row: NonZeroU32, pub padded_bytes_per_row: u32,
} }
impl BufferDimensions { impl BufferDimensions {
@ -105,9 +104,7 @@ impl BufferDimensions {
let unpadded_bytes_per_row = width * bytes_per_pixel; let unpadded_bytes_per_row = width * bytes_per_pixel;
let align = wgpu::COPY_BYTES_PER_ROW_ALIGNMENT as usize; 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_padding = (align - unpadded_bytes_per_row % align) % align;
let padded_bytes_per_row = let padded_bytes_per_row = (unpadded_bytes_per_row + padded_bytes_per_row_padding) as u32;
NonZeroU32::new((unpadded_bytes_per_row + padded_bytes_per_row_padding) as u32)
.unwrap();
Self { Self {
width, width,
@ -118,7 +115,7 @@ impl BufferDimensions {
} }
pub fn size(&self) -> u64 { 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, F: FnOnce(&[u8], u32) -> R>(
); );
let _ = receiver.recv().expect("MPSC channel must not fail"); let _ = receiver.recv().expect("MPSC channel must not fail");
let map = buffer_slice.get_mapped_range(); 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); drop(map);
buffer.unmap(); buffer.unmap();
result result
@ -170,7 +167,7 @@ pub fn buffer_to_image(
capture_image(device, buffer, dimensions, index, |rgba, _buffer_width| { capture_image(device, buffer, dimensions, index, |rgba, _buffer_width| {
let mut bytes = Vec::with_capacity(dimensions.height * dimensions.unpadded_bytes_per_row); 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]); bytes.extend_from_slice(&chunk[..dimensions.unpadded_bytes_per_row]);
} }

View File

@ -1335,8 +1335,10 @@ async fn create_renderer(
.dyn_into() .dyn_into()
.map_err(|_| "Expected HtmlCanvasElement")?; .map_err(|_| "Expected HtmlCanvasElement")?;
match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(&canvas) match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(
.await canvas.clone(),
)
.await
{ {
Ok(renderer) => { Ok(renderer) => {
return Ok((builder.with_renderer(renderer), canvas)); return Ok((builder.with_renderer(renderer), canvas));
@ -1358,7 +1360,8 @@ async fn create_renderer(
.dyn_into() .dyn_into()
.map_err(|_| "Expected HtmlCanvasElement")?; .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) => { Ok(renderer) => {
return Ok((builder.with_renderer(renderer), canvas)); return Ok((builder.with_renderer(renderer), canvas));