wgpu: Bump to wgpu 0.11

This commit is contained in:
Mike Welsh 2021-09-08 00:20:11 -07:00
parent 25c56b7000
commit 0cbdad1ff2
11 changed files with 208 additions and 359 deletions

376
Cargo.lock generated
View File

@ -93,21 +93,21 @@ name = "arrayvec"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
dependencies = [
"serde",
]
[[package]]
name = "arrayvec"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd"
dependencies = [
"serde",
]
[[package]]
name = "ash"
version = "0.32.1"
version = "0.33.3+1.2.191"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06063a002a77d2734631db74e8f4ce7148b77fe522e6bca46f2ae7774fd48112"
checksum = "cc4f1d82f164f838ae413296d1131aa6fa79b917d25bebaa7033d25620c09219"
dependencies = [
"libloading 0.7.0",
]
@ -186,6 +186,16 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags_serde_shim"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25c3d626f0280ec39b33a6fc5c6c1067432b4c41e94aee40ded197a6649bf025"
dependencies = [
"bitflags",
"serde",
]
[[package]]
name = "bitstream-io"
version = "1.2.0"
@ -815,9 +825,9 @@ dependencies = [
[[package]]
name = "d3d12"
version = "0.4.0"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "091ed1b25fe47c7ff129fc440c23650b6114f36aa00bc7212cc8041879294428"
checksum = "2daefd788d1e96e0a9d66dee4b828b883509bc3ea9ce30665f04c3246372690c"
dependencies = [
"bitflags",
"libloading 0.7.0",
@ -1108,15 +1118,6 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
[[package]]
name = "drm-fourcc"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebbf3a5ed4671aabffefce172ff43d69c1f27dd2c6aea28e5212a70f32ada0cf"
dependencies = [
"serde",
]
[[package]]
name = "either"
version = "1.6.1"
@ -1288,6 +1289,7 @@ name = "exporter"
version = "0.1.0"
dependencies = [
"clap",
"futures",
"image",
"indicatif",
"log",
@ -1296,16 +1298,6 @@ dependencies = [
"walkdir",
]
[[package]]
name = "external-memory"
version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4dfe8d292b014422776a8c516862d2bff8a81b223a4461dfdc45f3862dc9d39"
dependencies = [
"bitflags",
"drm-fourcc",
]
[[package]]
name = "fastrand"
version = "1.5.0"
@ -1317,9 +1309,9 @@ dependencies = [
[[package]]
name = "fixedbitset"
version = "0.2.0"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d"
checksum = "398ea4fabe40b9b0d885340a2a991a44c8a645624075ad966d21f88688e2b69e"
[[package]]
name = "flash-lso"
@ -1560,168 +1552,6 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "gfx-auxil"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1694991b11d642680e82075a75c7c2bd75556b805efa7660b705689f05b1ab1c"
dependencies = [
"fxhash",
"gfx-hal",
"spirv_cross",
]
[[package]]
name = "gfx-backend-dx11"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f9e453baf3aaef2b0c354ce0b3d63d76402e406a59b64b7182d123cfa6635ae"
dependencies = [
"arrayvec 0.5.2",
"bitflags",
"gfx-auxil",
"gfx-hal",
"gfx-renderdoc",
"libloading 0.7.0",
"log",
"parking_lot",
"range-alloc",
"raw-window-handle",
"smallvec",
"spirv_cross",
"thunderdome",
"winapi",
"wio",
]
[[package]]
name = "gfx-backend-dx12"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21506399f64a3c4d389182a89a30073856ae33eb712315456b4fd8f39ee7682a"
dependencies = [
"arrayvec 0.5.2",
"bit-set",
"bitflags",
"d3d12",
"gfx-auxil",
"gfx-hal",
"gfx-renderdoc",
"log",
"parking_lot",
"range-alloc",
"raw-window-handle",
"smallvec",
"spirv_cross",
"thunderdome",
"winapi",
]
[[package]]
name = "gfx-backend-empty"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29c8f813c47791918aa00dc9c9ddf961d23fa8c2a5d869e6cb8ea84f944820f4"
dependencies = [
"gfx-hal",
"log",
"raw-window-handle",
]
[[package]]
name = "gfx-backend-gl"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6bae057fc3a0ab23ecf97ae51d4017d27d5ddf0aab16ee6dcb58981af88c3152"
dependencies = [
"arrayvec 0.5.2",
"bitflags",
"fxhash",
"gfx-hal",
"glow",
"js-sys",
"khronos-egl",
"libloading 0.7.0",
"log",
"naga",
"parking_lot",
"raw-window-handle",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "gfx-backend-metal"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0de85808e2a98994c6af925253f8a9593bc57180ef1ea137deab6d35cc949517"
dependencies = [
"arrayvec 0.5.2",
"bitflags",
"block",
"cocoa-foundation",
"copyless",
"core-graphics-types",
"foreign-types",
"fxhash",
"gfx-hal",
"log",
"metal",
"naga",
"objc",
"parking_lot",
"profiling",
"range-alloc",
"raw-window-handle",
"storage-map",
]
[[package]]
name = "gfx-backend-vulkan"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9861ec855acbbc65c0e4f966d761224886e811dc2c6d413a4776e9293d0e5c0"
dependencies = [
"arrayvec 0.5.2",
"ash",
"byteorder",
"core-graphics-types",
"gfx-hal",
"gfx-renderdoc",
"inplace_it",
"log",
"naga",
"objc",
"parking_lot",
"raw-window-handle",
"smallvec",
"winapi",
]
[[package]]
name = "gfx-hal"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fbb575ea793dd0507b3082f4f2cde62dc9f3cebd98f5cd49ba2a4da97a976fd"
dependencies = [
"bitflags",
"external-memory",
"naga",
"raw-window-handle",
"thiserror",
]
[[package]]
name = "gfx-renderdoc"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8027995e247e2426d3a00d13f5191dd56c314bff02dc4b54cbf727f1ba9c40a"
dependencies = [
"libloading 0.7.0",
"log",
"renderdoc-sys",
]
[[package]]
name = "gif"
version = "0.11.3"
@ -1740,9 +1570,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
[[package]]
name = "glow"
version = "0.9.0"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b80b98efaa8a34fce11d60dd2ce2760d5d83c373cbcc73bb87c2a3a84a54108"
checksum = "4f04649123493bc2483cbef4daddb45d40bbdae5adb221a63a23efdb0cc99520"
dependencies = [
"js-sys",
"slotmap",
@ -1752,9 +1582,9 @@ dependencies = [
[[package]]
name = "gpu-alloc"
version = "0.4.7"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbc1b6ca374e81862526786d9cb42357ce03706ed1b8761730caafd02ab91f3a"
checksum = "0e64cbb8d36508d3e19da95e56e196a84f674fc190881f2cc010000798838aa6"
dependencies = [
"bitflags",
"gpu-alloc-types",
@ -1771,9 +1601,9 @@ dependencies = [
[[package]]
name = "gpu-descriptor"
version = "0.1.1"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8a70f1e87a3840ed6a3e99e02c2b861e4dbdf26f0d07e38f42ea5aff46cfce2"
checksum = "d7a237f0419ab10d17006d55c62ac4f689a6bf52c75d3f38b8361d249e8d4b0b"
dependencies = [
"bitflags",
"gpu-descriptor-types",
@ -1841,6 +1671,12 @@ dependencies = [
"libc",
]
[[package]]
name = "hexf-parse"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
[[package]]
name = "http"
version = "0.2.4"
@ -1902,6 +1738,7 @@ checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
dependencies = [
"autocfg",
"hashbrown 0.11.2",
"serde",
]
[[package]]
@ -2272,9 +2109,9 @@ dependencies = [
[[package]]
name = "metal"
version = "0.23.0"
version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79d7d769f1c104b8388294d6594d491d2e21240636f5f94d37f8a0f3d7904450"
checksum = "e0514f491f4cc03632ab399ee01e2c1c1b12d3e1cf2d667c1ff5f87d6dcd2084"
dependencies = [
"bitflags",
"block",
@ -2365,19 +2202,21 @@ dependencies = [
[[package]]
name = "naga"
version = "0.5.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef670817eef03d356d5a509ea275e7dd3a78ea9e24261ea3cb2dfed1abb08f64"
checksum = "eda66d09f712e1f0a6ab436137da4fac312f78301f6d4ac7cb8bfe96e988734f"
dependencies = [
"bit-set",
"bitflags",
"codespan-reporting",
"fxhash",
"hexf-parse",
"indexmap",
"log",
"num-traits",
"petgraph",
"rose_tree",
"spirv_headers",
"serde",
"spirv",
"thiserror",
]
@ -2783,9 +2622,9 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "petgraph"
version = "0.5.1"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7"
checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f"
dependencies = [
"fixedbitset",
"indexmap",
@ -3131,15 +2970,6 @@ dependencies = [
"serde",
]
[[package]]
name = "rose_tree"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "284de9dae38774e2813aaabd7e947b4a6fe9b8c58c2309f754a487cdd50de1c2"
dependencies = [
"petgraph",
]
[[package]]
name = "ruffle_core"
version = "0.1.0"
@ -3489,9 +3319,12 @@ dependencies = [
[[package]]
name = "slotmap"
version = "0.4.2"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d61b40583e0c1bd3100652ba8940939decc8808e7b2a07f4f4606c6a8a40035a"
checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342"
dependencies = [
"version_check",
]
[[package]]
name = "sluice"
@ -3540,21 +3373,10 @@ dependencies = [
]
[[package]]
name = "spirv_cross"
version = "0.23.1"
name = "spirv"
version = "0.2.0+1.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60647fadbf83c4a72f0d7ea67a7ca3a81835cf442b8deae5c134c3e0055b2e14"
dependencies = [
"cc",
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "spirv_headers"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f5b132530b1ac069df335577e3581765995cba5a13995cdbbdbc8fb057c532c"
checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830"
dependencies = [
"bitflags",
"num-traits",
@ -3572,15 +3394,6 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
[[package]]
name = "storage-map"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c"
dependencies = [
"lock_api",
]
[[package]]
name = "strength_reduce"
version = "0.2.3"
@ -3760,12 +3573,6 @@ dependencies = [
"syn",
]
[[package]]
name = "thunderdome"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87b4947742c93ece24a0032141d9caa3d853752e694a57e35029dd2bd08673e0"
[[package]]
name = "tiff"
version = "0.6.1"
@ -4147,9 +3954,9 @@ checksum = "9a8f3bf74f2d43500dea6a8291b6ac943e3465ea9936b94bd017e61b7b21dd01"
[[package]]
name = "web-sys"
version = "0.3.50"
version = "0.3.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be"
checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
dependencies = [
"js-sys",
"wasm-bindgen",
@ -4183,11 +3990,11 @@ dependencies = [
[[package]]
name = "wgpu"
version = "0.9.0"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd247f8b26fd3d42ef2f320d378025cd6e84d782ef749fab45cc3b981fbe3275"
checksum = "d1577ecc4f6992b9e965878ac594efb24eed2bdf089c11f45b3d1c5f216e2e30"
dependencies = [
"arrayvec 0.5.2",
"arrayvec 0.7.1",
"js-sys",
"log",
"naga",
@ -4199,29 +4006,21 @@ dependencies = [
"wasm-bindgen-futures",
"web-sys",
"wgpu-core",
"wgpu-hal",
"wgpu-types",
]
[[package]]
name = "wgpu-core"
version = "0.9.2"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "958a8a5e418492723ab4e7933bf6dbdf06f5dc87274ba2ae0e4f9c891aac579c"
checksum = "3bdcbfa4885b32c2b1feb2faeb8b6a76065b752b8f08751b82f994e937687f46"
dependencies = [
"arrayvec 0.5.2",
"arrayvec 0.7.1",
"bitflags",
"cfg_aliases",
"copyless",
"fxhash",
"gfx-backend-dx11",
"gfx-backend-dx12",
"gfx-backend-empty",
"gfx-backend-gl",
"gfx-backend-metal",
"gfx-backend-vulkan",
"gfx-hal",
"gpu-alloc",
"gpu-descriptor",
"log",
"naga",
"parking_lot",
@ -4231,16 +4030,56 @@ dependencies = [
"serde",
"smallvec",
"thiserror",
"wgpu-hal",
"wgpu-types",
]
[[package]]
name = "wgpu-types"
version = "0.9.0"
name = "wgpu-hal"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f5c9678cd533558e28b416d66947b099742df1939307478db54f867137f1b60"
checksum = "0e493835d9edb153d5c8a9d8d016e1811dbe32ddb707a110be1453c7b051d3ec"
dependencies = [
"arrayvec 0.7.1",
"ash",
"bit-set",
"bitflags",
"block",
"core-graphics-types",
"d3d12",
"foreign-types",
"fxhash",
"glow",
"gpu-alloc",
"gpu-descriptor",
"inplace_it",
"js-sys",
"khronos-egl",
"libloading 0.7.0",
"log",
"metal",
"naga",
"objc",
"parking_lot",
"profiling",
"range-alloc",
"raw-window-handle",
"renderdoc-sys",
"thiserror",
"wasm-bindgen",
"web-sys",
"wgpu-types",
"winapi",
]
[[package]]
name = "wgpu-types"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e15e44ba88ec415466e18e91881319e7c9e96cb905dc623305168aea65b85ccc"
dependencies = [
"bitflags",
"bitflags_serde_shim",
"serde",
]
@ -4322,15 +4161,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "wio"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
dependencies = [
"winapi",
]
[[package]]
name = "wyz"
version = "0.2.0"

View File

@ -7,6 +7,7 @@ license = "MIT OR Apache-2.0"
[dependencies]
clap = "3.0.0-beta.5"
futures = "0.3"
ruffle_core = { path = "../core" }
ruffle_render_wgpu = { path = "../render/wgpu", features = ["clap"] }
image = "0.23.14"

View File

@ -6,7 +6,6 @@ edition = "2021"
license = "MIT OR Apache-2.0"
[dependencies]
wgpu = "0.9.0"
image = "0.23.14"
log = "0.4"
ruffle_core = { path = "../../core" }
@ -17,6 +16,16 @@ raw-window-handle = "0.3.3"
clap = { version = "3.0.0-beta.5", optional = true }
enum-map = "1.1.1"
# wgpu desktop
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wgpu]
version = "0.11"
features = ["spirv"]
# wgpu wasm
[target.'cfg(target_arch = "wasm32")'.dependencies.wgpu]
version = "0.11"
features = ["spirv-web"]
[features]
render_debug_labels = []
render_trace = ["wgpu/trace"]

View File

@ -46,7 +46,7 @@ impl BitmapSamplers {
label: layout_label.as_deref(),
entries: &[wgpu::BindGroupLayoutEntry {
binding: 0,
visibility: wgpu::ShaderStage::FRAGMENT,
visibility: wgpu::ShaderStages::FRAGMENT,
ty: wgpu::BindingType::Sampler {
comparison: false,
filtering: true,

View File

@ -7,14 +7,14 @@ pub enum GraphicsBackend {
Dx11,
}
impl From<GraphicsBackend> for wgpu::BackendBit {
impl From<GraphicsBackend> for wgpu::Backends {
fn from(backend: GraphicsBackend) -> Self {
match backend {
GraphicsBackend::Default => wgpu::BackendBit::PRIMARY | wgpu::BackendBit::DX11,
GraphicsBackend::Vulkan => wgpu::BackendBit::VULKAN,
GraphicsBackend::Metal => wgpu::BackendBit::METAL,
GraphicsBackend::Dx12 => wgpu::BackendBit::DX12,
GraphicsBackend::Dx11 => wgpu::BackendBit::DX11,
GraphicsBackend::Default => wgpu::Backends::PRIMARY | wgpu::Backends::DX11,
GraphicsBackend::Vulkan => wgpu::Backends::VULKAN,
GraphicsBackend::Metal => wgpu::Backends::METAL,
GraphicsBackend::Dx12 => wgpu::Backends::DX12,
GraphicsBackend::Dx11 => wgpu::Backends::DX11,
}
}
}

View File

@ -24,7 +24,7 @@ impl Globals {
label: layout_label.as_deref(),
entries: &[wgpu::BindGroupLayoutEntry {
binding: 0,
visibility: wgpu::ShaderStage::VERTEX,
visibility: wgpu::ShaderStages::VERTEX,
ty: wgpu::BindingType::Buffer {
ty: wgpu::BufferBindingType::Uniform,
has_dynamic_offset: false,
@ -38,7 +38,7 @@ impl Globals {
let buffer = device.create_buffer(&wgpu::BufferDescriptor {
label: buffer_label.as_deref(),
size: std::mem::size_of::<GlobalsUniform>() as u64,
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST,
usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false,
});
@ -90,7 +90,7 @@ impl Globals {
[-1.0, 1.0, 0.0, 1.0],
],
}]),
usage: wgpu::BufferUsage::COPY_SRC,
usage: wgpu::BufferUsages::COPY_SRC,
});
encoder.copy_buffer_to_buffer(

View File

@ -248,11 +248,11 @@ impl WgpuRenderBackend<SwapChainTarget> {
pub fn for_window<W: HasRawWindowHandle>(
window: &W,
size: (u32, u32),
backend: wgpu::BackendBit,
backend: wgpu::Backends,
power_preference: wgpu::PowerPreference,
trace_path: Option<&Path>,
) -> Result<Self, Error> {
if wgpu::BackendBit::SECONDARY.contains(backend) {
if wgpu::Backends::SECONDARY.contains(backend) {
log::warn!(
"{} graphics backend support may not be fully supported.",
format_list(&get_backend_names(backend), "and")
@ -275,11 +275,11 @@ impl WgpuRenderBackend<SwapChainTarget> {
impl WgpuRenderBackend<TextureTarget> {
pub fn for_offscreen(
size: (u32, u32),
backend: wgpu::BackendBit,
backend: wgpu::Backends,
power_preference: wgpu::PowerPreference,
trace_path: Option<&Path>,
) -> Result<Self, Error> {
if wgpu::BackendBit::SECONDARY.contains(backend) {
if wgpu::Backends::SECONDARY.contains(backend) {
log::warn!(
"{} graphics backend support may not be fully supported.",
format_list(&get_backend_names(backend), "and")
@ -309,7 +309,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
sample_count: descriptors.msaa_sample_count,
dimension: wgpu::TextureDimension::D2,
format: target.format(),
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
});
let frame_buffer_view = frame_buffer.create_view(&Default::default());
@ -321,7 +321,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
sample_count: descriptors.msaa_sample_count,
dimension: wgpu::TextureDimension::D2,
format: wgpu::TextureFormat::Depth24PlusStencil8,
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
});
let depth_texture_view = depth_texture.create_view(&Default::default());
@ -353,7 +353,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
}
pub fn build_descriptors(
backend: wgpu::BackendBit,
backend: wgpu::Backends,
instance: wgpu::Instance,
surface: Option<&wgpu::Surface>,
power_preference: wgpu::PowerPreference,
@ -362,6 +362,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
let adapter = block_on(instance.request_adapter(&wgpu::RequestAdapterOptions {
power_preference,
compatible_surface: surface,
force_fallback_adapter: false,
}))
.ok_or_else(|| {
let names = get_backend_names(backend);
@ -408,14 +409,14 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
let vertex_buffer = create_buffer_with_data(
&self.descriptors.device,
bytemuck::cast_slice(&vertices),
wgpu::BufferUsage::VERTEX,
wgpu::BufferUsages::VERTEX,
create_debug_label!("Shape {} ({}) vbo", shape_id, draw.draw_type.name()),
);
let index_buffer = create_buffer_with_data(
&self.descriptors.device,
bytemuck::cast_slice(&draw.indices),
wgpu::BufferUsage::INDEX,
wgpu::BufferUsages::INDEX,
create_debug_label!("Shape {} ({}) ibo", shape_id, draw.draw_type.name()),
);
@ -439,7 +440,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
let tex_transforms_ubo = create_buffer_with_data(
&self.descriptors.device,
bytemuck::cast_slice(&[texture_transform]),
wgpu::BufferUsage::UNIFORM,
wgpu::BufferUsages::UNIFORM,
create_debug_label!(
"Shape {} draw {} textransforms ubo transfer buffer",
shape_id,
@ -450,7 +451,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
let gradient_ubo = create_buffer_with_data(
&self.descriptors.device,
bytemuck::cast_slice(&[GradientUniforms::from(gradient)]),
wgpu::BufferUsage::STORAGE,
wgpu::BufferUsages::STORAGE,
create_debug_label!(
"Shape {} draw {} gradient ubo transfer buffer",
shape_id,
@ -525,7 +526,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
let tex_transforms_ubo = create_buffer_with_data(
&self.descriptors.device,
bytemuck::cast_slice(&[texture_transform]),
wgpu::BufferUsage::UNIFORM,
wgpu::BufferUsages::UNIFORM,
create_debug_label!(
"Shape {} draw {} textransforms ubo transfer buffer",
shape_id,
@ -619,7 +620,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
sample_count: 1,
dimension: wgpu::TextureDimension::D2,
format: wgpu::TextureFormat::Rgba8Unorm,
usage: wgpu::TextureUsage::SAMPLED | wgpu::TextureUsage::COPY_DST,
usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST,
});
self.descriptors.queue.write_texture(
@ -627,6 +628,7 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
texture: &texture,
mip_level: 0,
origin: Default::default(),
aspect: wgpu::TextureAspect::All,
},
&data,
wgpu::ImageDataLayout {
@ -714,7 +716,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
sample_count: self.descriptors.msaa_sample_count,
dimension: wgpu::TextureDimension::D2,
format: self.target.format(),
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
});
self.frame_buffer_view = frame_buffer.create_view(&Default::default());
@ -733,7 +735,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
sample_count: self.descriptors.msaa_sample_count,
dimension: wgpu::TextureDimension::D2,
format: wgpu::TextureFormat::Depth24PlusStencil8,
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
});
self.depth_texture_view = depth_texture.create_view(&Default::default());
self.descriptors.globals.set_resolution(width, height);
@ -916,12 +918,12 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
.pipeline_for(self.mask_state),
);
frame.render_pass.set_push_constants(
wgpu::ShaderStage::VERTEX,
wgpu::ShaderStages::VERTEX,
0,
bytemuck::cast_slice(&[Transforms { world_matrix }]),
);
frame.render_pass.set_push_constants(
wgpu::ShaderStage::FRAGMENT,
wgpu::ShaderStages::FRAGMENT,
std::mem::size_of::<Transforms>() as u32,
bytemuck::cast_slice(&[ColorAdjustments::from(transform.color_transform)]),
);
@ -1029,12 +1031,12 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
}
frame.render_pass.set_push_constants(
wgpu::ShaderStage::VERTEX,
wgpu::ShaderStages::VERTEX,
0,
bytemuck::cast_slice(&[Transforms { world_matrix }]),
);
frame.render_pass.set_push_constants(
wgpu::ShaderStage::FRAGMENT,
wgpu::ShaderStages::FRAGMENT,
std::mem::size_of::<Transforms>() as u32,
bytemuck::cast_slice(&[ColorAdjustments::from(transform.color_transform)]),
);
@ -1096,12 +1098,12 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
);
frame.render_pass.set_push_constants(
wgpu::ShaderStage::VERTEX,
wgpu::ShaderStages::VERTEX,
0,
bytemuck::cast_slice(&[Transforms { world_matrix }]),
);
frame.render_pass.set_push_constants(
wgpu::ShaderStage::FRAGMENT,
wgpu::ShaderStages::FRAGMENT,
std::mem::size_of::<Transforms>() as u32,
bytemuck::cast_slice(&[ColorAdjustments {
mult_color,
@ -1144,6 +1146,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
&self.descriptors.device,
&self.descriptors.queue,
vec![draw_encoder.finish()],
frame.frame_data.1,
);
}
}
@ -1222,6 +1225,7 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
texture,
mip_level: 0,
origin: Default::default(),
aspect: wgpu::TextureAspect::All,
},
&rgba,
wgpu::ImageDataLayout {
@ -1260,14 +1264,14 @@ fn create_quad_buffers(device: &wgpu::Device) -> (wgpu::Buffer, wgpu::Buffer, wg
let vbo = create_buffer_with_data(
device,
bytemuck::cast_slice(&vertices),
wgpu::BufferUsage::VERTEX,
wgpu::BufferUsages::VERTEX,
create_debug_label!("Quad vbo"),
);
let ibo = create_buffer_with_data(
device,
bytemuck::cast_slice(&indices),
wgpu::BufferUsage::INDEX,
wgpu::BufferUsages::INDEX,
create_debug_label!("Quad ibo"),
);
@ -1281,7 +1285,7 @@ fn create_quad_buffers(device: &wgpu::Device) -> (wgpu::Buffer, wgpu::Buffer, wg
[0.0, 0.0, 0.0, 1.0],
],
}]),
wgpu::BufferUsage::UNIFORM,
wgpu::BufferUsages::UNIFORM,
create_debug_label!("Quad tex transforms"),
);

View File

@ -39,7 +39,6 @@ impl Pipelines {
wgpu::ShaderModuleDescriptor {
label: Some($($token)*),
source: wgpu::util::make_spirv(include_bytes!($($token)*)),
flags: wgpu::ShaderFlags::empty(),
}
}
};
@ -55,7 +54,7 @@ impl Pipelines {
let vertex_buffers_description = [wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<Vertex>() as u64,
step_mode: wgpu::InputStepMode::Vertex,
step_mode: wgpu::VertexStepMode::Vertex,
attributes: &vertex_attr_array![
0 => Float32x2,
1 => Float32x4,
@ -77,7 +76,7 @@ impl Pipelines {
entries: &[
wgpu::BindGroupLayoutEntry {
binding: 0,
visibility: wgpu::ShaderStage::VERTEX,
visibility: wgpu::ShaderStages::VERTEX,
ty: wgpu::BindingType::Buffer {
ty: wgpu::BufferBindingType::Uniform,
has_dynamic_offset: false,
@ -87,7 +86,7 @@ impl Pipelines {
},
wgpu::BindGroupLayoutEntry {
binding: 1,
visibility: wgpu::ShaderStage::FRAGMENT,
visibility: wgpu::ShaderStages::FRAGMENT,
ty: wgpu::BindingType::Texture {
multisampled: false,
sample_type: wgpu::TextureSampleType::Float { filterable: true },
@ -116,7 +115,7 @@ impl Pipelines {
entries: &[
wgpu::BindGroupLayoutEntry {
binding: 0,
visibility: wgpu::ShaderStage::VERTEX,
visibility: wgpu::ShaderStages::VERTEX,
ty: wgpu::BindingType::Buffer {
ty: wgpu::BufferBindingType::Uniform,
has_dynamic_offset: false,
@ -126,7 +125,7 @@ impl Pipelines {
},
wgpu::BindGroupLayoutEntry {
binding: 1,
visibility: wgpu::ShaderStage::FRAGMENT,
visibility: wgpu::ShaderStages::FRAGMENT,
ty: wgpu::BindingType::Buffer {
ty: wgpu::BufferBindingType::Storage { read_only: true },
has_dynamic_offset: false,
@ -217,11 +216,11 @@ fn create_color_pipelines(
bind_group_layouts: &[globals_layout],
push_constant_ranges: &[
wgpu::PushConstantRange {
stages: wgpu::ShaderStage::VERTEX,
stages: wgpu::ShaderStages::VERTEX,
range: 0..transforms_size,
},
wgpu::PushConstantRange {
stages: wgpu::ShaderStage::FRAGMENT,
stages: wgpu::ShaderStages::FRAGMENT,
range: transforms_size..transforms_size + colors_size,
},
],
@ -390,11 +389,11 @@ fn create_bitmap_pipeline(
bind_group_layouts: &[globals_layout, bitmap_bind_layout, sampler_layout],
push_constant_ranges: &[
wgpu::PushConstantRange {
stages: wgpu::ShaderStage::VERTEX,
stages: wgpu::ShaderStages::VERTEX,
range: 0..64,
},
wgpu::PushConstantRange {
stages: wgpu::ShaderStage::FRAGMENT,
stages: wgpu::ShaderStages::FRAGMENT,
range: 64..96,
},
],
@ -561,11 +560,11 @@ fn create_gradient_pipeline(
bind_group_layouts: &[globals_layout, gradient_bind_layout],
push_constant_ranges: &[
wgpu::PushConstantRange {
stages: wgpu::ShaderStage::VERTEX,
stages: wgpu::ShaderStages::VERTEX,
range: 0..64,
},
wgpu::PushConstantRange {
stages: wgpu::ShaderStage::FRAGMENT,
stages: wgpu::ShaderStages::FRAGMENT,
range: 64..96,
},
],
@ -717,7 +716,7 @@ fn create_gradient_pipeline(
ShapePipeline { mask_pipelines }
}
fn mask_render_state(state: MaskState) -> (wgpu::StencilState, wgpu::ColorWrite) {
fn mask_render_state(state: MaskState) -> (wgpu::StencilState, wgpu::ColorWrites) {
let (stencil_state, color_write) = match state {
MaskState::NoMask => (
wgpu::StencilFaceState {
@ -726,7 +725,7 @@ fn mask_render_state(state: MaskState) -> (wgpu::StencilState, wgpu::ColorWrite)
depth_fail_op: wgpu::StencilOperation::Keep,
pass_op: wgpu::StencilOperation::Keep,
},
wgpu::ColorWrite::ALL,
wgpu::ColorWrites::ALL,
),
MaskState::DrawMaskStencil => (
wgpu::StencilFaceState {
@ -735,7 +734,7 @@ fn mask_render_state(state: MaskState) -> (wgpu::StencilState, wgpu::ColorWrite)
depth_fail_op: wgpu::StencilOperation::Keep,
pass_op: wgpu::StencilOperation::IncrementClamp,
},
wgpu::ColorWrite::empty(),
wgpu::ColorWrites::empty(),
),
MaskState::DrawMaskedContent => (
wgpu::StencilFaceState {
@ -744,7 +743,7 @@ fn mask_render_state(state: MaskState) -> (wgpu::StencilState, wgpu::ColorWrite)
depth_fail_op: wgpu::StencilOperation::Keep,
pass_op: wgpu::StencilOperation::Keep,
},
wgpu::ColorWrite::ALL,
wgpu::ColorWrites::ALL,
),
MaskState::ClearMaskStencil => (
wgpu::StencilFaceState {
@ -753,7 +752,7 @@ fn mask_render_state(state: MaskState) -> (wgpu::StencilState, wgpu::ColorWrite)
depth_fail_op: wgpu::StencilOperation::Keep,
pass_op: wgpu::StencilOperation::DecrementClamp,
},
wgpu::ColorWrite::empty(),
wgpu::ColorWrites::empty(),
),
};

View File

@ -19,46 +19,48 @@ pub trait RenderTarget: Debug + 'static {
fn height(&self) -> u32;
fn get_next_texture(&mut self) -> Result<Self::Frame, wgpu::SwapChainError>;
fn get_next_texture(&mut self) -> Result<Self::Frame, wgpu::SurfaceError>;
fn submit<I: IntoIterator<Item = wgpu::CommandBuffer>>(
&self,
device: &wgpu::Device,
queue: &wgpu::Queue,
command_buffers: I,
frame: Self::Frame,
);
}
#[derive(Debug)]
pub struct SwapChainTarget {
window_surface: wgpu::Surface,
swap_chain_desc: wgpu::SwapChainDescriptor,
swap_chain: wgpu::SwapChain,
surface_config: wgpu::SurfaceConfiguration,
}
#[derive(Debug)]
pub struct SwapChainTargetFrame(wgpu::SwapChainFrame);
pub struct SwapChainTargetFrame {
texture: wgpu::SurfaceTexture,
view: wgpu::TextureView,
}
impl RenderTargetFrame for SwapChainTargetFrame {
fn view(&self) -> &wgpu::TextureView {
&self.0.output.view
&self.view
}
}
impl SwapChainTarget {
pub fn new(surface: wgpu::Surface, size: (u32, u32), device: &wgpu::Device) -> Self {
let swap_chain_desc = wgpu::SwapChainDescriptor {
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
let surface_config = wgpu::SurfaceConfiguration {
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
format: wgpu::TextureFormat::Bgra8Unorm,
width: size.0,
height: size.1,
present_mode: wgpu::PresentMode::Mailbox,
};
let swap_chain = device.create_swap_chain(&surface, &swap_chain_desc);
surface.configure(device, &surface_config);
Self {
surface_config,
window_surface: surface,
swap_chain_desc,
swap_chain,
}
}
}
@ -67,27 +69,27 @@ impl RenderTarget for SwapChainTarget {
type Frame = SwapChainTargetFrame;
fn resize(&mut self, device: &wgpu::Device, width: u32, height: u32) {
self.swap_chain_desc.width = width;
self.swap_chain_desc.height = height;
self.swap_chain = device.create_swap_chain(&self.window_surface, &self.swap_chain_desc);
self.surface_config.width = width;
self.surface_config.height = height;
self.window_surface.configure(device, &self.surface_config);
}
fn format(&self) -> wgpu::TextureFormat {
self.swap_chain_desc.format
self.surface_config.format
}
fn width(&self) -> u32 {
self.swap_chain_desc.width
self.surface_config.width
}
fn height(&self) -> u32 {
self.swap_chain_desc.height
self.surface_config.height
}
fn get_next_texture(&mut self) -> Result<Self::Frame, wgpu::SwapChainError> {
self.swap_chain
.get_current_frame()
.map(SwapChainTargetFrame)
fn get_next_texture(&mut self) -> Result<Self::Frame, wgpu::SurfaceError> {
let texture = self.window_surface.get_current_texture()?;
let view = texture.texture.create_view(&Default::default());
Ok(SwapChainTargetFrame { texture, view })
}
fn submit<I: IntoIterator<Item = wgpu::CommandBuffer>>(
@ -95,8 +97,10 @@ impl RenderTarget for SwapChainTarget {
_device: &wgpu::Device,
queue: &wgpu::Queue,
command_buffers: I,
frame: Self::Frame,
) {
queue.submit(command_buffers);
frame.texture.present();
}
}
@ -137,14 +141,14 @@ impl TextureTarget {
sample_count: 1,
dimension: wgpu::TextureDimension::D2,
format,
usage: wgpu::TextureUsage::RENDER_ATTACHMENT | wgpu::TextureUsage::COPY_SRC,
usage: wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::COPY_SRC,
});
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),
usage: wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::MAP_READ,
usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
mapped_at_creation: false,
});
Self {
@ -201,14 +205,14 @@ impl RenderTarget for TextureTarget {
sample_count: 1,
dimension: wgpu::TextureDimension::D2,
format: self.format,
usage: wgpu::TextureUsage::RENDER_ATTACHMENT | wgpu::TextureUsage::COPY_SRC,
usage: wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::COPY_SRC,
});
let buffer_label = create_debug_label!("Render target buffer");
self.buffer = device.create_buffer(&wgpu::BufferDescriptor {
label: buffer_label.as_deref(),
size: width as u64 * height as u64 * 4,
usage: wgpu::BufferUsage::COPY_DST | wgpu::BufferUsage::MAP_READ,
usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
mapped_at_creation: false,
});
}
@ -225,7 +229,7 @@ impl RenderTarget for TextureTarget {
self.size.height
}
fn get_next_texture(&mut self) -> Result<Self::Frame, wgpu::SwapChainError> {
fn get_next_texture(&mut self) -> Result<Self::Frame, wgpu::SurfaceError> {
Ok(TextureTargetFrame(
self.texture.create_view(&Default::default()),
))
@ -236,6 +240,7 @@ impl RenderTarget for TextureTarget {
device: &wgpu::Device,
queue: &wgpu::Queue,
command_buffers: I,
_frame: Self::Frame,
) {
let label = create_debug_label!("Render target transfer encoder");
let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
@ -246,6 +251,7 @@ impl RenderTarget for TextureTarget {
texture: &self.texture,
mip_level: 0,
origin: wgpu::Origin3d::ZERO,
aspect: wgpu::TextureAspect::All,
},
wgpu::ImageCopyBuffer {
buffer: &self.buffer,

View File

@ -27,25 +27,25 @@ pub fn format_list<'a>(values: &[&'a str], connector: &'a str) -> Cow<'a, str> {
}
}
pub fn get_backend_names(backends: wgpu::BackendBit) -> Vec<&'static str> {
pub fn get_backend_names(backends: wgpu::Backends) -> Vec<&'static str> {
let mut names = Vec::new();
if backends.contains(wgpu::BackendBit::VULKAN) {
if backends.contains(wgpu::Backends::VULKAN) {
names.push("Vulkan");
}
if backends.contains(wgpu::BackendBit::DX12) {
if backends.contains(wgpu::Backends::DX12) {
names.push("DirectX 12");
}
if backends.contains(wgpu::BackendBit::DX11) {
if backends.contains(wgpu::Backends::DX11) {
names.push("DirectX 11");
}
if backends.contains(wgpu::BackendBit::METAL) {
if backends.contains(wgpu::Backends::METAL) {
names.push("Metal");
}
if backends.contains(wgpu::BackendBit::GL) {
if backends.contains(wgpu::Backends::GL) {
names.push("Open GL");
}
if backends.contains(wgpu::BackendBit::BROWSER_WEBGPU) {
if backends.contains(wgpu::Backends::BROWSER_WEBGPU) {
names.push("Web GPU");
}
@ -55,7 +55,7 @@ pub fn get_backend_names(backends: wgpu::BackendBit) -> Vec<&'static str> {
pub fn create_buffer_with_data(
device: &wgpu::Device,
data: &[u8],
usage: wgpu::BufferUsage,
usage: wgpu::BufferUsages,
label: Option<String>,
) -> wgpu::Buffer {
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {

View File

@ -1022,7 +1022,7 @@ fn run_swf(
let trace_output = Rc::new(RefCell::new(Vec::new()));
let mut platform_id = None;
let backend_bit = wgpu::BackendBit::PRIMARY;
let backend_bit = wgpu::Backends::PRIMARY;
let (render_backend, video_backend): (Box<dyn RenderBackend>, Box<dyn VideoBackend>) =
if check_img {