From bf9cf92af838b383537e7058df4a88edd1a96a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=96R=C3=96K=20Attila?= Date: Tue, 28 Nov 2023 10:24:55 +0100 Subject: [PATCH] render/wgpu: Update wgpu to 0.18.0, naga to 0.14.1, naga_oil to 0.11.0, egui to 0.24.1 --- Cargo.lock | 193 ++++++++++++-------- Cargo.toml | 18 +- core/Cargo.toml | 2 +- desktop/Cargo.toml | 6 +- desktop/src/gui/controller.rs | 24 ++- exporter/src/main.rs | 2 +- render/naga-agal/src/builder.rs | 3 + render/naga-agal/src/varying.rs | 2 + render/naga-pixelbender/src/lib.rs | 2 + render/wgpu/src/backend.rs | 8 +- render/wgpu/src/context3d/mod.rs | 7 +- render/wgpu/src/filters/bevel.rs | 2 +- render/wgpu/src/filters/blur.rs | 4 +- render/wgpu/src/filters/color_matrix.rs | 2 +- render/wgpu/src/filters/displacement_map.rs | 2 +- render/wgpu/src/filters/glow.rs | 2 +- render/wgpu/src/pixel_bender.rs | 9 +- render/wgpu/src/surface.rs | 2 + render/wgpu/src/surface/target.rs | 9 +- render/wgpu/src/utils.rs | 9 +- 20 files changed, 182 insertions(+), 126 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8676a30e3..a2cb80a10 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,9 +20,9 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "accesskit" -version = "0.11.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8" +checksum = "ca8410747ed85a17c4a1e9ed3f5a74d3e7bdcc876cf9a18ff40ae21d645997b2" dependencies = [ "enumn", "serde", @@ -1343,9 +1343,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "ecolor" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfdf4e52dbbb615cfd30cf5a5265335c217b5fd8d669593cea74a517d9c605af" +checksum = "4b7637fc2e74d17e52931bac90ff4fc061ac776ada9c7fa272f24cdca5991972" dependencies = [ "bytemuck", "serde", @@ -1353,9 +1353,9 @@ dependencies = [ [[package]] name = "egui" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7" +checksum = "c55bcb864b764eb889515a38b8924757657a250738ad15126637ee2df291ee6b" dependencies = [ "accesskit", "ahash", @@ -1367,11 +1367,12 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d4c9ab93d9528c184ef1d695c8c99b2e6d50833696ec3f513063efeee0fe77" +checksum = "2d8ea73b329649be625fac2c9b190a2a8f9a66f98610c4b09124b596c6695053" dependencies = [ "bytemuck", + "egui", "epaint", "log", "thiserror", @@ -1382,9 +1383,9 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15479a96d9fadccf5dac690bdc6373b97b8e1c0dd28367058f25a5298da0195" +checksum = "3b673606b6606b12b95e3a3194d7882bf5cff302db36a520b8144c7c342e4e84" dependencies = [ "arboard", "egui", @@ -1398,15 +1399,15 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ffe3fe5c00295f91c2a61a74ee271c32f74049c94ba0b1cea8f26eb478bc07" +checksum = "4b880044250106e673610c9a15d62692ef8af396593058f334be6f2a4d9544a5" dependencies = [ "egui", "enum-map", "image", "log", - "mime_guess", + "mime_guess2", "serde", ] @@ -1418,9 +1419,9 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "emath" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef2b29de53074e575c18b694167ccbe6e5191f7b25fe65175a0d905a32eeec0" +checksum = "a045c6c0b44b35e98513fc1e9d183ab42881ac27caccb9fa345465601f56cce4" dependencies = [ "bytemuck", "serde", @@ -1522,9 +1523,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58067b840d009143934d91d8dcb8ded054d8301d7c11a517ace0a99bb1e1595e" +checksum = "7d1b9e000d21bab9b535ce78f9f7745be28b3f777f6c7223936561c5c7fefab8" dependencies = [ "ab_glyph", "ahash", @@ -1795,6 +1796,9 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ + "futures-core", + "futures-sink", + "nanorand", "spin", ] @@ -2138,6 +2142,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + [[package]] name = "glib-sys" version = "0.18.1" @@ -2199,9 +2214,9 @@ dependencies = [ [[package]] name = "glow" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728" +checksum = "886c2a30b160c4c6fec8f987430c26b526b7988ca71f664e6a699ddf6f9601e4" dependencies = [ "js-sys", "slotmap", @@ -2209,6 +2224,15 @@ dependencies = [ "web-sys", ] +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + [[package]] name = "gobject-sys" version = "0.18.0" @@ -2241,15 +2265,16 @@ dependencies = [ [[package]] name = "gpu-allocator" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce95f9e2e11c2c6fadfce42b5af60005db06576f231f5c92550fdded43c423e8" +checksum = "40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad" dependencies = [ "backtrace", "log", + "presser", "thiserror", "winapi", - "windows 0.44.0", + "windows 0.51.1", ] [[package]] @@ -2328,12 +2353,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.13.2" @@ -2492,17 +2511,6 @@ dependencies = [ "tiff", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - [[package]] name = "indexmap" version = "2.1.0" @@ -2511,6 +2519,7 @@ checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", "hashbrown 0.14.3", + "serde", ] [[package]] @@ -2714,15 +2723,21 @@ dependencies = [ [[package]] name = "khronos-egl" -version = "4.1.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.7.4", + "libloading 0.8.1", "pkg-config", ] +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + [[package]] name = "lazy_static" version = "1.4.0" @@ -3064,9 +3079,9 @@ dependencies = [ [[package]] name = "metal" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "623b5e6cefd76e58f774bd3cc0c6f5c7615c58c03a97815245a25c3c9bdee318" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ "bitflags 2.4.1", "block", @@ -3084,10 +3099,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "mime_guess" -version = "2.0.4" +name = "mime_guess2" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" dependencies = [ "mime", "unicase", @@ -3134,15 +3149,14 @@ dependencies = [ [[package]] name = "naga" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ceaaa4eedaece7e4ec08c55c640ba03dbb73fb812a6570a59bcf1930d0f70e" +version = "0.14.1" +source = "git+https://github.com/gfx-rs/wgpu?branch=v0.18#e16f7b4083dd6b89597fa2d4c3272331193b3515" dependencies = [ "bit-set", "bitflags 2.4.1", "codespan-reporting", "hexf-parse", - "indexmap 1.9.3", + "indexmap", "log", "num-traits", "pp-rs", @@ -3179,24 +3193,33 @@ dependencies = [ [[package]] name = "naga_oil" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5e64da99d79501b244fb645154cd17d0f726b572cb7b029942fb8aa0c48823" +checksum = "fff3f369dd665ee365daeab786466a6f70ff53e4a95a76117363b1077e1b0492" dependencies = [ "bit-set", "codespan-reporting", "data-encoding", - "indexmap 1.9.3", + "indexmap", "naga", "once_cell", "regex", - "regex-syntax 0.6.29", + "regex-syntax 0.7.5", "rustc-hash", "thiserror", "tracing", "unicode-ident", ] +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom", +] + [[package]] name = "ndk" version = "0.7.0" @@ -3852,6 +3875,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "pretty_assertions" version = "1.4.0" @@ -4124,6 +4153,12 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + [[package]] name = "regex-syntax" version = "0.8.2" @@ -4238,7 +4273,7 @@ dependencies = [ "generational-arena", "hashbrown 0.14.3", "image", - "indexmap 2.1.0", + "indexmap", "jpegxr", "linkme", "lzma-rs", @@ -4412,7 +4447,7 @@ dependencies = [ "fnv", "futures", "image", - "indexmap 2.1.0", + "indexmap", "lru", "naga", "naga-agal", @@ -4757,7 +4792,7 @@ version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ - "indexmap 2.1.0", + "indexmap", "itoa", "ryu", "serde", @@ -5296,7 +5331,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.1.0", + "indexmap", "toml_datetime", "winnow", ] @@ -5307,7 +5342,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.1.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -5948,11 +5983,12 @@ checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "wgpu" -version = "0.17.2" -source = "git+https://github.com/gfx-rs/wgpu?branch=v0.17#fb4f9c53f7110766de381273168644a1eaec9323" +version = "0.18.0" +source = "git+https://github.com/gfx-rs/wgpu?branch=v0.18#e16f7b4083dd6b89597fa2d4c3272331193b3515" dependencies = [ "arrayvec", "cfg-if", + "flume 0.11.0", "js-sys", "log", "naga", @@ -5972,8 +6008,8 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.17.1" -source = "git+https://github.com/gfx-rs/wgpu?branch=v0.17#fb4f9c53f7110766de381273168644a1eaec9323" +version = "0.18.1" +source = "git+https://github.com/gfx-rs/wgpu?branch=v0.18#e16f7b4083dd6b89597fa2d4c3272331193b3515" dependencies = [ "arrayvec", "bit-vec", @@ -5996,8 +6032,8 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.17.2" -source = "git+https://github.com/gfx-rs/wgpu?branch=v0.17#fb4f9c53f7110766de381273168644a1eaec9323" +version = "0.18.1" +source = "git+https://github.com/gfx-rs/wgpu?branch=v0.18#e16f7b4083dd6b89597fa2d4c3272331193b3515" dependencies = [ "android_system_properties", "arrayvec", @@ -6008,6 +6044,7 @@ dependencies = [ "core-graphics-types", "d3d12", "glow", + "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", @@ -6020,6 +6057,7 @@ dependencies = [ "metal", "naga", "objc", + "once_cell", "parking_lot", "profiling", "range-alloc", @@ -6036,8 +6074,8 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.17.0" -source = "git+https://github.com/gfx-rs/wgpu?branch=v0.17#fb4f9c53f7110766de381273168644a1eaec9323" +version = "0.18.0" +source = "git+https://github.com/gfx-rs/wgpu?branch=v0.18#e16f7b4083dd6b89597fa2d4c3272331193b3515" dependencies = [ "bitflags 2.4.1", "js-sys", @@ -6113,15 +6151,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows" version = "0.46.0" @@ -6140,6 +6169,16 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +dependencies = [ + "windows-core", + "windows-targets 0.48.5", +] + [[package]] name = "windows-core" version = "0.51.1" diff --git a/Cargo.toml b/Cargo.toml index 2250472e3..90dd99e43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,10 +44,10 @@ version = "0.1.0" # gc-arena = { git = "https://github.com/kyren/gc-arena", rev = "efd89fc683c6bb456af3e226c33763cb822645e9" } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } -naga = { version = "0.13.0", features = ["validate", "wgsl-out"] } -naga_oil = "0.9.0" -wgpu = "0.17.1" -egui = "0.23.0" +naga = { version = "0.14.1", features = ["validate", "wgsl-out"] } +naga_oil = "0.11.0" +wgpu = "0.18.0" +egui = "0.24.1" # Don't optimize build scripts and macros. [profile.release.build-override] @@ -84,10 +84,8 @@ inherits = "release" [profile.web-wasm-extensions] inherits = "release" -# The `v0.17` branch is a single backport commit ahead of the `v0.17.2` release, -# which we need. FIXME: Remove when wgpu `v0.18` is released and we can switch to it. [patch.crates-io] -wgpu = { git = "https://github.com/gfx-rs/wgpu", branch = "v0.17" } - -[patch.'https://github.com/gfx-rs/naga'] -naga = "0.13.0" +# These are needed because https://github.com/gfx-rs/wgpu/pull/4778 +# is not yet in the latest wgpu release. TODO: Remove when it is. +wgpu = { git = "https://github.com/gfx-rs/wgpu", branch = "v0.18" } +naga = { git = "https://github.com/gfx-rs/wgpu", branch = "v0.18" } diff --git a/core/Cargo.toml b/core/Cargo.toml index e1d09623f..26031bf07 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -52,7 +52,7 @@ hashbrown = { version = "0.14.3", features = ["raw"] } scopeguard = "1.2.0" fluent-templates = "0.8.0" egui = { workspace = true, optional = true } -egui_extras = { version = "0.23.0", optional = true } +egui_extras = { version = "0.24.1", optional = true } png = { version = "0.17.10", optional = true } flv-rs = { path = "../flv" } async-channel = "2.1.1" diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 02d1c8ec2..c1e4a5889 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -11,10 +11,10 @@ version.workspace = true clap = { version = "4.4.11", features = ["derive"] } cpal = "0.15.2" egui = { workspace = true } -egui_extras = { version = "0.23.0", features = ["image"] } -egui-wgpu = { version = "0.23.0", features = ["winit"] } +egui_extras = { version = "0.24.1", features = ["image"] } +egui-wgpu = { version = "0.24.1", features = ["winit"] } image = { version = "0.24", features = ["png"] } -egui-winit = "0.23.0" +egui-winit = "0.24.1" fontdb = "0.16" ruffle_core = { path = "../core", features = ["audio", "clap", "mp3", "nellymoser", "default_compatibility_rules", "egui", "default_font"] } ruffle_render = { path = "../render", features = ["clap"] } diff --git a/desktop/src/gui/controller.rs b/desktop/src/gui/controller.rs index e9544615a..1712207f5 100644 --- a/desktop/src/gui/controller.rs +++ b/desktop/src/gui/controller.rs @@ -5,7 +5,7 @@ use crate::gui::movie::{MovieView, MovieViewRenderer}; use crate::gui::{RuffleGui, MENU_HEIGHT}; use crate::player::{PlayerController, PlayerOptions}; use anyhow::anyhow; -use egui::Context; +use egui::{Context, ViewportId}; use fontdb::{Database, Family, Query, Source}; use ruffle_core::Player; use ruffle_render_wgpu::backend::{request_adapter_and_device, WgpuRenderBackend}; @@ -55,7 +55,7 @@ impl GuiController { } let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { backends: backend, - dx12_shader_compiler: wgpu::Dx12Compiler::default(), + ..Default::default() }); let surface = unsafe { instance.create_surface(window.as_ref()) }?; let (adapter, device, queue) = futures::executor::block_on(request_adapter_and_device( @@ -90,9 +90,9 @@ impl GuiController { if let Some(Theme::Light) = window.theme() { egui_ctx.set_visuals(egui::Visuals::light()); } + egui_ctx.set_pixels_per_point(window.scale_factor() as f32); - let mut egui_winit = egui_winit::State::new(event_loop); - egui_winit.set_pixels_per_point(window.scale_factor() as f32); + let mut egui_winit = egui_winit::State::new(ViewportId::ROOT, window.as_ref(), None, None); egui_winit.set_max_texture_side(descriptors.limits.max_texture_dimension_2d as usize); let movie_view_renderer = Arc::new(MovieViewRenderer::new( @@ -165,7 +165,7 @@ impl GuiController { self.egui_ctx.set_visuals(visuals); } - let response = self.egui_winit.on_event(&self.egui_ctx, event); + let response = self.egui_winit.on_window_event(&self.egui_ctx, event); if response.repaint { self.window.request_redraw(); } @@ -214,7 +214,11 @@ impl GuiController { }, ); }); - self.repaint_after = full_output.repaint_after; + self.repaint_after = full_output + .viewport_output + .get(&ViewportId::ROOT) + .expect("Root viewport must exist") + .repaint_delay; // If we're not in a UI, tell egui which cursor we prefer to use instead if !self.egui_ctx.wants_pointer_input() { @@ -232,7 +236,9 @@ impl GuiController { full_output.platform_output, ); - let clipped_primitives = self.egui_ctx.tessellate(full_output.shapes); + let clipped_primitives = self + .egui_ctx + .tessellate(full_output.shapes, full_output.pixels_per_point); let scale_factor = self.window.scale_factor() as f32; let screen_descriptor = egui_wgpu::renderer::ScreenDescriptor { @@ -283,11 +289,11 @@ impl GuiController { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Clear(wgpu::Color::BLACK), - store: true, + store: wgpu::StoreOp::Store, }, })], - depth_stencil_attachment: None, label: Some("egui_render"), + ..Default::default() }); if let Some(movie_view) = movie_view { diff --git a/exporter/src/main.rs b/exporter/src/main.rs index e9cdf9b68..4484e678e 100644 --- a/exporter/src/main.rs +++ b/exporter/src/main.rs @@ -403,7 +403,7 @@ fn main() -> Result<()> { let opt: Opt = Opt::parse(); let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { backends: opt.graphics.into(), - dx12_shader_compiler: wgpu::Dx12Compiler::default(), + ..Default::default() }); let (adapter, device, queue) = futures::executor::block_on(request_adapter_and_device( opt.graphics.into(), diff --git a/render/naga-agal/src/builder.rs b/render/naga-agal/src/builder.rs index cf5a208f8..bf99d83d4 100644 --- a/render/naga-agal/src/builder.rs +++ b/render/naga-agal/src/builder.rs @@ -479,6 +479,7 @@ impl<'a> NagaBuilder<'a> { location: 0, interpolation: None, sampling: None, + second_blend_source: false, }), offset: 0, }], @@ -501,6 +502,7 @@ impl<'a> NagaBuilder<'a> { location: 0, interpolation: None, sampling: None, + second_blend_source: false, }), }); } @@ -653,6 +655,7 @@ impl<'a> NagaBuilder<'a> { location: index as u32, interpolation: None, sampling: None, + second_blend_source: false, }), }); diff --git a/render/naga-agal/src/varying.rs b/render/naga-agal/src/varying.rs index dbeddd6cf..d301d02f9 100644 --- a/render/naga-agal/src/varying.rs +++ b/render/naga-agal/src/varying.rs @@ -60,6 +60,7 @@ impl<'a> NagaBuilder<'a> { location: index as u32, interpolation: Some(naga::Interpolation::Perspective), sampling: None, + second_blend_source: false, }), offset: 0, }); @@ -85,6 +86,7 @@ impl<'a> NagaBuilder<'a> { location: index as u32, interpolation: Some(Interpolation::Perspective), sampling: None, + second_blend_source: false, }), }); let arg_index = self.func.arguments.len() - 1; diff --git a/render/naga-pixelbender/src/lib.rs b/render/naga-pixelbender/src/lib.rs index 0df1ba3f9..bf84f2d47 100644 --- a/render/naga-pixelbender/src/lib.rs +++ b/render/naga-pixelbender/src/lib.rs @@ -259,6 +259,7 @@ impl<'a> ShaderBuilder<'a> { location: 0, interpolation: Some(naga::Interpolation::Perspective), sampling: Some(naga::Sampling::Center), + second_blend_source: false, }), }); @@ -268,6 +269,7 @@ impl<'a> ShaderBuilder<'a> { location: 0, interpolation: None, sampling: None, + second_blend_source: false, }), }); diff --git a/render/wgpu/src/backend.rs b/render/wgpu/src/backend.rs index 5ce56a7e6..391df7464 100644 --- a/render/wgpu/src/backend.rs +++ b/render/wgpu/src/backend.rs @@ -62,7 +62,7 @@ impl WgpuRenderBackend { 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(), + ..Default::default() }); let surface = instance.create_surface_from_canvas(canvas)?; let (adapter, device, queue) = request_adapter_and_device( @@ -97,7 +97,7 @@ impl WgpuRenderBackend { } let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { backends: backend, - dx12_shader_compiler: wgpu::Dx12Compiler::default(), + ..Default::default() }); let surface = unsafe { instance.create_surface(window) }?; let (adapter, device, queue) = futures::executor::block_on(request_adapter_and_device( @@ -144,7 +144,7 @@ impl WgpuRenderBackend { } let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { backends: backend, - dx12_shader_compiler: wgpu::Dx12Compiler::default(), + ..Default::default() }); let (adapter, device, queue) = futures::executor::block_on(request_adapter_and_device( backend, @@ -981,7 +981,7 @@ impl RenderBackend for WgpuRenderBackend { resolve_target: None, ops: wgpu::Operations { load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT), - store: true, + store: wgpu::StoreOp::Store, }, }), 1, diff --git a/render/wgpu/src/context3d/mod.rs b/render/wgpu/src/context3d/mod.rs index 4e8a96c73..3bd3e83ae 100644 --- a/render/wgpu/src/context3d/mod.rs +++ b/render/wgpu/src/context3d/mod.rs @@ -265,11 +265,11 @@ impl WgpuContext3D { view: depth_view, depth_ops: Some(wgpu::Operations { load: depth_load, - store: true, + store: wgpu::StoreOp::Store, }), stencil_ops: Some(wgpu::Operations { load: stencil_load, - store: true, + store: wgpu::StoreOp::Store, }), }) } else { @@ -283,10 +283,11 @@ impl WgpuContext3D { resolve_target: self.current_texture_resolve_view.as_deref(), ops: wgpu::Operations { load: color_load, - store: true, + store: wgpu::StoreOp::Store, }, })], depth_stencil_attachment, + ..Default::default() }); pass.set_bind_group(0, self.bind_group.as_ref().unwrap(), &[]); pass.set_pipeline( diff --git a/render/wgpu/src/filters/bevel.rs b/render/wgpu/src/filters/bevel.rs index 329760f97..7b0d23652 100644 --- a/render/wgpu/src/filters/bevel.rs +++ b/render/wgpu/src/filters/bevel.rs @@ -237,7 +237,7 @@ impl BevelFilter { let mut render_pass = draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Bevel filter").as_deref(), color_attachments: &[target.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_pipeline(pipeline); diff --git a/render/wgpu/src/filters/blur.rs b/render/wgpu/src/filters/blur.rs index 2bf17c8fc..5ebc3f0d0 100644 --- a/render/wgpu/src/filters/blur.rs +++ b/render/wgpu/src/filters/blur.rs @@ -317,7 +317,7 @@ impl BlurFilter { let mut render_pass = draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Blur filter").as_deref(), color_attachments: &[destination.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_pipeline(pipeline); @@ -381,7 +381,7 @@ impl BlurFilter { let mut render_pass = draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Blur filter").as_deref(), color_attachments: &[destination.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_pipeline(pipeline); diff --git a/render/wgpu/src/filters/color_matrix.rs b/render/wgpu/src/filters/color_matrix.rs index 0ad4f25b8..4d8b33026 100644 --- a/render/wgpu/src/filters/color_matrix.rs +++ b/render/wgpu/src/filters/color_matrix.rs @@ -160,7 +160,7 @@ impl ColorMatrixFilter { let mut render_pass = draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Color matrix filter").as_deref(), color_attachments: &[target.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_pipeline(pipeline); diff --git a/render/wgpu/src/filters/displacement_map.rs b/render/wgpu/src/filters/displacement_map.rs index dd116ad79..a8ce37e3c 100644 --- a/render/wgpu/src/filters/displacement_map.rs +++ b/render/wgpu/src/filters/displacement_map.rs @@ -235,7 +235,7 @@ impl DisplacementMapFilter { let mut render_pass = draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Displacement map filter").as_deref(), color_attachments: &[target.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_pipeline(pipeline); diff --git a/render/wgpu/src/filters/glow.rs b/render/wgpu/src/filters/glow.rs index bc4bff710..8e0e44dc6 100644 --- a/render/wgpu/src/filters/glow.rs +++ b/render/wgpu/src/filters/glow.rs @@ -214,7 +214,7 @@ impl GlowFilter { let mut render_pass = draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Glow filter").as_deref(), color_attachments: &[target.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_pipeline(pipeline); diff --git a/render/wgpu/src/pixel_bender.rs b/render/wgpu/src/pixel_bender.rs index 24b74f058..c9b298793 100644 --- a/render/wgpu/src/pixel_bender.rs +++ b/render/wgpu/src/pixel_bender.rs @@ -16,7 +16,7 @@ use ruffle_render::{ use wgpu::util::StagingBelt; use wgpu::{ BindGroupEntry, BindingResource, BlendComponent, BufferDescriptor, BufferUsages, - ColorTargetState, ColorWrites, CommandEncoder, FrontFace, ImageCopyTexture, PipelineLayout, + ColorTargetState, ColorWrites, CommandEncoder, ImageCopyTexture, PipelineLayout, RenderPipeline, RenderPipelineDescriptor, SamplerBindingType, ShaderModuleDescriptor, TextureDescriptor, TextureFormat, TextureView, VertexState, }; @@ -71,11 +71,7 @@ impl PixelBenderWgpuShader { write_mask: ColorWrites::all(), })], }), - primitive: wgpu::PrimitiveState { - front_face: FrontFace::Ccw, - cull_mode: None, - ..Default::default() - }, + primitive: Default::default(), depth_stencil: None, multisample: wgpu::MultisampleState { count: samples, @@ -558,6 +554,7 @@ pub(super) fn run_pixelbender_shader_impl( label: Some("PixelBender render pass"), color_attachments: &[color_attachment], depth_stencil_attachment: None, + ..Default::default() }); render_pass.set_bind_group(0, &bind_group, &[]); render_pass.set_pipeline(pipeline); diff --git a/render/wgpu/src/surface.rs b/render/wgpu/src/surface.rs index 150356d28..607fb0362 100644 --- a/render/wgpu/src/surface.rs +++ b/render/wgpu/src/surface.rs @@ -169,6 +169,7 @@ impl Surface { } else { None }, + ..Default::default() }); render_pass.set_bind_group(0, target.globals().bind_group(), &[]); let mut renderer = CommandRenderer::new( @@ -298,6 +299,7 @@ impl Surface { } else { None }, + ..Default::default() }); render_pass.set_bind_group(0, target.globals().bind_group(), &[]); diff --git a/render/wgpu/src/surface/target.rs b/render/wgpu/src/surface/target.rs index cb4b29916..e4cc87c8e 100644 --- a/render/wgpu/src/surface/target.rs +++ b/render/wgpu/src/surface/target.rs @@ -338,7 +338,7 @@ impl CommandTarget { encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: create_debug_label!("Clearing command target").as_deref(), color_attachments: &[self.color_attachments()], - depth_stencil_attachment: None, + ..Default::default() }); } } @@ -367,7 +367,10 @@ impl CommandTarget { Some(wgpu::RenderPassColorAttachment { view: self.frame_buffer.view(), resolve_target: self.resolve_buffer.as_ref().map(|b| b.view()), - ops: wgpu::Operations { load, store: true }, + ops: wgpu::Operations { + load, + store: wgpu::StoreOp::Store, + }, }) } @@ -393,7 +396,7 @@ impl CommandTarget { } else { wgpu::LoadOp::Load }, - store: true, + store: wgpu::StoreOp::Store, }), }) } diff --git a/render/wgpu/src/utils.rs b/render/wgpu/src/utils.rs index 1116579ed..d24baf3ed 100644 --- a/render/wgpu/src/utils.rs +++ b/render/wgpu/src/utils.rs @@ -248,13 +248,16 @@ pub fn run_copy_pipeline( let load = wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT); let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: create_debug_label!("Copy back to render target").as_deref(), color_attachments: &[Some(wgpu::RenderPassColorAttachment { view: frame_view, - ops: wgpu::Operations { load, store: true }, + ops: wgpu::Operations { + load, + store: wgpu::StoreOp::Store, + }, resolve_target: None, })], - depth_stencil_attachment: None, - label: create_debug_label!("Copy back to render target").as_deref(), + ..Default::default() }); render_pass.set_pipeline(&pipeline);