wgpu: Update wgpu to 0.16.0 and naga to 0.12.0
This commit is contained in:
parent
bce494b86c
commit
3bb8c8fb4f
|
@ -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"
|
||||||
|
|
|
@ -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"] }
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
});
|
});
|
||||||
|
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1335,7 +1335,9 @@ 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(
|
||||||
|
canvas.clone(),
|
||||||
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(renderer) => {
|
Ok(renderer) => {
|
||||||
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue