From 7c28bd34efaa78b8d044b42d9321d2d435bf426b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kro=C5=A1l=C3=A1k?= Date: Sun, 19 Jan 2020 22:17:27 +0100 Subject: [PATCH] Update gfx-hal --- Cargo.lock | 399 ++++++++++++------------------- libportability-gfx/Cargo.toml | 9 +- libportability-gfx/src/conv.rs | 112 ++++++--- libportability-gfx/src/handle.rs | 2 +- libportability-gfx/src/impls.rs | 127 +++++----- libportability-gfx/src/lib.rs | 7 +- 6 files changed, 313 insertions(+), 343 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc03583..f01bed9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,12 +14,14 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "arrayvec" -version = "0.4.11" +name = "anyhow" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "arrayvec" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "ash" @@ -38,26 +40,6 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "backtrace" -version = "0.3.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bitflags" version = "1.1.0" @@ -70,7 +52,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bumpalo" -version = "2.6.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -200,10 +182,11 @@ dependencies = [ [[package]] name = "d3d12" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -227,26 +210,6 @@ dependencies = [ "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "failure" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "failure_derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "foreign-types" version = "0.3.2" @@ -283,103 +246,125 @@ dependencies = [ "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "gfx-auxil" +version = "0.2.0" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" +dependencies = [ + "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", + "spirv_cross 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "gfx-backend-dx11" -version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.5" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-auxil 0.2.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "spirv_cross 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spirv_cross 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-backend-dx12" -version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.0" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "d3d12 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "d3d12 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gfx-auxil 0.2.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "spirv_cross 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spirv_cross 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-backend-empty" -version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.0" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-backend-gl" -version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.0" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-auxil 0.2.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glow 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "glow 0.3.0-alpha4 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "spirv_cross 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spirv_cross 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-backend-metal" -version = "0.3.2" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.0" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "cocoa 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-auxil 0.2.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "metal 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "spirv_cross 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", "storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-backend-vulkan" -version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.0" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "ash 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)", "xcb 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -387,11 +372,12 @@ dependencies = [ [[package]] name = "gfx-hal" -version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +version = "0.4.1" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -434,14 +420,14 @@ dependencies = [ [[package]] name = "glow" -version = "0.2.3" +version = "0.3.0-alpha4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -484,10 +470,10 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.27" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -581,11 +567,6 @@ dependencies = [ "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nodrop" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "nom" version = "4.2.3" @@ -622,25 +603,23 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot_core" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -667,16 +646,18 @@ version = "0.1.0" dependencies = [ "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx-backend-dx11 0.3.0 (git+https://github.com/gfx-rs/gfx)", - "gfx-backend-dx12 0.3.0 (git+https://github.com/gfx-rs/gfx)", - "gfx-backend-empty 0.3.0 (git+https://github.com/gfx-rs/gfx)", - "gfx-backend-gl 0.3.0 (git+https://github.com/gfx-rs/gfx)", - "gfx-backend-metal 0.3.2 (git+https://github.com/gfx-rs/gfx)", - "gfx-backend-vulkan 0.3.0 (git+https://github.com/gfx-rs/gfx)", - "gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-auxil 0.2.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-backend-dx11 0.4.5 (git+https://github.com/gfx-rs/gfx)", + "gfx-backend-dx12 0.4.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-backend-empty 0.4.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-backend-gl 0.4.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-backend-metal 0.4.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-backend-vulkan 0.4.0 (git+https://github.com/gfx-rs/gfx)", + "gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "renderdoc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -691,14 +672,6 @@ name = "ppv-lite86" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "proc-macro2" version = "1.0.3" @@ -712,14 +685,6 @@ name = "quick-error" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "quote" version = "1.0.2" @@ -768,7 +733,15 @@ dependencies = [ [[package]] name = "range-alloc" version = "0.1.0" -source = "git+https://github.com/gfx-rs/gfx#d4a5bb06fc3c8bb4fdbeca54b43465b6b4c9420b" +source = "git+https://github.com/gfx-rs/gfx#f999b5295ca30dc38f33b0a4770a31d50138687c" + +[[package]] +name = "raw-window-handle" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "redox_syscall" @@ -812,37 +785,11 @@ dependencies = [ "wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rustc-demangle" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "scopeguard" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "shared_library" version = "0.1.9" @@ -859,7 +806,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" -version = "0.6.10" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -867,24 +814,14 @@ name = "sourcefile" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "spirv_cross" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "spirv_cross" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -895,16 +832,6 @@ dependencies = [ "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "syn" version = "1.0.5" @@ -915,17 +842,6 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "synstructure" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tempfile" version = "3.1.0" @@ -965,11 +881,6 @@ name = "unicode-segmentation" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "unicode-xid" version = "0.2.0" @@ -987,65 +898,65 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasm-bindgen" -version = "0.2.50" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.50" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo 3.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.50" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.50" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.50" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasm-bindgen-webidl" -version = "0.2.50" +version = "0.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1114,14 +1025,14 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.27" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", + "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-webidl 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1242,14 +1153,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" "checksum android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" -"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" +"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" +"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" "checksum ash 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)" = "003d1fb2eb12eb06d4a03dbe02eea67a9fac910fa97932ab9e3a75b96a1ea5e5" "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" -"checksum backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "5180c5a20655b14a819b652fd2378fa5f1697b6c9ddad3e695c2f9cedf6df4e2" -"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -"checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" +"checksum bumpalo 3.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8038c1ddc0a5f73787b130f4cc75151e96ed33e417fde765eb5a81e3532f4" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" @@ -1265,32 +1175,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" "checksum core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb0ed45fdc32f9ab426238fba9407dfead7bacd7900c9b4dd3f396f46eafdae3" "checksum core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "56790968ab1c8a1202a102e6de05fc6e1ec87da99e4e93e9a7d13efbfc1e95a9" -"checksum d3d12 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4fda5547c55c93b070d59108464bbfd7d9da9563b2ce78fceefc6430e972a420" +"checksum d3d12 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc7ed48e89905e5e146bcc1951cc3facb9e44aea9adf5dc01078cda1bd24b662" "checksum dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "77e51249a9d823a4cb79e3eca6dcd756153e8ed0157b6c04775d04bf1b13b76a" "checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" -"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" -"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" -"checksum gfx-backend-dx11 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" -"checksum gfx-backend-dx12 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" -"checksum gfx-backend-empty 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" -"checksum gfx-backend-gl 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" -"checksum gfx-backend-metal 0.3.2 (git+https://github.com/gfx-rs/gfx)" = "" -"checksum gfx-backend-vulkan 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" -"checksum gfx-hal 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-auxil 0.2.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-backend-dx11 0.4.5 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-backend-dx12 0.4.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-backend-empty 0.4.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-backend-gl 0.4.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-backend-metal 0.4.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-backend-vulkan 0.4.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum gfx-hal 0.4.1 (git+https://github.com/gfx-rs/gfx)" = "" "checksum gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39a23d5e872a275135d66895d954269cf5e8661d234eb1c2480f4ce0d586acbd" "checksum gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ca98bbde17256e02d17336a6bdb5a50f7d0ccacee502e191d3e3d0ec2f96f84a" "checksum gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a795170cbd85b5a7baa58d6d7525cae6a03e486859860c220f7ebbbdd379d0a" "checksum gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "cae10d7c99d0e77b4766e850a60898a17c1abaf01075531f1066f03dc7dc5fc5" -"checksum glow 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e09902fcdbac07f5295e37ae4b50ce9bee94ef8b1e1419394e9e392cdf1d6d4" +"checksum glow 0.3.0-alpha4 (registry+https://github.com/rust-lang/crates.io-index)" = "e1a6a561d672c476b6a6fc49b0b3bc7b061bbfd3a6f103055ae4530abc04a41e" "checksum glutin 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9caee44b73388b2b4452ab783b13a1af80edb363bfc6e5292bdb2dd990a3171" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -"checksum js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)" = "1efc4f2a556c58e79c5500912e221dd826bec64ff4aabd8ce71ccef6da02d7d4" +"checksum js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" "checksum khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "037ab472c33f67b5fbd3e9163a2645319e5356fcd355efa6d4eb7fff4bbcb554" "checksum khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" @@ -1304,68 +1213,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff" "checksum metal 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddf8052f20601c7af6293d3f7bf7b9159aee5974804fe65d871d437f933ec1eb" -"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" "checksum objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "31d20fd2b37e07cf5125be68357b588672e8cefe9a96f8c17a9d46053b3e590d" "checksum objc_exception 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "098cd29a2fa3c230d3463ae069cecccc3fdfd64c0d2496ab5b96f82dab6a00dc" "checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" -"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +"checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" +"checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)" = "" +"checksum raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum renderdoc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3aee9badfb4078c375d2d0479ed29c9c057b51ade78f94792ba2dcb11f343e7e" -"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" -"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" "checksum slotmap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "759fd553261805f128e2900bf69ab3d034260bc338caf7f0ee54dbf035c85acd" -"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4" "checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" -"checksum spirv_cross 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cd72403fee8f7ec2f4f453dfbaf39ccdd4c6d0157d67d6e65513cd26cc49289f" "checksum spirv_cross 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fbbe441b3ac8ec0ae6a4f05234239bd372a241ce15793eef694e8b24afc267bb" "checksum storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0a4829a5c591dc24a944a736d6b1e4053e51339a79fd5d4702c4c999a9c45e" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" -"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum token_store 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a686838375fc11103b9c1529c6508320b7bd5e2401cd62831ca51b3e82e61849" "checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" -"checksum wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "dcddca308b16cd93c2b67b126c688e5467e4ef2e28200dc7dfe4ae284f2faefc" -"checksum wasm-bindgen-backend 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "f805d9328b5fc7e5c6399960fd1889271b9b58ae17bdb2417472156cc9fafdd0" -"checksum wasm-bindgen-macro 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "3ff88201a482abfc63921621f6cb18eb1efd74f136b05e5841e7f8ca434539e9" -"checksum wasm-bindgen-macro-support 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "6a433d89ecdb9f77d46fcf00c8cf9f3467b7de9954d8710c175f61e2e245bb0e" -"checksum wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "d41fc1bc3570cdf8d108c15e014045fd45a95bb5eb36605f96a90461fc34027d" -"checksum wasm-bindgen-webidl 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "be53d289bf2fa7645a089cfd5c7a34bf4fe94221f58cf86ee42a7b4bc854ff14" +"checksum wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" +"checksum wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" +"checksum wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" +"checksum wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" +"checksum wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" +"checksum wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" "checksum wayland-client 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2b90adf943117ee4930d7944fe103dcb6f36ba05421f46521cb5adbf6bf0fbc8" "checksum wayland-kbd 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe0fb1c9917da9529d781659e456d84a693d74fe873d1658109758444616f76" "checksum wayland-protocols 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb5942dd2fc79d934db437c9ea3aabffceb49b546046ea453bcba531005e5537" "checksum wayland-scanner 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dcffa55a621e6f2c3d436de64d840fc325e1d0a467b92ee5e7292e17552e08ad" "checksum wayland-sys 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "377a2f83063c463e801ca10ae8cb9666e6e597eecac0049ac36cc7b9a83b0db3" "checksum wayland-window 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e5bf431e84f0de9cd06a30b2fb9ab9458f449cb6c36277da703e979ad5c141b1" -"checksum web-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)" = "6435c477200ad486089a7a72c2bd6c9bdf9740bd7fff868806076218076d8c51" +"checksum web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" "checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" diff --git a/libportability-gfx/Cargo.toml b/libportability-gfx/Cargo.toml index 1a72a92..3b853fc 100644 --- a/libportability-gfx/Cargo.toml +++ b/libportability-gfx/Cargo.toml @@ -14,13 +14,14 @@ name = "portability_gfx" [features] default = [] dispatch = [] -nightly = [] +nightly = ["gfx-auxil"] metal-capture = ["gfx-backend-metal/auto-capture"] [dependencies] copyless = "0.1.1" lazy_static = "1.0" log = { version = "0.4", features = ["release_max_level_error"] } +smallvec = "1.0" [dependencies.env_logger] version = "0.5" @@ -33,7 +34,6 @@ optional = true [dependencies.gfx-hal] git = "https://github.com/gfx-rs/gfx" #path = "../../gfx/src/hal" -features = ["fxhash"] [dependencies.gfx-backend-empty] git = "https://github.com/gfx-rs/gfx" @@ -64,3 +64,8 @@ optional = true git = "https://github.com/gfx-rs/gfx" #path = "../../gfx/src/backend/gl" optional = true + +[dependencies.gfx-auxil] +git = "https://github.com/gfx-rs/gfx" +# path = "../../gfx/src/auxil/auxil" +optional = true diff --git a/libportability-gfx/src/conv.rs b/libportability-gfx/src/conv.rs index bb252fb..669b517 100644 --- a/libportability-gfx/src/conv.rs +++ b/libportability-gfx/src/conv.rs @@ -1,5 +1,5 @@ use hal::{buffer, command, device, format, image, memory, pass, pso, query, window}; -use hal::{Features, IndexType, Limits, PatchSize, Primitive}; +use hal::{pso::PatchSize, pso::Primitive, Features, IndexType, Limits}; use std::mem; @@ -444,7 +444,7 @@ pub fn map_buffer_access(access: VkAccessFlags) -> buffer::Access { mask |= buffer::Access::VERTEX_BUFFER_READ; } if access & VkAccessFlagBits::VK_ACCESS_UNIFORM_READ_BIT as u32 != 0 { - mask |= buffer::Access::CONSTANT_BUFFER_READ; + mask |= buffer::Access::UNIFORM_READ; } if access & VkAccessFlagBits::VK_ACCESS_INDIRECT_COMMAND_READ_BIT as u32 != 0 { mask |= buffer::Access::INDIRECT_COMMAND_READ; @@ -502,18 +502,53 @@ pub fn memory_properties_from_hal(properties: memory::Properties) -> VkMemoryPro pub fn map_descriptor_type(ty: VkDescriptorType) -> pso::DescriptorType { use super::VkDescriptorType::*; + // TODO(krolli): Determining value of read_only in pso::BufferDescriptorType::Storage. Vulkan storage buffer variants always allow writes. match ty { VK_DESCRIPTOR_TYPE_SAMPLER => pso::DescriptorType::Sampler, - VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE => pso::DescriptorType::SampledImage, - VK_DESCRIPTOR_TYPE_STORAGE_IMAGE => pso::DescriptorType::StorageImage, - VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER => pso::DescriptorType::UniformTexelBuffer, - VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER => pso::DescriptorType::StorageTexelBuffer, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER => pso::DescriptorType::UniformBuffer, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER => pso::DescriptorType::StorageBuffer, + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE => pso::DescriptorType::Image { + ty: pso::ImageDescriptorType::Sampled { + with_sampler: false, + }, + }, + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE => pso::DescriptorType::Image { + ty: pso::ImageDescriptorType::Storage, + }, + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER => pso::DescriptorType::Buffer { + ty: pso::BufferDescriptorType::Uniform, + format: pso::BufferDescriptorFormat::Texel, + }, + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER => pso::DescriptorType::Buffer { + ty: pso::BufferDescriptorType::Storage { read_only: false }, + format: pso::BufferDescriptorFormat::Texel, + }, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER => pso::DescriptorType::Buffer { + ty: pso::BufferDescriptorType::Uniform, + format: pso::BufferDescriptorFormat::Structured { + dynamic_offset: false, + }, + }, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER => pso::DescriptorType::Buffer { + ty: pso::BufferDescriptorType::Storage { read_only: false }, + format: pso::BufferDescriptorFormat::Structured { + dynamic_offset: false, + }, + }, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT => pso::DescriptorType::InputAttachment, - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER => pso::DescriptorType::CombinedImageSampler, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC => pso::DescriptorType::UniformBufferDynamic, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC => pso::DescriptorType::StorageBufferDynamic, + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER => pso::DescriptorType::Image { + ty: pso::ImageDescriptorType::Sampled { with_sampler: true }, + }, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC => pso::DescriptorType::Buffer { + ty: pso::BufferDescriptorType::Uniform, + format: pso::BufferDescriptorFormat::Structured { + dynamic_offset: true, + }, + }, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC => pso::DescriptorType::Buffer { + ty: pso::BufferDescriptorType::Storage { read_only: false }, + format: pso::BufferDescriptorFormat::Structured { + dynamic_offset: true, + }, + }, _ => panic!("Unexpected descriptor type: {:?}", ty), } } @@ -556,6 +591,19 @@ pub fn map_pipeline_stage_flags(stages: VkPipelineStageFlags) -> pso::PipelineSt } } +pub fn map_dependency_flags(dependencies: VkDependencyFlags) -> memory::Dependencies { + let max_flag = VkDependencyFlagBits::VK_DEPENDENCY_BY_REGION_BIT as u32; + + if (dependencies & !((max_flag << 1) - 1)) == 0 { + // HAL flags have the same numeric representation as Vulkan flags + unsafe { mem::transmute(dependencies) } + } else { + // VIEW_LOCAL and DEVICE_GROUP are missing + warn!("Unsupported dependency flags: {:?}", dependencies); + memory::Dependencies::all() + } +} + pub fn map_err_device_creation(err: device::CreationError) -> VkResult { use hal::device::OutOfMemory::{Device, Host}; match err { @@ -627,21 +675,21 @@ pub fn map_front_face(face: VkFrontFace) -> pso::FrontFace { pub fn map_primitive_topology( topology: VkPrimitiveTopology, patch_size: PatchSize, -) -> Option { +) -> Option<(Primitive, bool)> { use super::VkPrimitiveTopology::*; Some(match topology { - VK_PRIMITIVE_TOPOLOGY_POINT_LIST => Primitive::PointList, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST => Primitive::LineList, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP => Primitive::LineStrip, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST => Primitive::TriangleList, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP => Primitive::TriangleStrip, + VK_PRIMITIVE_TOPOLOGY_POINT_LIST => (Primitive::PointList, false), + VK_PRIMITIVE_TOPOLOGY_LINE_LIST => (Primitive::LineList, false), + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP => (Primitive::LineStrip, false), + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST => (Primitive::TriangleList, false), + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP => (Primitive::TriangleStrip, false), VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN => return None, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY => Primitive::LineListAdjacency, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY => Primitive::LineStripAdjacency, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY => Primitive::TriangleListAdjacency, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY => Primitive::TriangleStripAdjacency, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST => Primitive::PatchList(patch_size), + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY => (Primitive::LineList, true), + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY => (Primitive::LineStrip, true), + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY => (Primitive::TriangleList, true), + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY => (Primitive::TriangleStrip, true), + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST => (Primitive::PatchList(patch_size), false), _ => return None, }) } @@ -652,31 +700,27 @@ pub fn map_present_mode(present_mode: VkPresentModeKHR) -> window::PresentMode { unsafe { mem::transmute(present_mode) } } -pub fn map_composite_alpha(composite_alpha: VkCompositeAlphaFlagBitsKHR) -> window::CompositeAlpha { +pub fn map_composite_alpha( + composite_alpha: VkCompositeAlphaFlagBitsKHR, +) -> window::CompositeAlphaMode { if composite_alpha == VkCompositeAlphaFlagBitsKHR::VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR { - window::CompositeAlpha::OPAQUE + window::CompositeAlphaMode::OPAQUE } else if composite_alpha == VkCompositeAlphaFlagBitsKHR::VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR { - window::CompositeAlpha::PREMULTIPLIED + window::CompositeAlphaMode::PREMULTIPLIED } else if composite_alpha == VkCompositeAlphaFlagBitsKHR::VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR { - window::CompositeAlpha::POSTMULTIPLIED + window::CompositeAlphaMode::POSTMULTIPLIED } else if composite_alpha == VkCompositeAlphaFlagBitsKHR::VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR { - window::CompositeAlpha::INHERIT + window::CompositeAlphaMode::INHERIT } else { error!("Unrecognized composite alpha: {:?}", composite_alpha); - window::CompositeAlpha::OPAQUE + window::CompositeAlphaMode::OPAQUE } } -#[inline] -pub fn map_present_mode_from_hal(present_mode: window::PresentMode) -> VkPresentModeKHR { - // Vulkan and HAL values are equal - unsafe { mem::transmute(present_mode) } -} - #[inline] pub fn map_compare_op(op: VkCompareOp) -> pso::Comparison { // Vulkan and HAL values are equal diff --git a/libportability-gfx/src/handle.rs b/libportability-gfx/src/handle.rs index 2cc7d47..419faa9 100644 --- a/libportability-gfx/src/handle.rs +++ b/libportability-gfx/src/handle.rs @@ -4,7 +4,7 @@ use std::{borrow, cmp, fmt, ops}; use VK_NULL_HANDLE; #[cfg(feature = "nightly")] -use hal::backend::FastHashMap; +use gfx_auxil::FastHashMap; use copyless::{BoxAllocation, BoxHelper}; diff --git a/libportability-gfx/src/impls.rs b/libportability-gfx/src/impls.rs index 7fba056..591298a 100644 --- a/libportability-gfx/src/impls.rs +++ b/libportability-gfx/src/impls.rs @@ -5,7 +5,7 @@ use hal::device::{Device, WaitFor}; use hal::pool::CommandPool as _; use hal::pso::DescriptorPool; use hal::queue::{CommandQueue, QueueFamily}; -use hal::window::{Surface, Swapchain as _}; +use hal::window::{PresentMode, Surface, Swapchain as _}; use hal::{command as com, memory, pass, pso, queue}; use hal::{Features, Instance}; @@ -2197,25 +2197,26 @@ pub extern "C" fn gfxCreateGraphicsPipelines( warn!("Primitive restart may not work as expected!"); } - let primitive = match conv::map_primitive_topology( + let (primitive, with_adjacency) = match conv::map_primitive_topology( input_state.topology, tessellation_state .map(|state| state.patchControlPoints as _) .unwrap_or(0), ) { - Some(primitive) => primitive, + Some(mapped) => mapped, None => { error!( "Primitive topology {:?} is not supported", input_state.topology ); - hal::Primitive::PointList + (hal::pso::Primitive::PointList, false) } }; pso::InputAssemblerDesc { primitive, - primitive_restart: pso::PrimitiveRestart::Disabled, // TODO + with_adjacency, + restart_index: None, // TODO } }; @@ -2686,7 +2687,7 @@ pub extern "C" fn gfxCreateSampler( pSampler: *mut VkSampler, ) -> VkResult { let info = unsafe { &*pCreateInfo }; - let gfx_info = hal::image::SamplerInfo { + let gfx_info = hal::image::SamplerDesc { min_filter: conv::map_filter(info.minFilter), mag_filter: conv::map_filter(info.magFilter), mip_filter: conv::map_mipmap_filter(info.mipmapMode), @@ -2695,8 +2696,8 @@ pub extern "C" fn gfxCreateSampler( conv::map_wrap_mode(info.addressModeV), conv::map_wrap_mode(info.addressModeW), ), - lod_bias: info.mipLodBias.into(), - lod_range: info.minLod.into()..info.maxLod.into(), + lod_bias: hal::image::Lod(info.mipLodBias), + lod_range: hal::image::Lod(info.minLod)..hal::image::Lod(info.maxLod), comparison: if info.compareEnable == VK_TRUE { Some(conv::map_compare_op(info.compareOp)) } else { @@ -2710,7 +2711,7 @@ pub extern "C" fn gfxCreateSampler( hal::image::Anisotropic::Off }, }; - let sampler = match unsafe { gpu.device.create_sampler(gfx_info) } { + let sampler = match unsafe { gpu.device.create_sampler(&gfx_info) } { Ok(s) => s, Err(alloc) => return map_alloc_error(alloc), }; @@ -2815,7 +2816,7 @@ pub extern "C" fn gfxCreateDescriptorPool( Ok(pool) => pool, Err(oom) => return map_oom(oom), }, - temp_sets: Vec::with_capacity(max_sets), + temp_sets: SmallVec::with_capacity(max_sets), set_handles: if info.flags & VkDescriptorPoolCreateFlagBits::VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT as u32 @@ -2945,43 +2946,54 @@ impl<'a> Iterator for DescriptorIter<'a> { .image_infos .next() .map(|image| pso::Descriptor::Sampler(&*image.sampler)), - pso::DescriptorType::InputAttachment - | pso::DescriptorType::SampledImage - | pso::DescriptorType::StorageImage => self.image_infos.next().map(|image| { - pso::Descriptor::Image(&*image.imageView, conv::map_image_layout(image.imageLayout)) - }), - pso::DescriptorType::UniformTexelBuffer => self - .texel_buffer_views - .next() - .map(|view| pso::Descriptor::UniformTexelBuffer(&**view)), - pso::DescriptorType::StorageTexelBuffer => self - .texel_buffer_views - .next() - .map(|view| pso::Descriptor::StorageTexelBuffer(&**view)), - pso::DescriptorType::UniformBuffer - | pso::DescriptorType::StorageBuffer - | pso::DescriptorType::UniformBufferDynamic - | pso::DescriptorType::StorageBufferDynamic => { - self.buffer_infos.next().map(|buffer| { - let end = if buffer.range as i32 == VK_WHOLE_SIZE { - None - } else { - Some(buffer.offset + buffer.range) - }; - pso::Descriptor::Buffer( - // Non-sparse buffer need to be bound to device memory. - &*buffer.buffer, - Some(buffer.offset)..end, - ) - }) - } - pso::DescriptorType::CombinedImageSampler => self.image_infos.next().map(|image| { + + pso::DescriptorType::Image { + ty: pso::ImageDescriptorType::Sampled { with_sampler: true }, + } => self.image_infos.next().map(|image| { pso::Descriptor::CombinedImageSampler( &*image.imageView, conv::map_image_layout(image.imageLayout), &*image.sampler, ) }), + + pso::DescriptorType::InputAttachment | pso::DescriptorType::Image { .. } => { + self.image_infos.next().map(|image| { + pso::Descriptor::Image( + &*image.imageView, + conv::map_image_layout(image.imageLayout), + ) + }) + } + + pso::DescriptorType::Buffer { ty, format } => { + match format { + pso::BufferDescriptorFormat::Texel => match ty { + pso::BufferDescriptorType::Storage { .. } => self + .texel_buffer_views + .next() + .map(|view| pso::Descriptor::StorageTexelBuffer(&**view)), + pso::BufferDescriptorType::Uniform => self + .texel_buffer_views + .next() + .map(|view| pso::Descriptor::UniformTexelBuffer(&**view)), + }, + pso::BufferDescriptorFormat::Structured { .. } => { + self.buffer_infos.next().map(|buffer| { + let end = if buffer.range as i32 == VK_WHOLE_SIZE { + None + } else { + Some(buffer.offset + buffer.range) + }; + pso::Descriptor::Buffer( + // Non-sparse buffer need to be bound to device memory. + &*buffer.buffer, + Some(buffer.offset)..end, + ) + }) + } + } + } } } } @@ -3226,6 +3238,7 @@ pub extern "C" fn gfxCreateRenderPass( passes: src_pass..dst_pass, stages: src_stage..dst_stage, accesses: src_access..dst_access, + flags: conv::map_dependency_flags(dependency.dependencyFlags), } }); @@ -3349,7 +3362,7 @@ pub extern "C" fn gfxAllocateCommandBuffers( let output = unsafe { slice::from_raw_parts_mut(pCommandBuffers, info.commandBufferCount as usize) }; for out in output.iter_mut() { - let cmd_buf = info.commandPool.pool.allocate_one(level); + let cmd_buf = unsafe { info.commandPool.pool.allocate_one(level) }; *out = DispatchHandle::new(cmd_buf); } info.commandPool.buffers.extend_from_slice(output); @@ -4302,7 +4315,7 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfaceCapabilitiesKHR( surface: VkSurfaceKHR, pSurfaceCapabilities: *mut VkSurfaceCapabilitiesKHR, ) -> VkResult { - let (caps, _, _supported_transforms) = surface.compatibility(&adapter.physical_device); + let caps = surface.capabilities(&adapter.physical_device); let output = VkSurfaceCapabilitiesKHR { minImageCount: *caps.image_count.start(), @@ -4320,7 +4333,7 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfaceCapabilitiesKHR( supportedTransforms: VkSurfaceTransformFlagBitsKHR::VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR as _, currentTransform: VkSurfaceTransformFlagBitsKHR::VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, - supportedCompositeAlpha: caps.composite_alpha.bits(), + supportedCompositeAlpha: caps.composite_alpha_modes.bits(), supportedUsageFlags: conv::map_image_usage_from_hal(caps.usage), }; @@ -4336,8 +4349,7 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfaceFormatsKHR( pSurfaceFormats: *mut VkSurfaceFormatKHR, ) -> VkResult { let formats = surface - .compatibility(&adapter.physical_device) - .1 + .supported_formats(&adapter.physical_device) .map(|formats| formats.into_iter().map(conv::format_from_hal).collect()) .unwrap_or(vec![VkFormat::VK_FORMAT_UNDEFINED]); @@ -4368,29 +4380,34 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfacePresentModesKHR( pPresentModeCount: *mut u32, pPresentModes: *mut VkPresentModeKHR, ) -> VkResult { - let (_, _, present_modes) = surface.compatibility(&adapter.physical_device); + let present_modes = surface.capabilities(&adapter.physical_device).present_modes; - let num_present_modes = present_modes.len(); + let num_present_modes = present_modes.bits().count_ones(); // If NULL, number of present modes is returned. if pPresentModes.is_null() { - unsafe { *pPresentModeCount = num_present_modes as _ }; + unsafe { *pPresentModeCount = num_present_modes }; return VkResult::VK_SUCCESS; } - let output = unsafe { slice::from_raw_parts_mut(pPresentModes, *pPresentModeCount as _) }; - let num_output = output.len(); + let num_output = unsafe { *pPresentModeCount }; + let output = unsafe { slice::from_raw_parts_mut(pPresentModes, num_output as _) }; let (code, count) = if num_output < num_present_modes { (VkResult::VK_INCOMPLETE, num_output) } else { (VkResult::VK_SUCCESS, num_present_modes) }; - for (out, present_mode) in output.iter_mut().zip(present_modes) { - *out = conv::map_present_mode_from_hal(present_mode); + let mut out_idx = 0; + for i in 0..PresentMode::all().bits().count_ones() { + let present_mode = PresentMode::from_bits_truncate(1 << i); + if present_modes.contains(present_mode) { + output[out_idx] = unsafe { mem::transmute(i) }; + out_idx += 1; + } } - unsafe { *pPresentModeCount = count as _ }; + unsafe { *pPresentModeCount = count }; code } @@ -4419,7 +4436,7 @@ pub extern "C" fn gfxCreateSwapchainKHR( let config = hal::window::SwapchainConfig { present_mode: conv::map_present_mode(info.presentMode), - composite_alpha: conv::map_composite_alpha(info.compositeAlpha), + composite_alpha_mode: conv::map_composite_alpha(info.compositeAlpha), format: conv::map_format(info.imageFormat).unwrap(), extent: conv::map_extent2d(info.imageExtent), image_count: info.minImageCount, diff --git a/libportability-gfx/src/lib.rs b/libportability-gfx/src/lib.rs index 044cba2..8e3d2f3 100644 --- a/libportability-gfx/src/lib.rs +++ b/libportability-gfx/src/lib.rs @@ -23,6 +23,7 @@ extern crate gfx_backend_metal as back; #[cfg(feature = "gfx-backend-vulkan")] extern crate gfx_backend_vulkan as back; extern crate gfx_hal as hal; +extern crate smallvec; extern crate copyless; #[macro_use] @@ -31,6 +32,8 @@ extern crate lazy_static; extern crate log; #[cfg(feature = "env_logger")] extern crate env_logger; +#[cfg(feature = "nightly")] +extern crate gfx_auxil; #[cfg(feature = "renderdoc")] extern crate renderdoc; @@ -38,6 +41,8 @@ mod conv; mod handle; mod impls; +use smallvec::SmallVec; + use back::Backend as B; use handle::{DispatchHandle, Handle}; @@ -93,7 +98,7 @@ pub struct Gpu { pub struct DescriptorPool { raw: B::DescriptorPool, - temp_sets: Vec, + temp_sets: SmallVec<[B::DescriptorSet; 1]>, set_handles: Option>, }