wluma icon indicating copy to clipboard operation
wluma copied to clipboard

chore: update libs

Open cyrinux opened this issue 2 years ago • 2 comments

inotify watches had to be update

cyrinux avatar Jul 30 '23 15:07 cyrinux

Is there still incentive to work on this? I've made a few commits on top of this PR, and am now stuck at getting vulkan to work properly.

The error I'm getting is

thread 'main' panicked at src/frame/capturer/wlroots.rs:42:35:
Unable to initialize Vulkan: ERROR_EXTENSION_NOT_PRESENT
Here's what I've done so far, as a big patch
diff --git a/Cargo.lock b/Cargo.lock
index c02c1eb..e6fda9a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -98,9 +98,9 @@ checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
 
 [[package]]
 name = "ash"
-version = "0.37.3+1.3.251"
+version = "0.38.0+1.3.281"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a"
+checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f"
 
 [[package]]
 name = "autocfg"
@@ -164,6 +164,26 @@ version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
+[[package]]
+name = "bytemuck"
+version = "1.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
 [[package]]
 name = "byteorder"
 version = "1.5.0"
@@ -172,16 +192,28 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "calloop"
-version = "0.10.6"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8"
+checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
  "log",
- "nix 0.25.1",
- "slotmap",
+ "polling",
+ "rustix",
+ "slab",
  "thiserror",
- "vec_map",
+]
+
+[[package]]
+name = "calloop-wayland-source"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20"
+dependencies = [
+ "calloop",
+ "rustix",
+ "wayland-backend",
+ "wayland-client",
 ]
 
 [[package]]
@@ -219,7 +251,7 @@ dependencies = [
  "js-sys",
  "num-traits",
  "wasm-bindgen",
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -239,6 +271,15 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
 
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
 [[package]]
 name = "core-foundation"
 version = "0.9.4"
@@ -279,6 +320,18 @@ dependencies = [
  "libc",
 ]
 
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "cursor-icon"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
+
 [[package]]
 name = "dbus"
 version = "0.9.7"
@@ -500,6 +553,12 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
 [[package]]
 name = "home"
 version = "0.5.9"
@@ -583,11 +642,11 @@ dependencies = [
 
 [[package]]
 name = "inotify"
-version = "0.10.2"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc"
+checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
  "futures-core",
  "inotify-sys",
  "libc",
@@ -613,17 +672,6 @@ dependencies = [
  "mach2",
 ]
 
-[[package]]
-name = "io-lifetimes"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi",
- "libc",
- "windows-sys 0.48.0",
-]
-
 [[package]]
 name = "is_terminal_polyfill"
 version = "1.70.1"
@@ -656,9 +704,9 @@ dependencies = [
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "lazycell"
@@ -688,7 +736,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
 dependencies = [
  "cfg-if",
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -786,40 +834,22 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memmap2"
-version = "0.5.10"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327"
+checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "memmap2"
-version = "0.7.1"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
 dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "memoffset"
-version = "0.6.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "memoffset"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
-dependencies = [
- "autocfg",
-]
-
 [[package]]
 name = "minimal-lexical"
 version = "0.2.1"
@@ -841,7 +871,7 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
  "libc",
  "wasi",
  "windows-sys 0.52.0",
@@ -849,14 +879,13 @@ dependencies = [
 
 [[package]]
 name = "mockall"
-version = "0.12.1"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48"
+checksum = "d4c28b3fb6d753d28c20e826cd46ee611fda1cf3cde03a443a974043247c065a"
 dependencies = [
  "cfg-if",
  "downcast",
  "fragile",
- "lazy_static",
  "mockall_derive",
  "predicates",
  "predicates-tree",
@@ -864,9 +893,9 @@ dependencies = [
 
 [[package]]
 name = "mockall_derive"
-version = "0.12.1"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2"
+checksum = "341014e7f530314e9a1fdbc7400b244efea7122662c96bfa248c31da5bfb2020"
 dependencies = [
  "cfg-if",
  "proc-macro2",
@@ -874,31 +903,6 @@ dependencies = [
  "syn",
 ]
 
-[[package]]
-name = "nix"
-version = "0.25.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
-dependencies = [
- "autocfg",
- "bitflags 1.3.2",
- "cfg-if",
- "libc",
- "memoffset 0.6.5",
-]
-
-[[package]]
-name = "nix"
-version = "0.26.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
-dependencies = [
- "bitflags 1.3.2",
- "cfg-if",
- "libc",
- "memoffset 0.7.1",
-]
-
 [[package]]
 name = "nom"
 version = "3.2.1"
@@ -982,6 +986,21 @@ version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
+[[package]]
+name = "polling"
+version = "3.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi 0.4.0",
+ "pin-project-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
 [[package]]
 name = "predicates"
 version = "3.1.2"
@@ -1027,15 +1046,6 @@ dependencies = [
  "unicode-ident",
 ]
 
-[[package]]
-name = "quick-xml"
-version = "0.28.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1"
-dependencies = [
- "memchr 2.7.4",
-]
-
 [[package]]
 name = "quick-xml"
 version = "0.34.0"
@@ -1190,12 +1200,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
 [[package]]
-name = "slotmap"
-version = "1.0.7"
+name = "slab"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
 dependencies = [
- "version_check",
+ "autocfg",
 ]
 
 [[package]]
@@ -1206,26 +1216,30 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "smithay-client-toolkit"
-version = "0.17.0"
+version = "0.19.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1476c3d89bb67079264b88aaf4f14358353318397e083b7c4e8c14517f55de7"
+checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
+ "bytemuck",
  "calloop",
- "dlib",
- "lazy_static",
+ "calloop-wayland-source",
+ "cursor-icon",
+ "libc",
  "log",
- "memmap2 0.5.10",
- "nix 0.26.4",
+ "memmap2 0.9.4",
  "pkg-config",
+ "rustix",
  "thiserror",
- "wayland-backend 0.1.2",
- "wayland-client 0.30.2",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-csd-frame",
  "wayland-cursor",
- "wayland-protocols 0.30.1",
- "wayland-protocols-wlr 0.1.0",
- "wayland-scanner 0.30.1",
+ "wayland-protocols",
+ "wayland-protocols-wlr",
+ "wayland-scanner",
  "xkbcommon",
+ "xkeysym",
 ]
 
 [[package]]
@@ -1323,6 +1337,22 @@ dependencies = [
  "winnow",
 ]
 
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+
 [[package]]
 name = "udev"
 version = "0.2.0"
@@ -1377,18 +1407,6 @@ dependencies = [
  "bindgen",
 ]
 
-[[package]]
-name = "vec_map"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
-
-[[package]]
-name = "version_check"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-
 [[package]]
 name = "void"
 version = "1.0.2"
@@ -1456,21 +1474,6 @@ version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
 
-[[package]]
-name = "wayland-backend"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41b48e27457e8da3b2260ac60d0a94512f5cba36448679f3747c0865b7893ed8"
-dependencies = [
- "cc",
- "downcast-rs",
- "io-lifetimes",
- "nix 0.26.4",
- "scoped-tls",
- "smallvec",
- "wayland-sys 0.30.1",
-]
-
 [[package]]
 name = "wayland-backend"
 version = "0.3.6"
@@ -1482,20 +1485,7 @@ dependencies = [
  "rustix",
  "scoped-tls",
  "smallvec",
- "wayland-sys 0.31.4",
-]
-
-[[package]]
-name = "wayland-client"
-version = "0.30.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8"
-dependencies = [
- "bitflags 1.3.2",
- "calloop",
- "nix 0.26.4",
- "wayland-backend 0.1.2",
- "wayland-scanner 0.30.1",
+ "wayland-sys",
 ]
 
 [[package]]
@@ -1506,31 +1496,30 @@ checksum = "7e321577a0a165911bdcfb39cf029302479d7527b517ee58ab0f6ad09edf0943"
 dependencies = [
  "bitflags 2.6.0",
  "rustix",
- "wayland-backend 0.3.6",
- "wayland-scanner 0.31.4",
+ "wayland-backend",
+ "wayland-scanner",
 ]
 
 [[package]]
-name = "wayland-cursor"
-version = "0.30.0"
+name = "wayland-csd-frame"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d0c3a0d5b4b688b07b0442362d3ed6bf04724fcc16cd69ab6285b90dbc487aa"
+checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
 dependencies = [
- "nix 0.26.4",
- "wayland-client 0.30.2",
- "xcursor",
+ "bitflags 2.6.0",
+ "cursor-icon",
+ "wayland-backend",
 ]
 
 [[package]]
-name = "wayland-protocols"
-version = "0.30.1"
+name = "wayland-cursor"
+version = "0.31.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b28101e5ca94f70461a6c2d610f76d85ad223d042dd76585ab23d3422dd9b4d"
+checksum = "6ef9489a8df197ebf3a8ce8a7a7f0a2320035c3743f3c1bd0bdbccf07ce64f95"
 dependencies = [
- "bitflags 1.3.2",
- "wayland-backend 0.1.2",
- "wayland-client 0.30.2",
- "wayland-scanner 0.30.1",
+ "rustix",
+ "wayland-client",
+ "xcursor",
 ]
 
 [[package]]
@@ -1540,22 +1529,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "62989625a776e827cc0f15d41444a3cea5205b963c3a25be48ae1b52d6b4daaa"
 dependencies = [
  "bitflags 2.6.0",
- "wayland-backend 0.3.6",
- "wayland-client 0.31.5",
- "wayland-scanner 0.31.4",
-]
-
-[[package]]
-name = "wayland-protocols-wlr"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fce991093320e4a6a525876e6b629ab24da25f9baef0c2e0080ad173ec89588a"
-dependencies = [
- "bitflags 1.3.2",
- "wayland-backend 0.1.2",
- "wayland-client 0.30.2",
- "wayland-protocols 0.30.1",
- "wayland-scanner 0.30.1",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
 ]
 
 [[package]]
@@ -1565,21 +1541,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fd993de54a40a40fbe5601d9f1fbcaef0aebcc5fda447d7dc8f6dcbaae4f8953"
 dependencies = [
  "bitflags 2.6.0",
- "wayland-backend 0.3.6",
- "wayland-client 0.31.5",
- "wayland-protocols 0.32.3",
- "wayland-scanner 0.31.4",
-]
-
-[[package]]
-name = "wayland-scanner"
-version = "0.30.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e"
-dependencies = [
- "proc-macro2",
- "quick-xml 0.28.2",
- "quote",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-scanner",
 ]
 
 [[package]]
@@ -1589,21 +1554,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d7b56f89937f1cf2ee1f1259cf2936a17a1f45d8f0aa1019fae6d470d304cfa6"
 dependencies = [
  "proc-macro2",
- "quick-xml 0.34.0",
+ "quick-xml",
  "quote",
 ]
 
-[[package]]
-name = "wayland-sys"
-version = "0.30.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06"
-dependencies = [
- "dlib",
- "log",
- "pkg-config",
-]
-
 [[package]]
 name = "wayland-sys"
 version = "0.31.4"
@@ -1662,16 +1616,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
+ "windows-targets",
 ]
 
 [[package]]
@@ -1680,22 +1625,16 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
-name = "windows-targets"
-version = "0.48.5"
+name = "windows-sys"
+version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
+ "windows-targets",
 ]
 
 [[package]]
@@ -1704,46 +1643,28 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.6",
- "windows_aarch64_msvc 0.52.6",
- "windows_i686_gnu 0.52.6",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
  "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.6",
- "windows_x86_64_gnu 0.52.6",
- "windows_x86_64_gnullvm 0.52.6",
- "windows_x86_64_msvc 0.52.6",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
 ]
 
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
 [[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
 [[package]]
 name = "windows_aarch64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
 [[package]]
 name = "windows_i686_gnu"
 version = "0.52.6"
@@ -1756,48 +1677,24 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
 [[package]]
 name = "windows_i686_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
 [[package]]
 name = "windows_x86_64_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
 [[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
 [[package]]
 name = "windows_x86_64_msvc"
 version = "0.52.6"
@@ -1832,10 +1729,10 @@ dependencies = [
  "smithay-client-toolkit",
  "toml",
  "v4l",
- "wayland-backend 0.3.6",
- "wayland-client 0.31.5",
- "wayland-protocols 0.32.3",
- "wayland-protocols-wlr 0.3.3",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-protocols-wlr",
  "xdg",
 ]
 
@@ -1853,12 +1750,22 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546"
 
 [[package]]
 name = "xkbcommon"
-version = "0.5.1"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52db25b599e92bf6e3904134618728eeb7b49a5a4f38f107f92399bb9c496b88"
+checksum = "13867d259930edc7091a6c41b4ce6eee464328c6ff9659b7e4c668ca20d4c91e"
 dependencies = [
  "libc",
- "memmap2 0.7.1",
+ "memmap2 0.8.0",
+ "xkeysym",
+]
+
+[[package]]
+name = "xkeysym"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"
+dependencies = [
+ "bytemuck",
 ]
 
 [[package]]
diff --git a/Cargo.toml b/Cargo.toml
index bd18e17..7403588 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,21 +9,21 @@ wayland-client = { version = "~0.31" }
 wayland-backend = { version = "~0.3", features = ["dlopen"] }
 wayland-protocols = { version = "~0.32", features = ["client"] }
 wayland-protocols-wlr = { version = "~0.3", features = ["client"] }
-smithay-client-toolkit = "~0.17"
+smithay-client-toolkit = "~0.19"
 serde = { version = "~1.0", features = ["derive"] }
 serde_yaml = "~0.9"
 toml = "~0.8"
 chrono = "~0.4"
-ash = { version = "~0.37", features = ["linked"], default-features = false }
+ash = { version = "~0.38", features = ["linked"], default-features = false }
 itertools = "~0.13"
 v4l = { version = "~0.14", features = ["libv4l"], default-features = false }
 ddc-hi = "~0.4"
 log = "~0.4"
 env_logger = "~0.11"
-inotify = "~0.10"
-lazy_static = "~1.4"
+inotify = "~0.11"
+lazy_static = "~1.5"
 xdg = "~2.5"
 dbus = "~0.9"
 
 [dev-dependencies]
-mockall = "0.12"
+mockall = "0.13"
diff --git a/flake.lock b/flake.lock
index 2d9e81a..5fcbf0e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,23 +1,5 @@
 {
   "nodes": {
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
     "naersk": {
       "inputs": {
         "nixpkgs": "nixpkgs"
@@ -67,23 +49,23 @@
     },
     "root": {
       "inputs": {
-        "flake-utils": "flake-utils",
         "naersk": "naersk",
-        "nixpkgs": "nixpkgs_2"
+        "nixpkgs": "nixpkgs_2",
+        "systems": "systems"
       }
     },
     "systems": {
       "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "lastModified": 1689347949,
+        "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
         "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "repo": "default-linux",
+        "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
         "type": "github"
       },
       "original": {
         "owner": "nix-systems",
-        "repo": "default",
+        "repo": "default-linux",
         "type": "github"
       }
     }
diff --git a/flake.nix b/flake.nix
index ff31dd3..96be764 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,45 +2,60 @@
   inputs = {
     naersk.url = "github:nix-community/naersk/master";
     nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
-    flake-utils.url = "github:numtide/flake-utils";
+    systems.url = "github:nix-systems/default-linux";
   };
 
-  outputs = { self, nixpkgs, flake-utils, naersk }:
-    let systems = [ "x86_64-linux" "aarch64-linux" ];
-    in flake-utils.lib.eachSystem systems (system:
-      let
-        pkgs = import nixpkgs { inherit system; };
-        naersk-lib = pkgs.callPackage naersk { };
-        libs = with pkgs; [
+  outputs = {
+    self,
+    nixpkgs,
+    naersk,
+    systems,
+  }: let
+    inherit (nixpkgs) lib;
+    eachSystem = lib.genAttrs (import systems);
+    pkgsFor = nixpkgs.legacyPackages;
+    naersk-lib = eachSystem (system: pkgsFor.${system}.callPackage naersk {});
+  in {
+    packages = eachSystem (system: {
+      default = naersk-lib.${system}.buildPackage {
+        pname = "wluma";
+        version = "4.4.0";
+
+        src = ./.;
+
+        nativeBuildInputs = with pkgsFor.${system}; [
+          makeWrapper
+          pkg-config
+          rustPlatform.bindgenHook
+          marked-man
+          libxkbcommon
+        ];
+
+        buildInputs = with pkgsFor.${system}; [
           udev
           v4l-utils
           vulkan-loader
           dbus
         ];
-      in
-      {
-        defaultPackage = naersk-lib.buildPackage {
-          src = ./.;
-          meta.mainProgram = "wluma";
-          nativeBuildInputs = with pkgs; [
-            makeWrapper
-            pkg-config
-            rustPlatform.bindgenHook
-            marked-man
+
+        meta.mainProgram = "wluma";
+      };
+    });
+
+    devShells = eachSystem (system: {
+      default = with pkgsFor.${system};
+        mkShell {
+          inputsFrom = [self.packages.${system}.default];
+          packages = [
+            cargo
+            pre-commit
+            rustc
+            rustfmt
+            rustPackages.clippy
           ];
-          buildInputs = libs;
-        };
-        devShell = with pkgs; mkShell {
-          buildInputs = [ cargo rustc rustfmt pre-commit rustPackages.clippy pkg-config ] ++ libs;
+
           RUST_SRC_PATH = rustPlatform.rustLibSrc;
-          LIBCLANG_PATH = "${llvmPackages_12.libclang.lib}/lib";
-          BINDGEN_EXTRA_CLANG_ARGS = [
-            ''-I"${llvmPackages_12.libclang.lib}/lib/clang/${llvmPackages_12.libclang.version}/include"''
-          ] ++ (builtins.map (a: ''-I"${a}/include"'') [
-            glibc.dev
-            libv4l.dev
-          ]);
         };
-      }
-    );
+    });
+  };
 }
diff --git a/src/frame/capturer/wlroots.rs b/src/frame/capturer/wlroots.rs
index 796c8f7..3b1a92f 100644
--- a/src/frame/capturer/wlroots.rs
+++ b/src/frame/capturer/wlroots.rs
@@ -168,9 +168,7 @@ impl Dispatch<zwlr_export_dmabuf_frame_v1::ZwlrExportDmabufFrameV1, ()> for Capt
                 frame.destroy();
 
                 match reason {
-                    WEnum::Value(reason)
-                        if reason == zwlr_export_dmabuf_frame_v1::CancelReason::Permanent =>
-                    {
+                    WEnum::Value(zwlr_export_dmabuf_frame_v1::CancelReason::Permanent) => {
                         panic!("Frame was cancelled due to a permanent error. If you just disconnected screen, this is not implemented yet.");
                     }
                     _ => {
diff --git a/src/frame/object.rs b/src/frame/object.rs
index 4c54a7d..a7b51a3 100644
--- a/src/frame/object.rs
+++ b/src/frame/object.rs
@@ -1,5 +1,5 @@
-use std::collections::HashMap;
-use wayland_backend::io_lifetimes::OwnedFd;
+use std::{collections::HashMap, os::fd::OwnedFd};
+// use wayland_backend::io_lifetimes::OwnedFd;
 
 #[derive(Default)]
 pub struct Object {
diff --git a/src/frame/vulkan.rs b/src/frame/vulkan.rs
index 2240187..0bc4c40 100644
--- a/src/frame/vulkan.rs
+++ b/src/frame/vulkan.rs
@@ -1,5 +1,6 @@
 use crate::frame::compute_perceived_lightness_percent;
 use crate::frame::object::Object;
+use ash::prelude::VkResult;
 use ash::{vk, Device, Entry, Instance};
 use std::cell::RefCell;
 use std::default::Default;
@@ -31,9 +32,10 @@ pub struct Vulkan {
 }
 
 impl Vulkan {
-    pub fn new() -> Result<Self, Box<dyn Error>> {
-        let app_name = CString::new("wluma")?;
-        let app_info = vk::ApplicationInfo::builder()
+    // pub fn new() -> Result<Self, Box<dyn Error>> {
+    pub fn new() -> VkResult<Self> {
+        let app_name = CString::new("wluma").expect("Could not create string 'wluma'");
+        let app_info = vk::ApplicationInfo::default()
             .application_name(&app_name)
             .application_version(WLUMA_VERSION)
             .engine_name(&app_name)
@@ -41,13 +43,13 @@ impl Vulkan {
             .api_version(VULKAN_VERSION);
 
         let instance_extensions = &[
-            vk::KhrExternalMemoryCapabilitiesFn::name().as_ptr(),
-            vk::KhrGetPhysicalDeviceProperties2Fn::name().as_ptr(),
+            vk::KHR_EXTERNAL_MEMORY_CAPABILITIES_NAME.as_ptr(),
+            vk::KHR_GET_PHYSICAL_DEVICE_PROPERTIES2_NAME.as_ptr(),
         ];
 
         let entry = Entry::linked();
 
-        let create_info = vk::InstanceCreateInfo::builder()
+        let create_info = vk::InstanceCreateInfo::default()
             .application_info(&app_info)
             .enabled_extension_names(instance_extensions);
 
@@ -56,22 +58,21 @@ impl Vulkan {
         let physical_devices = unsafe { instance.enumerate_physical_devices()? };
         let physical_device = *physical_devices
             .first()
-            .ok_or("Unable to find a physical device")?;
+            .expect("Unable to find a physical device");
 
         let queue_family_index = 0;
-        let queue_info = &[vk::DeviceQueueCreateInfo::builder()
+        let queue_info = &[vk::DeviceQueueCreateInfo::default()
             .queue_family_index(queue_family_index)
-            .queue_priorities(&[1.0])
-            .build()];
+            .queue_priorities(&[1.0])];
 
         let device_extensions = &[
-            vk::KhrExternalMemoryFn::name().as_ptr(),
-            vk::KhrExternalMemoryFdFn::name().as_ptr(),
-            vk::ExtExternalMemoryDmaBufFn::name().as_ptr(),
+            vk::KHR_EXTERNAL_MEMORY_CAPABILITIES_NAME.as_ptr(),
+            vk::KHR_EXTERNAL_MEMORY_FD_NAME.as_ptr(),
+            vk::EXT_EXTERNAL_MEMORY_DMA_BUF_NAME.as_ptr(),
         ];
-        let features = vk::PhysicalDeviceFeatures::builder();
+        let features = vk::PhysicalDeviceFeatures::default();
 
-        let device_create_info = vk::DeviceCreateInfo::builder()
+        let device_create_info = vk::DeviceCreateInfo::default()
             .queue_create_infos(queue_info)
             .enabled_extension_names(device_extensions)
             .enabled_features(&features);
@@ -80,20 +81,20 @@ impl Vulkan {
 
         let queue = unsafe { device.get_device_queue(queue_family_index, 0) };
 
-        let pool_create_info = vk::CommandPoolCreateInfo::builder()
+        let pool_create_info = vk::CommandPoolCreateInfo::default()
             .flags(vk::CommandPoolCreateFlags::RESET_COMMAND_BUFFER)
             .queue_family_index(queue_family_index);
 
         let command_pool = unsafe { device.create_command_pool(&pool_create_info, None)? };
 
-        let command_buffer_allocate_info = vk::CommandBufferAllocateInfo::builder()
+        let command_buffer_allocate_info = vk::CommandBufferAllocateInfo::default()
             .command_buffer_count(1)
             .command_pool(command_pool)
             .level(vk::CommandBufferLevel::PRIMARY);
         let command_buffers =
             unsafe { device.allocate_command_buffers(&command_buffer_allocate_info)? };
 
-        let buffer_info = vk::BufferCreateInfo::builder()
+        let buffer_info = vk::BufferCreateInfo::default()
             .size(BUFFER_PIXELS)
             .usage(vk::BufferUsageFlags::TRANSFER_DST)
             .sharing_mode(vk::SharingMode::EXCLUSIVE);
@@ -110,7 +111,7 @@ impl Vulkan {
             &device_memory_properties,
             vk::MemoryPropertyFlags::HOST_VISIBLE | vk::MemoryPropertyFlags::HOST_COHERENT,
         )
-        .ok_or("Unable to find suitable memory type for the buffer")?;
+        .expect("Unable to find suitable memory type for the buffer");
 
         let allocate_info = vk::MemoryAllocateInfo {
             allocation_size: buffer_memory_req.size,
@@ -123,7 +124,7 @@ impl Vulkan {
             device.bind_buffer_memory(buffer, buffer_memory, 0)?;
         }
 
-        let fence_create_info = vk::FenceCreateInfo::builder();
+        let fence_create_info = vk::FenceCreateInfo::default();
         let fence = unsafe { device.create_fence(&fence_create_info, None)? };
 
         Ok(Self {
@@ -175,12 +176,15 @@ impl Vulkan {
 
         let pixels = mip_width as usize * mip_height as usize;
         let rgbas = unsafe {
-            let buffer_pointer = self.device.map_memory(
-                self.buffer_memory,
-                0,
-                vk::WHOLE_SIZE,
-                vk::MemoryMapFlags::empty(),
-            )?;
+            let buffer_pointer = self
+                .device
+                .map_memory(
+                    self.buffer_memory,
+                    0,
+                    vk::WHOLE_SIZE,
+                    vk::MemoryMapFlags::empty(),
+                )
+                .expect("Failed to map memory");
             std::slice::from_raw_parts(buffer_pointer as *mut u8, pixels * 4)
         };
 
@@ -188,7 +192,9 @@ impl Vulkan {
 
         unsafe {
             self.device.unmap_memory(self.buffer_memory);
-            self.device.reset_fences(&[self.fence])?;
+            self.device
+                .reset_fences(&[self.fence])
+                .expect("Failed to reset fences");
             self.device.destroy_image(frame_image, None);
             self.device.free_memory(frame_image_memory, None);
         }
@@ -199,7 +205,7 @@ impl Vulkan {
     fn init_image(&self, frame: &Object) -> Result<(), Box<dyn Error>> {
         let (width, height, mip_levels) = image_dimensions(frame);
 
-        let image_create_info = vk::ImageCreateInfo::builder()
+        let image_create_info = vk::ImageCreateInfo::default()
             .image_type(vk::ImageType::TYPE_2D)
             .format(vk::Format::B8G8R8A8_UNORM)
             .extent(vk::Extent3D {
@@ -215,17 +221,27 @@ impl Vulkan {
             .usage(vk::ImageUsageFlags::TRANSFER_DST | vk::ImageUsageFlags::TRANSFER_SRC)
             .sharing_mode(vk::SharingMode::EXCLUSIVE);
 
-        let image = unsafe { self.device.create_image(&image_create_info, None)? };
+        let image = unsafe {
+            self.device
+                .create_image(&image_create_info, None)
+                .expect("Failed to create image")
+        };
         let image_memory_req = unsafe { self.device.get_image_memory_requirements(image) };
 
-        let image_allocate_info = vk::MemoryAllocateInfo::builder()
+        let image_allocate_info = vk::MemoryAllocateInfo::default()
             .allocation_size(image_memory_req.size)
             .memory_type_index(0);
 
-        let image_memory = unsafe { self.device.allocate_memory(&image_allocate_info, None)? };
+        let image_memory = unsafe {
+            self.device
+                .allocate_memory(&image_allocate_info, None)
+                .expect("Failed to allocate memory")
+        };
 
         unsafe {
-            self.device.bind_image_memory(image, image_memory, 0)?;
+            self.device
+                .bind_image_memory(image, image_memory, 0)
+                .expect("Failed to bind image memory");
         }
 
         self.image.borrow_mut().replace(image);
@@ -240,10 +256,10 @@ impl Vulkan {
         &self,
         frame: &Object,
     ) -> Result<(vk::Image, vk::DeviceMemory), Box<dyn Error>> {
-        let mut frame_image_memory_info = vk::ExternalMemoryImageCreateInfo::builder()
+        let mut frame_image_memory_info = vk::ExternalMemoryImageCreateInfo::default()
             .handle_types(vk::ExternalMemoryHandleTypeFlags::DMA_BUF_EXT);
 
-        let frame_image_create_info = vk::ImageCreateInfo::builder()
+        let frame_image_create_info = vk::ImageCreateInfo::default()
             .push_next(&mut frame_image_memory_info)
             .image_type(vk::ImageType::TYPE_2D)
             .format(vk::Format::R8G8B8A8_UNORM)
@@ -260,16 +276,19 @@ impl Vulkan {
             .usage(vk::ImageUsageFlags::TRANSFER_SRC)
             .sharing_mode(vk::SharingMode::EXCLUSIVE);
 
-        let frame_image = unsafe { self.device.create_image(&frame_image_create_info, None)? };
+        let frame_image = unsafe {
+            self.device
+                .create_image(&frame_image_create_info, None)
+                .expect("Failed to create image")
+        };
 
         let frame_image_memory_req_info =
-            vk::ImageMemoryRequirementsInfo2::builder().image(frame_image);
+            vk::ImageMemoryRequirementsInfo2::default().image(frame_image);
 
         // Prepare the structures to get memory requirements into, then get the requirements
         let mut frame_image_mem_dedicated_req = vk::MemoryDedicatedRequirements::default();
-        let mut frame_image_mem_req = vk::MemoryRequirements2::builder()
-            .push_next(&mut frame_image_mem_dedicated_req)
-            .build();
+        let mut frame_image_mem_req =
+            vk::MemoryRequirements2::default().push_next(&mut frame_image_mem_dedicated_req);
         unsafe {
             self.device.get_image_memory_requirements2(
                 &frame_image_memory_req_info,
@@ -287,14 +306,14 @@ impl Vulkan {
 
         // Construct the memory alloctation info according to the requirements
         // If the image needs dedicated memory, add MemoryDedicatedAllocateInfo to the info chain
-        let mut frame_import_memory_info = vk::ImportMemoryFdInfoKHR::builder()
+        let mut frame_import_memory_info = vk::ImportMemoryFdInfoKHR::default()
             .handle_type(vk::ExternalMemoryHandleTypeFlags::DMA_BUF_EXT)
             .fd(frame.fds[&0].as_raw_fd());
 
         let mut frame_image_memory_dedicated_info =
-            vk::MemoryDedicatedAllocateInfo::builder().image(frame_image);
+            vk::MemoryDedicatedAllocateInfo::default().image(frame_image);
 
-        let mut frame_image_allocate_info = vk::MemoryAllocateInfo::builder()
+        let mut frame_image_allocate_info = vk::MemoryAllocateInfo::default()
             .push_next(&mut frame_import_memory_info)
             .allocation_size(frame_image_mem_req.memory_requirements.size)
             .memory_type_index(memory_type_index);
@@ -307,12 +326,14 @@ impl Vulkan {
         // Allocate the memory and bind it to the image
         let frame_image_memory = unsafe {
             self.device
-                .allocate_memory(&frame_image_allocate_info, None)?
+                .allocate_memory(&frame_image_allocate_info, None)
+                .expect("Failed to allocate memory")
         };
 
         unsafe {
             self.device
-                .bind_image_memory(frame_image, frame_image_memory, 0)?;
+                .bind_image_memory(frame_image, frame_image_memory, 0)
+                .expect("Failed to bind image memory");
         }
 
         Ok((frame_image, frame_image_memory))
@@ -330,17 +351,16 @@ impl Vulkan {
         dst_access_mask: vk::AccessFlags,
         src_stage_mask: vk::PipelineStageFlags,
     ) {
-        let image_barrier = vk::ImageMemoryBarrier::builder()
+        let image_barrier = vk::ImageMemoryBarrier::default()
             .old_layout(old_layout)
             .new_layout(new_layout)
             .image(*image)
             .subresource_range(
-                vk::ImageSubresourceRange::builder()
+                vk::ImageSubresourceRange::default()
                     .aspect_mask(vk::ImageAspectFlags::COLOR)
                     .base_mip_level(base_mip_level)
                     .level_count(mip_levels)
-                    .layer_count(1)
-                    .build(),
+                    .layer_count(1),
             )
             .src_access_mask(src_access_mask)
             .dst_access_mask(dst_access_mask);
@@ -353,7 +373,7 @@ impl Vulkan {
                 vk::DependencyFlags::empty(),
                 &[],
                 &[],
-                &[image_barrier.build()],
+                &[image_barrier],
             );
         }
     }
@@ -370,7 +390,7 @@ impl Vulkan {
         dst_height: u32,
         dst_mip_level: u32,
     ) {
-        let blit_info = vk::ImageBlit::builder()
+        let blit_info = vk::ImageBlit::default()
             .src_offsets([
                 vk::Offset3D { x: 0, y: 0, z: 0 },
                 vk::Offset3D {
@@ -380,11 +400,10 @@ impl Vulkan {
                 },
             ])
             .src_subresource(
-                vk::ImageSubresourceLayers::builder()
+                vk::ImageSubresourceLayers::default()
                     .aspect_mask(vk::ImageAspectFlags::COLOR)
                     .mip_level(src_mip_level)
-                    .layer_count(1)
-                    .build(),
+                    .layer_count(1),
             )
             .dst_offsets([
                 vk::Offset3D { x: 0, y: 0, z: 0 },
@@ -395,11 +414,10 @@ impl Vulkan {
                 },
             ])
             .dst_subresource(
-                vk::ImageSubresourceLayers::builder()
+                vk::ImageSubresourceLayers::default()
                     .aspect_mask(vk::ImageAspectFlags::COLOR)
                     .mip_level(dst_mip_level)
-                    .layer_count(1)
-                    .build(),
+                    .layer_count(1),
             );
 
         unsafe {
@@ -409,7 +427,7 @@ impl Vulkan {
                 vk::ImageLayout::TRANSFER_SRC_OPTIMAL,
                 *dst_image,
                 vk::ImageLayout::TRANSFER_DST_OPTIMAL,
-                &[blit_info.build()],
+                &[blit_info],
                 vk::Filter::LINEAR,
             );
         }
@@ -502,13 +520,12 @@ impl Vulkan {
             vk::PipelineStageFlags::TRANSFER,
         );
 
-        let buffer_image_copy = vk::BufferImageCopy::builder()
+        let buffer_image_copy = vk::BufferImageCopy::default()
             .image_subresource(
-                vk::ImageSubresourceLayers::builder()
+                vk::ImageSubresourceLayers::default()
                     .aspect_mask(vk::ImageAspectFlags::COLOR)
                     .mip_level(mip_level)
-                    .layer_count(1)
-                    .build(),
+                    .layer_count(1),
             )
             .image_offset(vk::Offset3D { x: 0, y: 0, z: 0 })
             .image_extent(vk::Extent3D {
@@ -523,18 +540,19 @@ impl Vulkan {
                 *image,
                 vk::ImageLayout::TRANSFER_SRC_OPTIMAL,
                 self.buffer,
-                &[buffer_image_copy.build()],
+                &[buffer_image_copy],
             );
         }
     }
 
     fn begin_commands(&self) -> Result<(), Box<dyn Error>> {
-        let command_buffer_info = vk::CommandBufferBeginInfo::builder()
+        let command_buffer_info = vk::CommandBufferBeginInfo::default()
             .flags(vk::CommandBufferUsageFlags::ONE_TIME_SUBMIT);
 
         unsafe {
             self.device
-                .begin_command_buffer(self.command_buffers[0], &command_buffer_info)?;
+                .begin_command_buffer(self.command_buffers[0], &command_buffer_info)
+                .expect("Failed to begin command buffer");
         }
 
         Ok(())
@@ -542,16 +560,20 @@ impl Vulkan {
 
     fn submit_commands(&self) -> Result<(), Box<dyn Error>> {
         unsafe {
-            self.device.end_command_buffer(self.command_buffers[0])?;
+            self.device
+                .end_command_buffer(self.command_buffers[0])
+                .expect("Failed to end command buffer");
         }
 
-        let submit_info = vk::SubmitInfo::builder().command_buffers(&self.command_buffers);
+        let submit_info = vk::SubmitInfo::default().command_buffers(&self.command_buffers);
 
         unsafe {
             self.device
-                .queue_submit(self.queue, &[submit_info.build()], self.fence)?;
+                .queue_submit(self.queue, &[submit_info], self.fence)
+                .expect("Failed to submit queue");
             self.device
-                .wait_for_fences(&[self.fence], true, FENCES_TIMEOUT_NS)?;
+                .wait_for_fences(&[self.fence], true, FENCES_TIMEOUT_NS)
+                .expect("Failed to wait for fences");
         }
 
         Ok(())

fufexan avatar Aug 30 '24 11:08 fufexan

I'm sad I couldn't finish this in time, personally I'm not working on this PR simply because I no longer have hardware that is able to run vulkan and therefore wluma ☹️ As soon as I'm able to run wluma, this would be the first thing I tackle, unless someone manages to finish it before then.

max-baz avatar Aug 30 '24 11:08 max-baz

To be reopen later if needed

cyrinux avatar Oct 21 '24 14:10 cyrinux