Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update libs #86

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open

Conversation

cyrinux
Copy link
Sponsor Contributor

@cyrinux cyrinux commented Jul 30, 2023

inotify watches had to be update

@maximbaz maximbaz force-pushed the chore/update-libs branch 2 times, most recently from aa8f6fd to 959d843 Compare August 6, 2023 19:51
@fufexan
Copy link

fufexan commented Aug 30, 2024

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(())

@maximbaz
Copy link
Owner

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants